Local Lab build

When it is ready. No use in pushing out a feature if it isn’t ready.

1 Like

I’m not the only decision maker, certainly there are still improvements to be made including the GUI, but no more than everything in rawtherapee.
I think the current version is stable and nothing would forbid merge locallab in dev soon, because you’re right “local adjustements” is in a branch and therefore not much seen and tested


1 Like

I have found that the local adjustments to be stable and have work fine for a long time. Like you say, the only drawback is that the GUI could be improved, but you are addressing this…

Bonjour Jacques, I am using local lab version 5.6-855 on Mac. Before I was getting updated versions from the community built software thread which now is obsolete, Is there any place where I can download and test new builds for Mac?. And thank you and all the developers for the efforts on improving RT.

I don’t know who, or where you can download a MAC version of “newlocallab” branch :cry:


Some short news

1- the last commits (since 5 days) were with a huge bug from my stupidity

  • scope deltaE was “out”
  • transition mask was “out”
    Now all works as as it is planned :slight_smile:

2-I think I have “finished” the simplification for GUI - which essentially touches the normal mode

  • of course - see my comments above - complexity is something relative - and the division between “normal” and “confirmed” can evolve according to the demands


Thanks Jacques, from 1489-g76d8ba607 is it fixed then?


No, this version is completely buggied !!! (if you use mask…)

Fixed version since : 05769e6


I had just downloaded it, because in windows it usually takes a little longer to update than in linux.

Thanks for the warning. I will wait for a new version.
A greeting.

I have update documentation, especially to explain how to switch from one mode to another : recommendations, including the use of "Processing Profiles : neutral, to reinitialize GUI.

You will also find a table summarizing the differences between : “normal”, “Confirmed”, “Expert”


Looks good and GUI easier to navigate with simplified options. My vote would be to include the colour correction grid in the ‘normal’ settings as it is useful and easy for somebody inexperienced to use. At present, it is only visible under ‘confirmed’ and then there are lots of extra sliders everywhere.

OK no problem, I will chnage soon :slight_smile:

Done, very easy to do :slight_smile:

Wow thanks. It was just my opinion but thank you!

Oh, in fact - its always the same problem !

What is complex ?
And what number of procedures does one find normal (sliders, checkbox, method…) ?


Since my last intervention I realized various improvements, optimizations :

  • clean unused code, for example Retinex
  • optimization of “Transformed” code - the one that uses “scope” and others terminal functions, by using now only one process (except some incompatible cases)
  • improvment to some “cached” function as “chrominance” in Color and Light - where linear response slider is replace by a “cached” curve, etc.
  • various minor changes

For FFTW - Fast Fourier transformed - instead of the function “Gaussian Blur”, various improvment were realized (debugged, speed on…) - not implemented in “normal” mode
Non you can use “radius” up to values of 1000, I limited those of Gaussian Blur to 100 - which is already a lot.
You can find in 4 cases

  • Smooth Blur and Noise
  • Local contrast
  • Blur Mask (Color and light)
  • Retinex

I just added, thanks to Alberto, “Encoding Log” for “Local adjustements” (“normal”, “Confirmed”, “Expert”)
This module allows to work with very dynamic range images (under exposed,…) or with under-exposed areas while the rest of the image is normal.

Compared to the module in ART, you have more than 3 features:

  • of course, work on a local area
  • use “scope” for deltaE, to limit the action
  • calculate values of “Dynamic range” - “Dark Ev” and “White Ev”, and “Source Gray point”, on a part of the image - disabled by default, these values are calculated upstream of the process, on a copy of the image just after the colorimetric conversion (choice for Working Profile)


I have update all documentation in Rawpedia (allways in french), and specially for “Enoding log”


Easy exercise with masks, with Complexity Local Adjustements: Normal.

What we are going to do is intensify the green color only of the grass.

In Local tab:

  1. Local Adjustments: ON
  2. Add rectangle
  3. Upload Transition value: 100
  4. Color & Light: ON
  5. Go to the Color correction grid: move white point (upper left corner) and black point to the other side (lower right corner)
  6. Upload Strength to 100 and change in Color correction grid from Color Toning to Direct.

It should look like this:

  1. 8-Mask and modifications: Combo-box LCH & Structure: The first: Show modifications whitout mask

  2. Adjust the color by lowering Scope so that it does not enter the edge of the pool:

  3. If an area is missing, we make a duplicate of the rectangle and put the spot on the area we want to act.

  4. We found incorrect areas:

  5. We apply an ellipse with Spot method: Excluding Spot, Scope 100 and adjusting Transition Value

