Implementation of non-local tools Noise reduction algorithm for image processing

I am working on implementing a noise reduction algorithm without local environments in C ++. There are articles in this algorithm ( such as this document ), but they are also not very clear.

I know it uses a weighted average, but I don’t know what is used here in the study window and how it relates to the comparison window.

As a new user, StackOverflow does not allow you to upload images. but you can find the formula in the nl tools section above.

+6
source share
3 answers

From the document to which you refer, when determining the value of the result for a given pixel p, all other pixels in the image will be weighted and summed in accordance with the similarity of their neighborhoods and the neighborhood of pixel p.

But it is computationally expensive. Thus, authors limit the number of pixels that will affect the weighted sum; it should be what you call a search box. This search box is a 21x21 area centered on pixel p. The neighborhoods to be compared are 7x7 in size (section 5).

I could make a prototype quickly with Mathematica, and I confirm that it becomes very expensive when the size of the search box increases. I expect the same behavior when you implement in C ++.

+4
source

There is GPL'd C ++ code and a short record of the algorithm by the original authors here: http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/

+1
source

Source: https://habr.com/ru/post/891713/


All Articles