You are here

Wavelet denoise

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 2
Rate this item!

The wavelet denoise plugin is a tool to reduce noise in each channel of an image separately. The default colour space to do denoising is YCbCr which has the advantage that chroma noise can be reduced without affecting image details. Denoising in CIELAB (L*a*b*) or RGB is available as an option. The user interface allows colour mode and preview channel selection. The denoising threshold can be set for each colour channel independently.


  • User interface with preview is available.
  • Amount of denoising for each channel is selectable.
  • Possibility to denoise YCbCr or CIELAB channels instead of RGB exists.
  • Noise profiling is done.
  • Conversion from RGB to YCbCr and RGB to CIELAB is lossless.
  • Preview is capable of displaying one single channel only if desired.
  • Processing time is reasonably fast (around 20 seconds for a 10 Megapixel image) and independent from the amount of denoising applied.
  • User interface in multiple languages is available.


The wavelet denoise plugin for The GIMP reduces noise in an image using the algorithm copied and altered from the UFRaw program [Udi Fuchs] (which inherited the algorithm from dcraw [Dave Coffin]). Instead of denoising all RGB channels at once, the plugin implementation allows to denoise the RGB channels in dividually and - even more useful - to denoise the YCbCr or CIELAB channels individually. The colour model conversions are nearly lossless as the internal calculations are done in floating point numbers and rounding errors are avoided. Because the algorithm implements a wavelet filtering it runs quite fast.


This is part of a picture taken with the Nikon D80 DSLR camera at ISO 1600 in
RAW format. The face is lit by two candles and a colour temperature setting of
2500 K was used. The file was opened with the UFRaw plugin.

The goal is not to reduce all noise. The unpleasant part is the chroma noise
which appears only when shooting the camera in RAW mode at a high ISO speed. As
you can see the colour (chroma) noise is almost completely gone in the second picture and the luminance noise is slightly reduced. If you look closely at the face you will notice that the image details have not been altered much, the sharpness is almost the same.

Note that this is just the result of a uniform application of the filter on the unprocessed image. Masking the filter effect with a selection is possible which could improve the result even more.


This plug-in runs on multiple platforms:

  • Linux

    The plugin can easily be compiled from sources but be aware that some Linux distributions provide packages:

    • Ubuntu: Install the package 'gimp-plugin-registry'.
    • ArchLinux: Install the package 'gimp-plugin-wavelet-denoise'.
    • Debian: Install the package 'gimp-plugin-registry'.
  • Windows

    There exists a pre compiled binary for the plugin here. (Thank you Francois C.!)

  • Mac OS X

    'Gimp on OS X' provides a complete Gimp distribution which includes the plugin. You can download it here. (Thanks, Simone!)

What's new in version 0.3

The most significant changes are the introduction of noise profiling and internationalization.

  • Noise profiling is done.
  • Internationalization is possible now, several translations exist.
  • New slider "Softness" (which replaces the old "Detail" slider, but is completely different from it) to control the thresholding mechanism.
  • Introduction of the CIELAB (L*a*b*) colour space.
  • Reorganisation of source files and new installation routine via Makefiles.

What's new in version 0.2

There are several changes that have been made to improve the plugin.

  • The denoising is done on linear data now. The sRGB gamma of approximately 2.
    2 is compensated.
  • The interface has been reorganized
  • A 'Detail' slider has been added which affects the thresholds dependency on
    noise frequency.
  • Tool-tips have been added.
  • The single channel preview can now be displayed in colour.
  • There is a 'Reset' button which resets the currently selected channel tempor
    arily (during the time the button is pressed).
  • Normal reset buttons have been added.
  • The size of the dialog is saved now after it is closed.
  • The default thresholds are all zero now.
  • The progress bar was fixed and tweaked.

Apart from that minor other changes have been made.


The plugin is distributed under the General Public License (GPL).

GIMP Version: 
Code License: 


I hope that the modifications will be sufficiently user-friendly and helpful . . .