And we already have the final result:

A greeting.


Thank you @arturoisilvia for this work.
It shows the possibilities of the shape / color detection algorithm.

Just a semantic remark : in this demonstration no mask is used to modify / change the selection, only scope function.
But, the menu where appears “Show changes without mask” is in "Mask and modifications

Since this morning I change 2 features :

  • allows negatives values to “Dehaze” to add “haze” (thanks to Alberto)
  • in module “Smooth Blur Noise Grain”, in mode “normal” the slider “radius” now use “Fast Fourier Transform” when radius is greater than 30, and up to 1000 (whithout enabled a checkbox)


1 Like

I improved “merge file” significantly, certainly it is not Photoshop or Gimp, nevertheless it works (to really improve it would need a complete redesign of the rawtherapeee Pipeline)

These features are only available in mode “confirmed” or “expert”

As an example here is a way to create a double gradient blur, only with the function “merge file”, without using masks.

The first RT-spot, is the one inside (the smaller), I create a RT-spot with an “Inverse Gaussian Blur”
The second RT-Spot, is outside the first, between the limits ot the first and the limits of Image

Inside the first RT-spot : no blur
Between the first RT-psot and the second: variable Blur - set with “merge file”
Beyond the second, maximum blur

Settings are explain in Rawpedia (in french)

And the pp3
amsterdam_moving_boat_1.pef.pp3 (33.0 KB)

I tried to simplify the graphical interface, especially through the use of expanders.
But, I ran into the malfunction of expanders inside “locallab.cc” : concretely the expanders worked, but they did not keep in mind the user’s settings…they always remained “expanded” (never collapsed) after closing / opening RT even if the user collapsed them.

After finding why, I implanted a series of additional expander in:

  • Color and Light : 3 (expert), 2 (normal)
  • Exposure : 2
  • ShadowsHighlight : 2 (expert), 1 (normal)
  • Vibrance : 1
  • Retinex : 1 (expert)

Now when you open a topic, in any case :

  • the interface is clearer, with fewer apparent labels.
  • the difference between “normal” and “expert” (in terms of GUI) is reduced. But, of course, if you open the “expanders”, there are differences !

commit : 534cfc1

Reminder: to keep a type of adjustment of the expanders, go to “Preferences” / “General” / “Save tools collapsed/expanded state on exit”

  • enabled the buttoncheck

  • Exit Rawtherapee

  • Re open Rawtherapee and “unchecked” the buttoncheck

I also solved, several bugs ot bad behavior due to changing mode (normal <=> expert)


I just add to “encoding log” a slider “Logarithm base” : in the original algorithm , base = 2, now you can change between 1.3 and 8. (default 2) : this differentiates the action between low light and high light.

/// December 13th 2019
I just put online, a commit. It concerns the concept of “pyramid”
Several years ago Emil Martinec introduced (moreover before Rawtherapee) the concept of “pyramids” with several versions : “Contrast By details levels”, then wavelet with Ilia Popov (about 2011)
In the principle, they are similar, but wavelet is more sophisticated.

Then Ingo, and I, (2014) improve “wavelet” to get to the current version (best is in branch wavelenh)

But, in appearance, it’s complex…

The version that I propose, is both simplified and more complete than the “main” module , to see :slight_smile:

But back to the notion of pyramid, there are 3 types :

  • Gaussian pyramid : localize in space, not localize in frequency
  • Laplacian pyramid (with Fourier): not localized in space, localized in frequency
  • Wavelet pyramid (here Debeauchies): localized in space, localized in frequency

The most flexible, is wavelet, but it is the most complex - both to understand and to program.

I built the system around the module “Local contrast” in “Local adjustements”
Regardless of what follows, you benefit from the features of “Local adjustements”, scope (deltaE), transition, and of course multiple RT-spot

Before the actual commit, there was already the concept of pyramid, but limited :

  • choice of “range level” (from 0 to 10) : 0 -> 2x2 pixels, 10 -> 1024x1024 pixels
  • curve (in function of luminance) to change contrast - with “range level” you activate the pyramid
  • Residual Image contrast, and residual image chroma, is in function of “range levels”, the biggest unchange “base” of the pyramid
  • Clarity and sharp Mask : allows by “difference” to change luminance and chrominance - to get the functions “clarity” or “sharp”

