First, I open a “new topic” concerning “Locallab”, because “Local lab build” is 4 years old…and topics is very big. Of course you can always use this old topic.
New operator "Tone mapping"
Actually, in RawTherapee there are 2 operators “Tone mapping”
- the older named “Tone mapping” uses “Mantiuk” algorithm + “Cholesky” factorisation, it was initialized a few years ago by Ben S.
- the most recent “Dynamic Range Compression” uses “Fattal” algorithm + “Poisson PDE”, it was initialized recently by Alberto Griggio
You can find these 2 modules, In Rawtherappe “main” and also in “Local adjustements”
In “Local adjustements” some change and addition were realized in addition of course to local specificities (Scope, transitions, masks…)
- “Normalize luminance” for “Tone mapping”, if you enabled this choice “mean” and “variance” for initial and transformed image are identicals
- For “Dynamic Range compression”, I used the algorithm in ART, and add someting near from “Normalize luminance”, I call it “offset” (and in “Expert mode” you have also “sigma”)
I introduced another model - different from those we found in "Luminance HDR" - a total wavelet new operator for “tone mapping” and “contrast attenuator” (for example Applying retinex decomposition, see @afre ) - or how to do without “Dodge and burn”
This module I called “Levels Dynamic Wavelet Range (un)Compression” - you can find it in “Local adjustements” - “Local contrast & Wavelet pyramid”
How it works:
- I had the idea to compress or expand each level “L” (Lab) of decomposition
- each level has 3 components “DIR” - horizontal, vertical, diagonal
- I apply an “simple” algorithm “exponential type” with negative coefficient for compression, and positive for “attenuator” for the signal (+ and -), for each level and each “DIR” and also for “Residual image”
- “threshold” try to take into account noise.
- you can use up to 10 levels that is to say since 2x2 pixels (level 0), to 1024x1024 (level 9), and you can select if necessary a range of levels (ex 3 to 7)
- you can, with the horizontal curve, compress (negative values under the horizontal separator “Tone mapping”) or uncompress (positives values above - “Contrast attenuator”) each level differently
- this “wavelet tone mapping” is different from “Mantiuk or Fattal”, in principle it acts more on the contrast levels and less on the solid areas
- one of the problem is when you “reconstruct” wavelet, if there are big differences between levels, that leeds to artifacts. By using “Soft radius” in “Clarity & sharp mask - Blend & Soft Images”, this probem seems solved, with very small values of soft radius".To note, “Merge luma” in this chapter allows to reduce or increase the effects.
- this “wavelet” module consumes a lot of memory - about double that allocated for creating a simple wavelet, but in general no problem because generaly RT-Spot are smaller than plein image
- I left in “expert” mode the algorithm with “Laplacian”, but it needs more time and more ressources.
Of course, you can use “mask” and "Local adjustements tools" as “scope and transition” which allow differential selection (for sky, skin, buildings,…).
It would be good to improve the readability of the GUI horizontal curves for these usages (with levels decomposition).
@Hombre will you be able to examine the possibilities of :
- draw an horizontal fixed line (with no action) in such a way that the user easily sees the positive and negative parts
- draw at the bottom of the curve, a graduation in abscissa with the 10 levels (0 to 9) - inactive - just draw.