New Sigmoid Scene to Display mapping

Oh wow, it did spur quite a debate…

Maybe some more background about me and what my idea was behind this will help.

I see myself as a pretty advanced darktable user with a strong background in physics and mathematics. My photography interest is mostly in outdoor sports, dance, insects, and photogrammetry. My daytime work is about both signal processing and user interaction. My experience is that things generally become much much easier when things are kept linear and on a correct orthogonal basis.

I think that THE best thing about darktable is its modules! I will probably not be a basic adjustments user as that kind of kills the strength of darktable. That being said. My view of a good module is the following, assuming that math, transforms and other processing is done correctly:

  • Single responsibility
  • Settings are of reasonable dimensionality
  • Settings are as orthogonal as possible

Single responsibility is pretty given, you do not want your denoise module to have a global setting for image saturation, it should only suppress noise.
Anyone can learn what a one-dimensional function does, turning up the heat on the stove makes the water boil faster. Two is still ok, for example learning the relationship between throttle and gear when driving a manual transmission car. Three is harder, four is much harder, etc.
I think high-dimensional settings are pretty ok though as long as they fulfill the last point, orthogonality. The problem with poor orthogonality is probably best known in image editing when it comes to HSV adjustment directly on sRGB data. A change in hue will also change the perceived brightness and or saturation.

So to me, something similar to the sigmoid module does make a lot of sense. It has one task, compress scene-referred intensity to a displayable range. It does so in, what I hope, is a similar way as the well-established cinema-standard ACES does. Its setting is one dimensional and thus fast and easy to work with.
Color-preservation ala filmic would be easy to add. But I would love a reference to some non-darktable source about that for better understanding. I still haven’t found it used anywhere else despite looking for it. Hue and especially saturation will change when doing this but doesn’t it have to if we want the image to fit inside of a viewable range? The sigmoid could of course be made more complex by for example adding user-defined definitions for black level, grey point, and white level. It is after all just an algebraic function that can be modified with at least three degrees of freedom.

darktable offers multiple methods for adjusting saturation, why wouldn’t this be the case for the scene to display transform?

I feel like I also need to reiterate that my initial intention for this topic. Introducing myself as a possible new contributor to darktable. Please do keep that in mind and I will happily read any resources that you link me to!

14 Likes