multi-pass profiled denoise for small sensors in scene-referred workflow

I would like to come up with a reasonable denoising scheme for a 1/2.3" sensor camera that struggles a bit above (effective) ISO 800.

I have been experimenting with profiled denoise (no profile exists in Darktable for this camera), and found some suggestions for multiple instances of it, combining wavelets and non-local means with various blend modes.

What’s the motivation for 3 or more passes of various methods? What should be the order? What are the recommended blend modes for scene-referred workflows?

Concrete settings for various passes that people find useful would be welcome, I could use them as a starting point.

The suggestion post you are refering to is too old. Denoise profiled had many changes in 2019 and 2020 :slight_smile:
You can take a look at my tutorials on youtube if you want to see how you can use it.
If you want to use several instances, you can, even without using blend modes (apart from lowering opacity, blend modes are usually unneeded for denoising now that wavelets support correcting luminance and color noise separately). You can set the wavelets to denoise only color noise, and a non local means instance (before or after) to cope withe the remaining noise.
Could you post an example raw file so that we can experiment on it?
Also, the use of the module is way easier once a camera is supported, you can see how to create a noise profile for your camera here: How to create camera noise profiles for darktable


@Tamas_Papp Also check out the modules astrophotography and surface blur. I find really nice results with astrophotography module…

1 Like

If you are using Linux, also check this out Exporting/importing photos in full 32-bit representation (to train a neural network for image denoising)

1 Like

Thanks for the suggestions. I attach an image at iso 400, suggestions on how to reduce noise would be welcome.

20211017_0036.RW2 (23.1 MB)

I also tried generating the raw profiles, but somehow the process does not complete, this is what I get:

$ ~/src/darktable/tools/noise/darktable-gen-noiseprofile -d $(pwd)   
===> Check for required tools
--> Check for images handling tools availability
--> Check for images export tools availability
--> Check for profiling tools availability
--> Check for tethering tools availability
--> Check for pdf tools availability

===> Check profiling directory

===> List profiling input RAW images
--> Found ISO 80 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040016.RW2
--> Found ISO 100 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040017.RW2
--> Found ISO 125 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040018.RW2
--> Found ISO 160 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040019.RW2
--> Found ISO 200 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040020.RW2
--> Found ISO 250 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040021.RW2
--> Found ISO 320 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040022.RW2
--> Found ISO 400 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040024.RW2
--> Found ISO 500 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040025.RW2
--> Found ISO 640 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040026.RW2
--> Found ISO 800 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040028.RW2
--> Found ISO 1000 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040029.RW2
--> Found ISO 1250 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040030.RW2
--> Found ISO 1600 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040031.RW2
--> Found ISO 2000 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040032.RW2
--> Found ISO 2500 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040034.RW2
--> Found ISO 3200 image: /home/tamas/Pictures/TZ90-noise-profiling/P1040035.RW2

The script will use existing input RAW images for the profiling. No more
shot will be taken.

===> Checking profiling RAW images correctness + Jpeg export
--> ISO 80:

and then no output.

If anyone more experienced with doing this would help out, then I can transfer the files (388M).

The surface blur and denoise (profiled) modules both seem to do a reasonable job to me

Yes, I find the profiled denoise fine too, I am curious about the concrete settings you used.

I used surface blur with its default settings but reduced the radius to 4. I have my own preset for denoise (profiled) in 3.6.1 which works fine, settings as follows (note that I have raised the U0V0 curve):


Pixel-peeping is a bit pointless here (as nobody will ever view the image at such a zoom level) so a small amount of remaining noise is fine.

1 Like

Thanks! An UI question: how do you move the whole curve up?

Scroll your mouse down to increase the size of the circle surrounding your cursor. The larger the circle the more nodes you affect when you drag the curve.

1 Like

Upload the profiling samples on Google Drive or Dropblox and I will see if I can generate a profile for your camera.