# Noise Removal from an Image Using OpenCV (Comparison to Neat Image)

I tried removing noise from the image shown below using Median Blur in OpenCV. But i'm not able to remove the colour noise completely as it is done in Neat Image. Any suggestions.?

1. Original Input Image

Median Blur Output

Neat Image Output

• You'll find many cutting-edge denoising algorithms on github and academic web sites. What's your goal; why not use NeatImage since you have it? – Emre Apr 21 '15 at 19:59
• @Emre: I like to implement an algorithm for low light noise reduction rather than using neat image every time. I have tried anisotropic diffusion filter, bilateral filter also to remove noise but i dont achieve the result as that of neat image. Any other suggestions..? – OpenCV User Apr 22 '15 at 4:48
• Neat Image looks like doing really great stuff. Does it estimate noise profile? – David Oct 18 at 22:26

NeatImage probably uses Wavelets based Noise Reduction.
You can look for methods based on that.

Today you need methods which are "Edge Aware", namely they smooth yet keep edges in tact.

• I have tried out Anisotropic Curvature in Matlab that preserves the edges but does not remove the noise properly. – OpenCV User Apr 22 '15 at 13:42
• The one above is much more advanced and works better. Pay attention that Neat Image do 2 things which are crucial for good results: Multi Scale Analysis and Noise Estimation. – Royi Jun 24 at 18:05

I've had pretty good luck with using OpenCV's built-in fastNlMeansDenoisingColored.

• Yeah, OpenCV's fastNlMeansDenoisingColored function removes the noise completely but it does not preserve the edges very well in my case. Used default values for the parameters of the function. – OpenCV User Apr 27 '15 at 4:37

Since you're interested in implementing algorithms yourself, I would suggest this as a very flexible algorithm which can be adapted to a very wide variety of situations: