Wavelet denoise

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.

Features

  • 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.

Details

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.

Example

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.

Platforms

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.

License

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

AttachmentSize
wavelet-denoise-0.2-win.zip134.91 KB
wavelet-denoise-0.3.1.tar.gz26.65 KB
0
Average: 4.7 (17 votes)

Comments

How to guide for openSUSE?

Hello,

I am a linux novice and am unable to install wavelet denoise plugin on the openSUSE platform.

I have downloaded the tar.gz version of the plugin, and when I get the following when I run make:

In file included from plugin.c:16:0:
plugin.h:21:26: fatal error: libgimp/gimp.h: No such file or directory
compilation terminated.
make[1]: *** [plugin.o] Error 1
make[1]: Leaving directory `/home/pushanthu/Downloads/wavelet-denoise-0.3.1/src'
make: *** [src] Error 2

***********************************************************

I could not find libgimp on my machine. All I could find were a bunch of files with the following names and no reference to libgimp folder.
./usr/lib/libgimp-2.0.so.0
./usr/lib/libgimpwidgets-2.0.so.0.600.11
./usr/lib/libgimpwidgets-2.0.so.0
./usr/lib/libgimpui-2.0.so.0
./usr/lib/libgimpbase-2.0.so.0

I also saw that the plugin is available for ubuntu, archlinux etc under gimp-plugin-registry. However, none seems to be available for openSUSE. Has anyone successfully installed "wavelet denoise" on openSUSE? If so, can you please provide some guidelines on how to do the install?

Thanks,
sdravida

Re: How to guide for openSUSE?

Hi sdravida. Try installing a gimp-devel package if it exists. Good luck!

Thanks !

Marcor, your two plug-ins (Wavelet Denoise and Sharpen) are the most used by me during all my photo experience. I can't name more usefull plug-in than your two. Great, awesome job!

Thank you VERY much !

compilation with gimp-2.7

Hello

Is there a way to make the plugin install into directories other than default? I have gimp2.7 git compiled in /opt/gimp-2.7...

With respect,
Alexander Rabtchevich

Re: compilation with gimp-2.7

Maybe not automatically...

  • If you type 'which gimptool-2.0' does it give you the gimp-2.7 path? The Makefile is using gimptool to copy the binary. If you have another version of Gimp installed, it may interfere here. Setting the PATH variable or changing the Makefile may help then.
  • Copy the binary by hand into the directory /opt/gimp-2.7/... Run 'make install' anyway to install the translation files.

I'm not sure whether the plugin runs with gimp-2.7 at all.

Have fun trying and report your results here please!

gimp 2.7

After changing @gimptool-2.0 to actual gimptool path in Makefile user and global install sections installation passed. Making the same with Makefile from po directory made po files installed, but the displayed language is English.

Note: wavelet-decompose used deprecated procedure 'gimp-image-add-layer' instead of new 'gimp-image-insert-layer', which is said by gimp warning dialog.

Most recent for windows

Most recent for windows here

http://www.registry.gimp.org/node/24520

Note that are all installers...so you must click on the file to install

great plugin but

This is fantastic, thank you for sharing your work. It would be helpful (for a great many judging by the google searches I did) if your install file included details of the packages needed to install this plugin. On Fedora 12 I had to add the 'gettext' package and 'plugin development tools'. After that works as well, if not better than any other de-noiser I have used.

What to download?

Hi, do I download both versions or just the last one?

download gimp plugin

I don't know if anyone ever answered this or not. The .zip file is defiantly for the windoz version of gimp. I'm pretty sure the .tar.gz file is most likely for the linux version of gimp.

Really Great

Tried the plugin just now. The output is excellent!. Thank you

Wavelet denoise on Macports?

Is it possible to download Wavelet denoise via macports, so I can get automaticly updates when you are improving your plugin?

Wavelet denoise 0.3.1 release

Hi everyone Edit: Version 0.3.1 released. Changes - Added Estonian and Polish translations Version 0.3 released. Canges since beta2: - Dialog window now in landscape aspect. - Russian translation added. - Menu entry now translated. - make uninstall stuff now available. Additional changes since 0.2.1: - Noise profiling introduces. - Replacement of 'Detail' for 'Softness' slider. - CIELAB colour space added. - Enhanced reading-writing speed. - New build system (make && make install) - Translateable - Italian and German translations. Have fun! marcor

Noise pattern

It's possible to extract a noise pattern from images? i mean, i want noise instead of images

Noise pattern from image

The simplest is to copy the image to a new layer, de-noise that layer and then set the layer mode to difference. This way only the noise remains. Flatten the image and auto equalize. Enjoy

Wavelet Denoise for Mac Leopard

Hi, i would like to use the plugin. but trying to install causes this errors: make -C po msgfmt -c -v -o de.mo de.po 36 übersetzte Meldungen. msgfmt -c -v -o ru.mo ru.po 36 übersetzte Meldungen. msgfmt -c -v -o it.mo it.po 36 übersetzte Meldungen. msgfmt -c -v -o et.mo et.po 36 übersetzte Meldungen. msgfmt -c -v -o pl.mo pl.po 36 übersetzte Meldungen. make -C src make[1]: gimptool-2.0: Command not found cc -O3 -Wall -c -o plugin.o plugin.c In file included from plugin.c:16: plugin.h:21:26: error: libgimp/gimp.h: No such file or directory plugin.h:22:28: error: libgimp/gimpui.h: No such file or directory plugin.h:23:21: error: libintl.h: No such file or directory In file included from plugin.c:16: plugin.h:46: warning: type defaults to ‘int’ in declaration of ‘gchar’ plugin.h:46: error: syntax error before ‘*’ toke ...... plugin.c:40: error: syntax error before ‘{’ token make[1]: *** [plugin.o] Error 1 make: *** [src] Error 2 i think the problem is, there ist no gimptool-2.0 on my mac. therefore i can´t compile the plugin. has anyone a solution? i don´t know how to install this plugin on my mac.

Second

Yes, I would also like to compile this plugin on my Mac, and I also do not have gimptool installed nor can I install it. I'm using the Gimp precompiled binary, and I'm very very reluctant to switch to Fink or MacPorts (command-line compiling and installing can break your system if you do not EXACTLY know what you're doing - and I do NOT exactly know what I'm doing, and yes I DID already break my system ;-).
The post is already 2 years old, so hasn't there been anyone come up with a solution probably in the meantime? Or anyone kindly providing a compiled Mac version of this famous plugin? Please (beg, whine)?!

Best,

Kim

Mac version available!

Hi Kim and all Mac fans

I just found out that the wavelet plugins are available through 'Gimp on OS X' (http://gimp.lisanet.de/) where it is included in the their (binary) Gimp package! Have fun!

Sorry

I try to install on Ubuntu 8.10 x64, and I get this: utente@utente-desktop:~/Scrivania/wavelet-denoise-0.3.1$ make make -C po make[1]: Entering directory `/home/utente/Scrivania/wavelet-denoise-0.3.1/po' msgfmt -c -v -o de.mo de.po 36 messaggi tradotti. msgfmt -c -v -o ru.mo ru.po 36 messaggi tradotti. msgfmt -c -v -o it.mo it.po 36 messaggi tradotti. msgfmt -c -v -o et.mo et.po 36 messaggi tradotti. msgfmt -c -v -o pl.mo pl.po 36 messaggi tradotti. make[1]: Leaving directory `/home/utente/Scrivania/wavelet-denoise-0.3.1/po' make -C src make[1]: gimptool-2.0: Command not found make[1]: Entering directory `/home/utente/Scrivania/wavelet-denoise-0.3.1/src' cc -O3 -Wall -c -o plugin.o plugin.c In file included from plugin.c:16: plugin.h:21:26: error: libgimp/gimp.h: Nessun file o directory plugin.h:22:28: error: libgimp/gimpui.h: Nessun file o directory In file included from plugin.c:16: plugin.h:46: warning: type defaults to ‘int’ in declaration of ‘gchar’ plugin.h:46: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token plugin.h:51: error: expected ‘)’ before ‘*’ token plugin.h:52: error: expected ‘)’ before ‘*’ token plugin.h:53: error: expected ‘)’ before ‘*’ token plugin.h:54: error: expected ‘)’ before ‘*’ token plugin.h:55: error: expected ‘)’ before ‘*’ token plugin.h:56: error: expected ‘)’ before ‘*’ token plugin.h:57: error: expected ‘)’ before ‘*’ token plugin.h:58: error: expected ‘)’ before ‘*’ token plugin.h:59: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘user_interface’ plugin.h:60: error: expected ‘)’ before ‘*’ token plugin.h:61: error: expected ‘)’ before ‘*’ token plugin.h:62: error: expected ‘)’ before ‘*’ token plugin.h:73: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PLUG_IN_INFO’ plugin.h:81: error: expected specifier-qualifier-list before ‘guint’ plugin.h:98: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘channels’ plugin.h:100: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token plugin.c:18: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘PLUG_IN_INFO’ plugin.c:25: warning: excess elements in struct initializer plugin.c:25: warning: (near initialization for ‘settings’) plugin.c:26: warning: excess elements in struct initializer plugin.c:26: warning: (near initialization for ‘settings’) plugin.c:27: warning: excess elements in struct initializer plugin.c:27: warning: (near initialization for ‘settings’) plugin.c:28: error: ‘TRUE’ undeclared here (not in a function) plugin.c:28: warning: excess elements in struct initializer plugin.c:28: warning: (near initialization for ‘settings’) plugin.c:29: error: extra brace group at end of initializer plugin.c:29: error: (near initialization for ‘settings’) plugin.c:29: warning: excess elements in struct initializer plugin.c:29: warning: (near initialization for ‘settings’) plugin.c:30: warning: excess elements in struct initializer plugin.c:30: warning: (near initialization for ‘settings’) plugin.c:31: warning: excess elements in struct initializer plugin.c:31: warning: (near initialization for ‘settings’) plugin.c:39: warning: return type defaults to ‘int’ plugin.c: In function ‘MAIN’: plugin.c:40: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token plugin.c:69: warning: type defaults to ‘int’ in declaration of ‘gchar’ plugin.c:69: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token plugin.c:139: error: expected ‘{’ at end of input make[1]: *** [plugin.o] Error 1 make[1]: Leaving directory `/home/utente/Scrivania/wavelet-denoise-0.3.1/src' make: *** [src] Error 2 An help? Thank you!

