Multiplicative noise (also known as speckle noise) models are central to the study of coherent imaging systems, such as synthetic aperture radar and sonar, and ultrasound and laser imaging. These models introduce two additional layers of difficulties with respect to the standard Gaussian additive noise scenario:
the noise is multiplied to (rather than added to) the original image;
Rayleigh and Gamma noise are commonly used densities.
These two features of multiplicative noise models preclude the direct application of most state-of-the-art algorithms, which are designed for solving unconstrained optimization problems where the objective has two terms: a quadratic data term (log-likelihood), reflecting the additive and Gaussian nature of the noise, plus a convex (possibly nonsmooth) regularizer (e.g., a total variation or wavelet-based regularizer/prior).
2. Problem Description
Multiplicative noise (also known as speckle noise) models are central to the study
of coherent imaging systems, such as synthetic aperture radar and sonar, and
ultrasound and laser imaging. These models introduce two additional layers of
difficulties with respect to the standard Gaussian additive noise scenario:
the noise is multiplied to (rather than added to) the original image;
Rayleigh and Gamma noise are commonly used densities.
These two features of multiplicative noise models preclude the direct application
of most state-of-the-art algorithms, which are designed for solving unconstrained
optimization problems where the objective has two terms: a quadratic data term
(log-likelihood), reflecting the additive and Gaussian nature of the noise, plus a
convex (possibly nonsmooth) regularizer (e.g., a total variation or wavelet-based
regularizer/prior).
3. Approach
We can convert multiplicative noise into additive noise by using the log transform
of the image.
But doing so both the distribution of noise as well as the statistical properties of
image change. However, the local properties of the image stay relatively same.
Hence, by extracting local matching patches (in statistical sense) and
subsequently doing filtering on them keeping the changed noise distribution in
mind, we can obtain interesting results.
BM3D is one of the best algorithms to do this job.
After filtering we can use exponential transform to get back the final filtered
image.
4. BM3D Algorithm
For using the existing BM3D algorithm to denoise multiplicative noise, we first
convert it into additive noise using log transform. Then we apply the BM3D
algorithm. It has the following steps:
• Block matching
• Transforming the domain (Discrete Cosine Transform & Hadamard Transform)
• Transformed domain processing (collaborative filtering)
• Hard Thresholding
• Inverse Transform (bringing back to special domain)
Next, we aggregate the denoised blocks to reconstruct the final image.
5. [1] The first set of figures show the steps involved in BM3D algorithm.
[2] The second set of images show how collaborative filtering is done.
6. Modification
We’ve optimized the algorithm to obtain better results in terms of SSIM and PSNR
As wiener filter works better when the noise is gaussian, we have used gaussian
prior to approximate the gamma distribution (speckle noise)
We’ve tried various post-processing techniques to further improve the output of
the image
Based on the statistical nature of the image’s power spectral density after log
transform, we have tuned the hyperparameters (i.e. estimated noise psd for
BM3D) for best results
11. Conclusion
Python’s built-in BM3D model retrieves low-frequency structures of the image
when the multiplicative noise is gaussian, but it fails to remove the speckle noise
(gamma distributed).
Our custom BM3D model outperforms the python 3 library BM3D module in terms of
image reconstruction from multiplicative noise (both gaussian & gamma
distribution)
Gamma transform in post-processing phase greatly improves the lightning and
contrast, hence increasing the SSIM value.
One of the shortcomings of our custom BM3D filter is that it is not able to give
expected results for the images which are very bright in nature, and images having
too many details (i.e. high frequency features). This is one area where there is
scope of improvement.
12. Bibliography & Resources
[1], [2]Kostadin Dabov, Alessandro Foi, Vladimir Katkovnik, and Karen Egiazarian,
Senior Member, IEEE. Image denoising by sparse 3D transform-domain collaborative
ltering. IEEE TRANSACTIONS ON IMAGE PROCESSING, VOL. 16, NO. 8, AUGUST 2007.
Marc Lebrun1 1CMLA, ENS Cachan, France. An Analysis and Implementation of the
BM3D Image Denoising Method. Image Processing On Line on 2012–08–08.
Jos´e M. Bioucas-Dias, Member, IEEE, M´ario A. T. Figueiredo, Fellow, IEEE.
Multiplicative Noise Removal Using Variable Splitting and Constrained Optimization.
IEEE TRANSACTIONS ON IMAGE PROCESSING, 2010
bm3d · PyPI. Python wrapper for BM3D denoising - from Tampere with love.
https://pypi.org/project/bm3d
(Ryan) Ryanshuai. (2021). BM3D_py [9c964f6]. GitHub.
https://github.com/Ryanshuai/BM3D_py