I can't seem to install this in 2.4.2. Your plugin is amazing enough that I'm willing to change versions if it will work, but if there's something else that I (or you) can do fix it, it would be greatly appreciated!!! Thank you! EDIT- Oh, and by the way, I use Windows...I don't know what version other than that it's not Vista

Thanks for the compliments! See the comments further down. They may help you.

Hello GIMP users! I have added another wavelet plugin, a sharpening filter, and changed the entry in the registry from wavelet denoise to wavelet box. The denoise filter is only slightly changed (threshold now in range 0-10). Enjoy! Edit: I reconsidered and decided to make the two plugins available separately. That way maintaining will be simpler and the user gets only what he wants. The denoise filter v0.2.1 is the same as the one previously contained in the box.

Marcor, thanks for this great plug-in! I was wondering if you could do something to make it usable in gimp scripts: it would just require to add a way of passing parameters in non-interactive mode. At the moment, if I understood well, you can just call the plugin "(plug-in-wavelet-denoise run-mode image drawable)", but you cannot provide any parameter such as the amount of denoise to run on each channel. Thanks again!

I'll see what I can do... Edit: I added that in wavelet-sharpen as the user interface is quite simple there. In wavelet-denoise there are so many options, depending on the number of channels in the image (r,g,b,alpha -> 1-4) that i don't know how to add this in a consistent way. If you have any suggestions then please feel free to tell them to me. However, try to run the plugin with different settings first and see how complicated it is: grayscale, rgb, grayscale + alpha, rga + alpha. Anyway, you need to *see* what happens with the images, how do you want to know the thresholds in advance? How do you want to run the plugin in a script?

I will start by explaining you why I would like to have a script-fu interface available. I have a (bash) script that does automatic postprocessing of raw files. It converts the images by using ufraw-batch, send them to the GIMP, and apply some further processing before saving them to jpg. I studied the script to obtain good results in standard situations. About noise reduction: the script applies it in ufraw with values depending on the ISO of the images. Of course, in some cases, I modify images by hand... But this is another story:-) Another use I foresee for a script-fu interface is the following: imagine you have a batch of images, all shot in the same conditions. The noise reduction to apply will most probably be the same for all the batch. Thus, you can tune it on some sample images, and apply the same values to all of them by means of a script-fu. Last but not least, all the other noise reduction plug-ins that I have seen so far have a script-fu interface:-) About how to implement it: one way that may be convenient is the following: (YCbCr/RGB, Y/R_amount, Y/R_detail, Cb/G_amount, Cb/G_detail, Cr/B_amount, Cr/B_detail) Where YCbCr/RGB is a flag that is used to select the color model. All the others are the values applied to the different channels. The values for the alpha channel can be optionally added at the end of the list. Thanks again for looking at it and for the very nice plugin (I also tested the sharpen plugin and I find it wonderful!!)! Regards, Alberto

Is there any possibility to improve the script-fu interface? For a simple change it would be: wavelet-denoise -Y -Th 1,7 -So 0,1.

BryanSmith, I had the same error message with GIMP 2.4.0 under WinXP, but when I upgraded to GIMP 2.4.6 the error message went away. (I also found that UFRaw failed with 2.4.6, but that's another problem for another thread!)

I copied the file wavelet-denoise.exe to the C:\Program Files\GIMP-2.0\lib\gimp\2.0\plug-ins directory. When I started GIMP I got the following error: "The procedure entry point gtk_widget_set_tooltip_text could not be located in the dynamic link library libgtk-win32-2.0-0.dll".

I am running windows XP home.

A search on Google suggested the problem may be due to multiple copies of libgtk-win32-2.0-0.dll. A search found copies of libgtk-win32-2.0-0.dll in the following directories: C:\Program Files\Common Files\GTK\2.0\bin ( and, C:\Program Files\GIMP-2.0\bin (

I sent the entire C:\Program Files\GIMP-2.0 directory to the recycle bin and restarted windows. However I still get the error.


Subscribe to Comments for "Wavelet denoise"