Thank you!

Fixed!!! with: sudo apt-get install libgimp2.0-dev

This plug-in is licensed

This plug-in is licensed under GPLv2 and does not have the "or any later version" clause. This causes problems once GIMP switches to GPLv3+ and LGPLv3+.

The same applies to the code that has been taken from UFRaw. The UFRaw author has already been made aware of this problem,  you should update the copied code as soon as the license there is changed, too.

Perfect to reduce high ASA CCD Noise

This is really great. I tried many combinations of other filters but the effect of this filter is really professional. Smooth control over RGB threshold makes it great. Thanks mate for your nice job, this is really valuable plug-in for every one.

Really Amazing - Version 0.3 for windows?

This is just amazing. Version 0.2 works great, but I'd love to see a windows 0.3 build available made. I'd be happy to test on my machine (Win XP) and provide feedback Let me know! The GIMP community really appreciates your amazing work. Matt

Wavelet denoise 0.3 beta released!

Hello everybody I just released the 0.3-beta version of the wavelet denoise plugin. There are significant changes and it works better than ever. I'm not sure how the changes affect building on windows and that's why there is only the beta available now. Tell me what you think about it! If you speak another language than English and want the plugin translated, please do so and send me the .po file! I will include it! German is already available.

I hope that the

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

Not working in 2.4.2

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

