If your images are corrupted by a strong dominant Gaussian noise you can try this simple filter. It is based on thresholding in the DCT domain and is usually vastly superior to typical Gaussian filtering in term of detail preservation / noise reduction trade-off. The filter unfortunately introduces some block like artifacts that can be mitigated by averaging out overlaping shifted windows (as implemented in the Matlab version) and performing maximum intensity projection after the filtering: As such the filter is way more adapted to process 3D stacks that you plan to maximum intensity project than to process single z slice images.