Now, I add to the system “pyramid”:

  • Blur residual image with a checkbox “luminance only” - of course it’s sensitive to “range levels”
  • Blur levels (only luminance), with a slider and a curve : the slider sets the desired maximum of blur whatever the level, the curve : abscissa levels, ordonate intensity allows to change blur in function of levels.

I put in an “expander” , I call “Wavelet pyramid” only a part which seems to me the most complex : Sharp mask and clarity, Blur residual, Blur levels
Of course, if need I can add others functionnalities (chroma,…), but we will increase the complexity

I hope, not too much bug :slight_smile:

Commit since : 290fa79 - december 13, 2019



news December 16th

I completed “wavelet pyramid” with other tools.
Now I think there is pretty much everything you need to use the concept of “pyramid”

We find on the web various articles on this concept, I give two, but it is not limiting
or a file pdf pyrmamidgausswavelet.pdf (1.6 MB)

Curiously more space is given to “Laplacians” rather than “Wavelets”, because it seems that wavelets are “too” complex to implement.
The wavelet tool we have with Rawtherapee is powerful, but with the “local” mode, for quite some time I thought that we could do with “wavelet” something both richer than the “main” tool and less complex.

For that I replaced wherever possible, the sliders by curves, and I took into account the new tools present in Rawtherapee.

Of course a tool is never actually finished, it is always possible to add an additional filter, or other method.
But, except bug or express request or retouching of detail (GUI, labels, etc.) I would not bring any more major innovations.

What are the functionalities :

  • as I said before, I started from a procedure used in “RT main wavelet” : “Final Touchup” - “Final Local contrast”
  • I add a simply level selector (a double slider), which allows you to select the ranges of use of wavelets levels.
  • simple work on residual image : contrast and saturation
  • Scope (as others modules “Local adjustements”), which allows a discrimination of the action according to the difference in deltaE

After that, I create an “Expander window” for the rest of “Pyramid”
This expander is the same, in the 3 modes “normal”, “confirmed”, “expert”…perhaps it may be necessary to differentiate.

There are 4 levels of functionality, and of course the groupings are arbitrary, another developer could have assembled differently

  • Clarity & sharp mask - Blend Images : with 3 sliders (no curves here) :
    ** merge luma,
    ** merge chroma,
    **soft radius
    and a checkbox “Merge only with original image”, which allows to take into account in the “blend” of images only the original
    Which mainly allows to differentiate the action between the high, low and medium lights to favor the latter

  • Contrast by levels : with a curve and one slider “sigma”, it replace almost the entire contrast module of “RT main wavelet”. Basically it does pretty much the same thing as CBDL, but with more flexibility and possibilities
    ** it allows to modify contrast where you want, with the extent you want
    ** associated or not with the first curve “Level local contrast”, is allows to compress highlight or lifted shadows, or at inverse deep shadows…Its allows also to attenuate micro defects, for example those of the skin, or delete them !
    ** etc.

  • Levels dynamic range compression : for example to make the skies look dramatic, or to give a “tone mapping” look
    ** here we use a curve (abscissa = numero of level decomposition, ordonate “amount”, and 3 sliders: “detail”, “anchor” and “Amount residual image”
    ** in this module we act on each level of decomposition (according to the chosen range), in the 3 directions “horizontal”, “vertical”, “diagonal” (today there are no differences between the three…)
    ** the user can practically achieve what he wants - of course within the limits of the tool, its design and the possibilities of wavelets
    ** it is the most complex module to use and probably the least intuitive, because what happens when you compress a range of wavelet levels ?
    ** it also consumes the most time - of course it should be possible to speed up the process significantly ?

  • Blur levels : with a curve, 2 sliders and a checkbox
    ** obviously as the title says this tool allows to blur with the desired intensity, the level or the range of level desired
    ** same type of curve (Amount / levels)

I can be objected that 2 traditional wavelet tools are missing :

  • compress datas : wavelet is commonly used to compress data when switching to JPG …I will not reinvent the wheel, already in RT
  • denoise (with Shrink method) : you have many tools with wavelet in RT (denoise, Wavelets levels, and of course “Denoise” in “Local adjustements”

jacques 16 octobre 2019

And in advance merry christmas :slight_smile: