5
$\begingroup$

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

Original Input image

Median Blur Output Output after applying medain blur

Neat Image Output Neat Image Output

$\endgroup$
3
  • $\begingroup$ 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? $\endgroup$
    – Emre
    Commented Apr 21, 2015 at 19:59
  • $\begingroup$ @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..? $\endgroup$ Commented Apr 22, 2015 at 4:48
  • $\begingroup$ Neat Image looks like doing really great stuff. Does it estimate noise profile? $\endgroup$
    – David
    Commented Oct 18, 2019 at 22:26

5 Answers 5

2
$\begingroup$

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

$\endgroup$
1
  • $\begingroup$ 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. $\endgroup$ Commented Apr 27, 2015 at 4:37
1
$\begingroup$

Since you're interested in implementing algorithms yourself, I would suggest it as a very flexible algorithm which can be adapted to a very wide variety of situations - Adaptive Manifolds for Real Time High Dimensional Filtering.

The adaptability and flexibility of it is very appealing.

$\endgroup$
0
$\begingroup$

Well of course the canned filters are rudimentary, and there is a vast literature of more more advanced solutions out there. The only problem is that most of them exist only on paper; you have to implement them yourself. And since you're prepared to do that, then I suggest studying the literature to see what the latest methods are. In my archive I found this survey from 2005:

I frequently hear about non-local means methods mentioned in a favorable light, and it is supported by OpenCV, so I would suggest starting there.

$\endgroup$
2
  • $\begingroup$ Thank you for the suggestion. I already tried Non local Means algorithm, the noise gets removed but the edges are getting breaked. And, I will look into the paper. $\endgroup$ Commented Apr 22, 2015 at 10:59
  • $\begingroup$ And any suggestion in frequency domain is also welcome. $\endgroup$ Commented Apr 22, 2015 at 11:01
0
$\begingroup$

Have you tried bilateral filtering? It is also in OpenCV.

$\endgroup$
1
  • $\begingroup$ I have tried almost all smoothing operations available in OpenCV. $\endgroup$ Commented Apr 23, 2015 at 4:38
0
$\begingroup$

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.

Have a look at Fast Anisotropic Curvature Preserving Smoothing.

$\endgroup$
3
  • $\begingroup$ I have tried out Anisotropic Curvature in Matlab that preserves the edges but does not remove the noise properly. $\endgroup$ Commented Apr 22, 2015 at 13:42
  • $\begingroup$ 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. $\endgroup$
    – Royi
    Commented Jun 24, 2019 at 18:05
  • $\begingroup$ @OpenCVUser, Could you please review my answer? If it works for you, please mark it. Otherwise, Let me know what's missing. $\endgroup$
    – Royi
    Commented Jun 30, 2022 at 5:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.