1. What is Lab ?
It is a colour appearance model that aims at predicting what a pixel will look like (for a standard/average human being) with the same chromaticity (= colour, roughly) at a different brightness, or with the same brightness at a different chromaticity.
2. Why is editing in Lab great ?
Because you can really tweak brightness without changing color, or color without changing brightness. At least, this is the promise.
3. Why is editing in Lab not great ?
Lab is not HDR-capable, and even in SDR, its prediction accuracy is rather poor. Well, it comes from 1976.
4. What is a tone curve ?
A tone curve is a graphical interface. It is only a kind GUI widget. A tone curve is not an image processing algorithm. The tone curve is one of many GUI ways to define a 1D → 1D pixel intensity mapping, that will be turned into a 1D or a 3×1D LookUp Table (LUT), and what the software actually does to the pixels is mapping them through that LUT. It’s really just sending pixels intensity to a new address based on a table defined graphically in GUI by users.
But a tonecurve is implicitely display-referred. The right/top edge of the graph are always 100% of the range (camera range or display range, see filmic : improve graph view for user education by aurelienpierre · Pull Request #5996 · darktable-org/darktable · GitHub). How do you deal with scene-referred (aka unbounded values adjusted such that middle-grey = 18% but white = +infinity) ? Generally, you can’t.
This is exactly the same as a levels module, a contrast module, or a lift-gamma-gain/slope-offset-power adjustments. They all define a 1D->1D mapping, but with a predefined shape of curve. However, tone curves are much liked because they are really flexible, so you can mimic any brightness/contrast mapping (provided it’s done in a 0-100% bounded, display-referred, range) with a tone curve, if you know what you are doing. It is just cumbersome.
5. Synthesis : how do you map values in scene-referred ?
So you can’t use Lab because it doesn’t work in HDR. You can’t use a tone curve either because of its GUI design implications and resulting uselessness above 100% (along with lack of accurate control around 0%, sort of overcome with log scaling in UI).
That’s why I did the tone equalizer.
In “masking” tab, if you set “preserve details” to “none”, it falls-back to a simple tone curve (feature-wise), but actually performs a simple exposure compensation (algo-wise), garanteed to preserve color (as much as we can), that you can parametrically tweak depending on input luminance estimator. It scales to whatever dynamic range you get in input though the “mask exposure compensation” and “mask contrast compensation”, and you can choose between several luminance estimators (use the mask display to preview).
You can also use it after the input color profile to get color-adapted RGB at input.