Re: Not working in 2.4.2

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

Wavelet denoise update

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.

Use in script-fu

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!

wavelet-denoise: Use in script-fu

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

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

Batch mode

I second the request for some kind of scriptable interface for this plugin. That would be very useful for doing batch processing of lots of images. Another suggestion for handling lots of options is to simply use a configuration file.

Wavelet denoise error under GIMP 2.4.0 WinXP fixed with 2.4.6

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!)

Plug in caues error in Gimp

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 (2.10.6.0) and, C:\Program Files\GIMP-2.0\bin (2.10.14.0).

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

Wavelet denoise 0.2: Windows binary released

Thanks to JamesH a binary for Windows is now available. Please comment if you are experiencing problems with it.

Incomplete install instructions

Please add in the install instructions information on how to install "gimptool" because many users probably try to use synaptic, but they will notfind gimptool there. --- One needs to install libgimp2.0-dev (plus several dozens more libraries via dependencies). EDIT: Installation worked flawless; and I am impressed with the tool. Thanks for providing it!

Re: Incomplete install instructions

Thank you for pointing this out. I was not aware that there are distributions where gimptool-2.0 did not come with the GIMP package. Using google I found that there is a package "gimp-plugin-registry" for Debian and one for Ubuntu with the same name, that includes my plugin (however, I believe it's still the beta version). To get gimptool-2.0 going to compile it yourself, please refer to the GIMP manuals.

Wavelet denoise v0.2 released!

Finally the new version of wavelet denoise has been released!

There is one or two important difference between the final release and the beta version: the plugin now operates on linear image data (as opposed to gamma corrected data) and the processing speed has been increased.

Here's the complete list of changes from version 0.1.1:

  • Operates on linear data now (not gamma corrected).
  • Increased processing speed.
  • Interface reorganized.
  • Added 'Detail' slider which affects the thresholds dependency on frequency.
  • Added tool-tips in the user interface.
  • Colour previev of single channels added.
  • Button 'Reset temporarily' added for preview.
  • Reset buttons added.
  • The size of the dialog is saved now.
  • Changed default thresholds.
  • Progress bar bugfix done.
  • Minor fixes.

Enjoy!

Wavelet denoise v0.2 released!

I can test on xp the binary provided by jamesH , i suppose are still for the beta version and not updated to this release.. Correct? i'm happy to help with some testing in windows if needed and i may check also "if the license, install, readme files are included in the archive." and if not fix that details in a new package I'm not good in building in windows but once the bigger part of the job is done and the binary is ready... ...well , ...then add a folder with "the license, how install, read me files" and even a link to the source code and zip all for me is not a problem , i will happy to do at soon i get a reply

sharpening vs noise reduction

Hi, Could you please tell me what is the preferred combination and why? (1) sharpen + denoise (2) denoise + sharpen Thanks

I had build the windows

I had build the windows binary and mail to marco on Aug 1 2008

wawelet denoise

Thank JamesH to find the time to build Marcor you may post a link to download (even by PM if should be added yet license and source code link ) PS i just finish testing the previous win version seems working fine but i must find more meaningful sample, i do not trace much "noisy photos" adapt for a test have you some for a confront?

Wavelet denoise: 0.2-beta released

The beta version of the plugin wavelet denoise 0.2 has been released. There are many changes - suggestions are welcome.

Changes:

  • Interface reorganized.
  • Added 'Detail' slider which affects the thresholds dependency on frequency.
  • Added tool-tips in the user interface.
  • Colour preview of single channels added.
  • Button 'Reset temporarily' added for preview.
  • Reset buttons added.
  • The size of the dialog is saved now.
  • Changed default thresholds.
  • Minor fixes.

Any chance of adding this to ufraw?

I think it would be a great addition.

Any chance of adding this to ufraw?

You surely know that there is denoising in UFRaw. That's where I took the algorithm for this denoising plugin from. In UFRaw the denoising is done on linear data before bayer interpolation and therefore colour model conversions cannot be made. It could be done after the interpolation though.

However, I share the belief that software is not perfect when there is nothing left to add but when there is nothing left to leave away. I talked to the author of UFRaw and I think he will not change it. (I did not request it, you know.) Note that there is no 100% magnification of the preview image available in UFRaw at the moment and that would be necessary for decent denoising.

What's wrong with using a plugin for the job? Let's not make UFRaw complicated!

Re: Any chance of adding this to ufraw?

Hi, I would love to use the plugin, but I'm a windows person. Any tips for using cygwin to compile it? In linear space it might be possible to do color model conversions that would be appropriate for denoising. What about converting to XYZ? I see a simple matrix in Dcraw for doing that. In fact I think this is the best place to do the denoising. Jon

Install error's

Hi all: I want to write my case: For installation in Ubuntu-8.04-AMD64, libgimp2.0-dev 2.4.5-1 installed, I wrote gimptool-2.0 --install-admin wavelet-denoise.c. Notice that the file's name is wavelet-denoise.c not wavelet_denoise.c

wawelet denoise : Any hope for windows binary ?

Any hope for windows binary ? will be needed to port it in windows or is just to compile? ("just" is a euphemism... is far to be simple for me, but will be hopeless if some of dependency have not a equivalent in win).

windows binary

Re: wavelet denoise windows binary

Thank you, JamesH, for providing this! I could not test it however as I have no Windows system with GIMP available. I will add it to the file list when somebody has checked it and if the license, install, readme files are included in the archive.

There will soon be another release with new features and I hope you will repeat this trick.

Syndicate content