Hi all,
Since we are discussing on noise reduction, let me put a more formal example to compare all the noise reduction algorithms that we have implemented in PixInsight. This time I'm going to use a well-known difficult problem: the double gradient synthetic image.
The double gradient consists of two concentric squares filled with opposite linear gradients. It can be generated very easily in PixInsight with the following PixelMath expression, executed globally to generate a new image, or locally on an image of the desired dimensions:
iif( X() < 0.25 || X() > 0.75 || Y() < 0.25 || Y() > 0.75, X(), 1 - 2*(X() - 0.25) )
When synthetic noise is added to this image, the result is an ill-posed problem for noise reduction, and is particularly well suited to show the weaknesses---and comparatively, the strong points---of different noise reduction algorithms. Here is the double gradient with a 25% of uniform noise added with the NoiseGenerator tool in PixInsight. This is the initial image that I have used in this test:
I have tried all the noise reduction tools available on the PixInsight platform, trying to do my best by fine tuning parameters to achieve the best possible result in each case. Here are the denoised images, enlarged 2:1 without interpolation:
TGVDenoise
ACDNR
MultiscaleMedianTransform
GREYCstoration
ATrousWaveletTransform
And here is my interpretation of these results:
* TGVDenoise is the absolute winner. It has been able to recover the original gradients almost perfectly with minimal generation of artifacts. Its superior result is clear and admits no discussion.
* ACDNR has been a nice surprise for me. I designed and implemented the ACDNR algorithm back in 2005. I know its weak points very well (it has many), but honestly, this result has been kind like a good old friend shouting "hey, I'm still here!" in my face
* The multiscale median transform (MMT) is a powerful tool for denoising and ringing-free sharpening of linear and nonlinear images, as we have demonstrated many times (see for example
here and
here), but it has two main limitations: Our implementation of MMT is not particularly good at reproducing sharp corners because it uses circular structuring elements to preserve isotropy, and median filters are not very good at reproducing smooth gradients. The next generation of MMT that we'll implement during the 1.8 cycle combines the à trous wavelet transform for smooth regions and the MMT for significant structures, taking the best from each algorithm, so it will pass this test much better.
* The GREYCstoration algorithm yields a decent result, but it generates significant artifacts around the edges of the inner square (also at the right border of the image), and does not remove the noise on smooth regions as efficiently as the preceding tools. I spent a long time trying to improve this result, but this is the best one I was able to achieve. Perhaps somebody with more practice (I admit I don't use this tool very often) would be able to get something better.
* The à trous (with holes) wavelet transform, also known as
starlet transform recently, is a fundamental processing workhorse of great efficiency where isotropy and smoothness are two characteristic properties of the data, as happens with most deep-sky astronomical images. The inability of ATWT to isolate strong small-scale structures---something that MMT can do much better---becomes evident in the double gradient problem: When enough wavelet coefficients are removed to yield a smooth result, the edges of the inner square cannot be preserved because they penetrate the whole transform as a gun shot.
I have uploaded
a PixInsight project that you can use to reproduce these results. If you manage to improve what I have done with some of the algorithms tested here, please let me know and post your parameters here.