This package contains a MATLAB implementation of our NLMeans denoising algorithm from:

Import remarks

The main author is Bart Goossens, imec-IPI-Ghent University, Belgium.

The code for our paper was originally written in C++. Because certain parts of the code are difficult to share (certain external libraries), the entire code was ported to Matlab. As a result the ported code runs much much ... much slower. The code is distributed for educational purposes - hence the goal is readability and clarity rather than speed.

If you're experiencing unexpected results using this software, please check that you got the parameters "sigma" and "h" set right. When comparing PSNR results with the results reported in our paper, please make sure that you choose the same parameter values as in our paper (Section 6). If you're getting significantly different or very bad results, then it's most likely that I was too enthusiastic during code porting (which was in fact a rewrite), or it is due to differences in the Matlab version (the code was developed using MatlabR2007b - note that the original paper was published in 2008). Let me know in that case.

If you are able to use some parts of this code for your own project(s), I would appreciate if you could let me know. If you use this code for your own publications, please properly cite the above reference.

Download (.ZIP) [239 Kb] Paper (.PDF) [2.5 Mb] Back


The package contains the following files:

File name Description
barbarabig.tif Barbara test image
boundextension.m Helper function for image boundary extension (written by Prof. J. Portilla)
psdnoise.m Helper function for generating stationary correlated Gaussian noise with different presets.
nlmeanslnla2008goossens.m Main script

Please mail comments/suggestions/bugs to my email address (see about page).