New Sigmoid Scene to Display mapping

The “recent” modules, sigmoid and filmic, achieve something beyond simply transforming from scene to display referred. Once well understood, they encourage me to get out there and take photos, with the knowledge that I have a fairer opportunity of coming back to the computer, with much more control than was possible with the base curve.

I am uncomfortable with comparing sigmoid and filmic, but its difficult to describe one without referring to the other, like if everything were blue, it would be difficult to describe. White only makes sense if there is something else to compare it with.

Because these two modules have different controls, its also impossible to actually compare them, cos if you had all the time in the world, maybe you could come up with settings that would make an image almost indistinguishable from the other. So any statements of a trend, are based on how each module “pushes” me to use them, and make adjustments with them, and the result thereof. Your mileage may vary, from mine. These opinions are not based on the default settings, but on how I have tended to make changes from the defaults.

From recent images, my opinions, from trends that have developed in my use of them are :

  1. sigmoid tends to deliver images which pushes aspects of the image more into the extremes - dark and bright, leaving less information in the mid-range. So you get more contrast broadly speaking.

  2. sigmoid also tends to deliver images where there is less separation between colours, pushing shades of yellow and orange nearer to each other, and in greens you get less of a separation between the various greens. It is the same with other colours, but in the examples I have posted here, the predominant colours are the yellows and greens.

If there was one wish for sigmoid, it would be one more control (ideally three or four), so one could control the contrast globally, with another set of three controls to manage this contrast with more control, in the shadows, midtones and highlights. Maybe we are now stepping on the toes of other modules in dt. But I did check and to the best of my knowledge there is no other module which gives you control over contrast in shadows, midtones and highlights distinctly. I make the layman’s assumption, as I am only an end user in this case, not a physics professional, that the chroma observation, which I mentioned in 2 above, will also be adjusted by these controls, so you can have more or less separation of colours, globally or in shadows, midtones, and highlights when the luma contrast is adjusted.

Then there will be introduced another challenge, adding controls to adjust the crossover between the shadows and midtones, and between midtones and highlights.

Then one more wish, 3 controls more controls to adjust the luma (darker or brighter) in the shadows, midtones and highlights. Note, I have not asked for a global control of luma, as this is already included in the exposure module, and ideally should not be duplicated, elsewhere.

To the casual observer, unless you had the images side-by-side, you may not be able to tell any difference. Broadly speaking this gives the current sigmoid images a bolder, more vivid look, more binary, monochromatic, which lends itself well to certain kinds of images, where the colours look more like the result of reducing luminance via the “color balance rgb” module. Greens are darker, yellows are darker. Somewhat like the effect of having used the local contrast module.

Sigmoid–

Filmic–

I thought it good to express this via curves, cos some of this could be simulated via curves also.

If you had two fixed points for the transition between shadows and mids, and between mid tones and highlights, its possible to then use three other points on the curve to modify the dynamic range of each of the three regions. I’ve used curves only to hopefully make it easier for you to understand what I had written earlier. I do not have the mathematics skills to fully describe the additional controls which you may wish to consider. Curves may make it easier to convey what I mean.

Curve example. compressing dynamic range in each region.
sigmoid3

Curve example, lifting the shadows only. all other regions have no change.
sigmoid4

Curve example lifting only the mid-tones.
sigmoid5

Of course in an ideal implementation these mid points will not remain on the linear line, but will have some “latitude” to move up or down, with changes made in each region, leading to two other possible controls. So that’s 8 controls in total described below.

This introduces the potential for what I call a super highlights region a 4th. Typically the brightest whites or light/bright colours

  1. to set the transition point between shadows and mid tones.
  2. To set the transition point between mid-tones and highlights.
  3. To set the transition point between highlights and super highlights.
  4. Adjust gradient up or down, in shadows (i.e lift shadows, or crush blacks more)
  5. Adjust gradient up or down in midtones ( less contrast - brighter, or more contrast - )
  6. Adjust gradient up or down in highlights.
  7. Adjust gradient up or down in superhighlights up or down.
  8. Adjust gradient globally, to make it more or less contrasty.
  9. Adjust latitude of transition points, i.e how far up or down they are allowed to deviate from the set position, when local adjustments of gradient in the 4 regions are modified.

I can imaging this sound really like a lot. But I have come to accept - this is the mindset of darktable and the darktable developers - more control not less. So rather than me try to simplify things, why not fully explore it to create something that is quite flexible, even though novices may find it difficult to comprehend, at first.

I thought it good to re-express some of my earlier comments, via curves, cos some of this could be manually achieved via curves also.

Assume there was no change in exposure, If you had two fixed points on your sigmoid curve, representing the transition points between shadows and mids, and between mid tones and highlights, its possible to then use three other points on the curve to modify the dynamic range of each of the three regions. I’ve used curves only to hopefully make it easier for you to understand what I had written earlier. I do not have the mathematics skills to fully describe the additional controls which you may wish to consider. Curves may make it easier to convey what I mean.

Curve example. compressing dynamic range in each region.
sigmoid3

Curve example, lifting the shadows only. all other regions have no change.
sigmoid4

Curve example lifting only the mid-tones.
sigmoid5

Of course in an ideal implementation these mid points will not remain on the linear line, but will have some “latitude” to move up or down, with changes made in each region, leading to two other possible controls.

This introduces the potential for what I call a super highlights region a 4th. Typically the brightest whites or light/bright colours.

Which leads to a smorgasbord wish list of additional controls.

  1. to set the transition point between shadows and mid tones.
  2. To set the transition point between mid-tones and highlights.
  3. To set the transition point between highlights and super highlights.
  4. Adjust gradient up or down, in shadows (i.e lift shadows, or crush blacks more)
  5. Adjust gradient up or down in midtones ( less contrast - brighter, or more contrast - )
  6. Adjust gradient up or down in highlights.
  7. Adjust gradient up or down in superhighlights up or down.
  8. Adjust gradient globally, to make it more or less contrasty.
  9. Adjust longitude of transition points, i.e how far up or down they are allowed to deviate from the set position, when local adjustments of gradient in the 4 regions are modified.
  10. Now I am becoming Oliver twist - lets add a crossover variable for the shadows to mid tone transition, to define how smooth or abrupt this transition is. (really this is just a parameter that describes the smoothness of the curve transition, so for example changes in the shadows may affect the mid-tones to a more or less degree depending on the value of this parameter.
  11. Similar to 10, but for transition between mid-tones and highlights
  12. Similar to 10, but for transition between highlights and superhighlights.

On second thoughts 9 may be a way of implementing 10, 11 and 12 i.e similar idea.

I can imagine this sounds like a lot. But I have come to accept - this is the mindset of darktable and the darktable developers - more control not less. So rather than me try to simplify things, why not fully explore it to create something that is quite flexible, even though novices may find it difficult to comprehend, at first.

Whatever the failings of my approach, I am not a photo or optics expert, whenever I struggle with achieving the desired contrast in a specific aspect of the image, I just use curves. Am not asking that you implement a curve module, but you may wish to add a similar display, so it simulates some of what is taking place under the hood. kinda like how filmic creates a display(but I must be frank, I never bother to look at that display, cos its quite involved), but simpler.

Aren’t you reinventing the tone equaliser?

2 Likes

Yes he is, or suggesting something similar to the parametric curve available in Lightroom and similarly in RawTherapee

1 Like

Not exactly, most tone tools allow you to move parts of the histogram up and down, but the idea here is rather to spread or contract parts of the tonal range, to add contrast in a tonal range. You can do that with curves but it’s very finicky because you don’t have individual controls for the slope and the offset of the points.

I was thinking of trying to do a prototype, it would look a bit like the current parametric curve but with another parametrisation and double the amount of sliders (one for offset, one for slope).

I would certainly hope not.

I would have loved to use the tone eq for what I have described, but I find it an excellent tool for more granular changes, and at the same time not granular enough, for certain levels of change. See below

Please as I keep noting, I am not an optics or physics expert, just an end user, which hopefully also counts, as a member of the ecosystem.

Sigmoid, filmic, base curve or any similar tools, all attempt to define in various ways, the curvature of the transform.

If we look at this issue as the size of a brush, one would have different sizes of brushes for painting.

  1. Global - changes like in exposure module, where I would expect a simple multiplier is used mathematically when you change exposure, so all values in the entire image are adjusted. Broad strokes. or rather very broad strokes. Many of the global gradient parameters are already defined in sigmoid, addressing the two ends of the spectrum black and white, and some control of what happens in the middle, which is great. Then I saw the new color balance module, and had an aha moment, cos this is the kind of thing I had been thinking of, somewhat, but in my case, I’ve typically used curves, to adjust brightness, and gradient, in each region, manually, in the absence of other suitable modules.

  2. Regional - Next level would be the 4 regions, I described (or 3 for those who prefer), the superhighlight region is my own creative largesse. Shadows, Mid tones, Highlights, Superhighlights. The color balance rgb module, hints at using these regions to adjust the brightness (i.e the luminosity) in each of the regions, but its primary purpose is colour and it does not yet have anything for controlling the gradient within each region. My proposal for sigmoid, fundamentally speaks only to gradient, i.e contrast, either globally or regionally.

  3. Granularly - Like Tone EQ. It is a great module, but for broader changes, the crossover points between the regions are a bit “sticky”, and its not easy to pick the transition points, you want, exactly. The best you can do it pick the nearest region. So its close enough but not close enough. Using it to achieve what I had described needs compromises. Its also somewhat impossible like with curves, to avoid longitudinal movement of the transition points, i.e if I boost brightness in mid-tones, but I do not want any change in shadows, its hard if not impossible to achieve in Tone EQ. Tone EQ is a wonderful tool, but a bit too granular, for what I had described. As an aside, not wishing to derail this thread, but a good place to mention it here, I would wish for someday, a Tone EQ that has options for 16 levels, like the Ansel Adams thing. And of course to still have the option to only use 8 regions as we have today. I do not thing Sigmoid should be as granular as Tone-EQ, in its adjustment of gradient, cos that would be a bit too much, and be like a plane that is difficult to fly - way too delicate controls, and too many of them.

  4. Super granular - the most flexible tool we have now is the rgb curve where you can do whatever you like with gradients, but the flexibility comes at a price, not a very efficient tool - I have memories of spending days hand-creating my own curves with base curve, when that was all we had, back in the day. Filmic and Sigmoid, do a much more efficient job than anything one could create manually in rgb curve.

So if sigmoid could provide the regional gradient control, similar to what I have described, in addition to the global gradient control which it already provides, that would be christmas come early.

I get the feeling that we’re drifting from the aims listed here:

2 Likes

Thank you.

May I respectfully and cautiously extend the proposal to add.

Note, I do not know the intrinsics of scene referred and display referred, and how these are implemented, so I may be speaking utter nonsense, because I am ignorant of the implementation.

But thinking with an open mind, assuming it is possible.

Could any modules such as Sigmoid, which may implement such regional contrast adjustments controls, also have the possibility of turning off their global transformation

Why?

Today we have different modules, for adjusting aspects of luminosity, globally and all the way down to very granular detail, manually with curves. So you pick and choose what suits your intention best.

With the scene to display transform, should it not also be possible to have multiple modules perform aspects of this transform, so choose each for what you prefer.

e.g.

  1. Module 1 - Sigmoid - for Regional contrast.
  2. Module 2 - Filmic - for Global transform

So you can pick and choose a transform path that has the features of each which you like best for the image in question.

Options to achieve this.

  1. If the global and regional changes are implemented in the same module, this could have the option to turn off or on, either of these changes.

  2. A module like the current Sigmoid may have a companion module which addresses only regional aspects, and you use the companion module. Reminds me of rockets with primary and secondary stages. No need to have everything in one module.

So if I wanted to test regional gradient adjustments, independently of global transforms, I would have two sigmoid instances, and turn on only global transforms in one, and only regional transforms in the other.

There are lots of details I have left out, otherwise this becomes exhaustively long, such as in what order these would be sequenced, in the workflow, in dt. But these are implementation details. Best to partition requirements from design and implementation. I’ll stick to requirements, and let others worry about the best way to design and implement.

In simple terms, it would be great to be able to also turn on and off regional gradient adjustments, per region, or turn off all regional gradient adjustments., as an independent set of changes from the global scene to display transform.

Using rgb curves to achieve this not efficient - or needs multiple instances, and you cannot synchonize the cross over points between regions, across multiple instances of curves - not elegant. Best achieved in sigmoid or filmic.

1 Like

Thanks for your efforts!

Could you share the raw image you used as an example as well as maybe one more example with raw included? Helps a lot with my understanding to open your image with your edits.

When comparing the sigmoid and filmic, remember this: filmic preserve color = rgb ratio option in sigmoid. Filmic preserve no = crosstalk option.

The sigmoid module should be able to produce low contrast images as well but I can see how it lures you into high contrast as it is so easy to just push it a bit more.

Please find attached, with the xmp’s used for the images posted earlier.

For now, kindly park(suspend) any consideration of the “regional gradient” posts, cos the functionality I was considering, may have already been implemented in the color balance rgb module, using the luminosity slider for each region. It’s current implementation may not be as fine grained as described in my wish list for sigmoid, cos at this time, there is no specific control over the amount of crossover from shadows to mid-tones and mid-tones. I.e if I turn down luminance in the shadows, it still affects the mid-tones and highlights a bit more than I would have hoped for. It might be more profitable if I fed any suggested changes to the team responsible, as the module is 80% of what I had in mind as an enhancement for sigmoid. It was a “nice” idea, but I would not wish to suggest any duplication of features across dt modules - not efficient use of minds.

Nevertheless, being able to control the global contrast in sigmoid, is definitely a highly and most relevant sought after feature, or missing item of knowledge (if this is already attainable in the current version of sigmoid).

Raw Image
DSC02045.ARW (16.0 MB)

Cropped + Filmic
DSC02045_01.ARW.xmp (50.3 KB)

Cropped+Sigmoid
DSC02045_02.ARW.xmp (51.6 KB)

For whatever its worth, the out-of-camera jpg, is also here.

1 Like

If there was not enough control in the masking tab of the rgb color balance module I think you should start a new thread and get/provide feedback tips. I have not played with it that much but it seems highly controllable to me. Perhaps your use case will provide a source of discussion and indeed reveal if there is a deficiency or use case not being met by the current capabilities…

EDIT or you could take this approach and make presets with luminosity mask using the parametric masking in your module and create presets for the tonal ranges. Then every time you want to hit one of them you could invoke the preset for that range Luminosity Masks in darktable | darktable

You can setup as many levels as you want …this classic article does it in GIMP and creates three levels for dark, mid, and highlights GIMP - Luminosity Masks

@jandren,

I was doing some further testing/review/use in practice of sigmoid over the last day or so, and have a few more observations. I am following the “protocols” on this forum, so the details of each topic are “hidden”. Each forum has its own “culture”.

1. The Darkness. (not a horror movie!)

The impression I had formed and discussed earlier, about the tendency to “darkness”, which led me to try to find some way of resolving this.

If you turn on the clipping indicator (ideally set to clipping preview mode = Full Gamut), the images with this darkness, are those where settings in sigmoid have caused the dark regions to dip below the black point. So even aspects of the image, which are not 100% black still have some of the darkness applied.

All attempts to use other tools to resolve this (the new colorbalance rgb, rgb curves, etc) met with mixed success. Improved but not resolved.

When the clipping indicator hinted at what the cause of the issue may be, next step I took was to use the black point correction slider in exposure module, set to a negative value, which brings the black point back to where it should be and there are no more warnings in the clip indicator. But this black point adjustment is a broad one affecting more of the image than desired. so the entire image goes a bit dull. Not the most ideal solution.

The optimal solution, which I was satisfied with was to leave the exposure module as is, no adjustment of black point in the 1st instance, and use a 2nd instance of exposure module, which processes the image, after the 1st instance, and a parametric filter set to a grey value range that restricts any change to only the darkest parts of the image. In this 2nd instance of the exposure module, the darker parts of the image can be modified using the exposure slider in the exposure module. Positive EV, to brighten things up in the dark areas, and Negative EV, for the opposite.

image

Its my workaround, so I can us sigmoid with a lot more “latitude” i.e much more than I could using only the features in sigmoid alone. in some ways, this is not unusual, every tool will have its limits, or its own quirks, which need other tools to complement it.

I am not sure if this issue is something that needs to b fixed in sigmoid, or something that the users will accept and find workarounds for, as I have done, and possibly others may find my workaround something which helps them also.

I do not know what could be done in sigmoid, but if I were to express myself in layman’s terms, I would almost wish it was possible to move the target black indicator in sigmoid, to a value below its current minimum. Whether that is correct maths, or valid in image processing, I cannot say, as this not my area of expertise. Am only an end user, in this case.

Good enough, if it is fixed in sigmoid, or via a workaround as I have discovered, what’s important is there is a solution, and for me the concern I had with the dark tendency, is no longer a showstopper.

2. The Contrast

To a certain extent, yes sigmoid enables low contrast images, but the range of values on the contrast slider, within which one can lower contrast without turning the image to something undesirable, is a bit small, so one has to be quite delicate with the mouse or use numbers or other value adjustment feature with right click - can’t recall the name of this user interface feature, but I’m sure you know what I mean.

Somewhere around the midpoint of the contrast slider, in the current version of sigmoid, if one could have finer control, or maybe a 2nd slider that allows the use of the entire width of the tool area to make fine adjustments to the value of the contrast slider.

3. Houskeeping

Ultimately as the custodian of sigmoid, at this time, its up to you to decide when and how, a more formal structure will be established to coordinate the progress of sigmoid. At this time, its just you - one person. On one thread in pixls.us.

At some point in time, to obtain the maximum from the community, it would be helpful, to have the following, if it were possible.

a. A Roadmap. What’s the direction of the “project”. Without a very specific agenda, it becomes difficult for others to know exactly how to help, cos the direction is undefined, or loosely defined, or not yet communicated.

b. Repository. While sigmoid has a code repository, I hope you will agree that all the other items mentioned in this topic, also need to be stored in this central sigmoid repository, ideally also on github, as the current thread, may not be the ideal place to enable others to read, learn, and understand what sigmoid is about. The current protocol requires any discoverer to thumb through an entire thread, which is the only place where information on sigmoid can be found. Not very elegant. Or easy to do.

c. User docs. Sure if and when this sigmoid is formally included in dt, I am sure there will need to include documentation in the manual. There might be value in developing this now.

d. Project Team. Would sigmoid benefit from having a formal team of contributors, which can vary in composition as the need arises, who work with you a bit more closely, than this is possible via this forum thread alone, to augment your efforts? At such a time as you may consider you need this team, please establish.

e. Requirements. Each version, feature set/build will need a set of its own requirements, otherwise testing will not have the utmost efficiency, cos there is nothing to check against.

f. Testing. At this time, we may consider sigmoid as a “Proof of Concept”, so may not need rigorous tests, but at some point in time, there will be the need to have formal tests, and these tests are best achieved only when conducted against a clear set of deliverables, defined prior in the Requirements for each build/version. Would there be the need to collate a set of test raw images, against which all testing will be conducted. These images being a representative test of all kinds, overexposed, underexposed, saturated, out of gamma, etc, etc…

g. The build environment/Strategy. I would expect that most of those interested in sigmoid, would be running at least three environments of dt. In my case there is the version 3.4.1.1 (stable), then the latest dev version which I built about 2 weeks ago, and then there is the build derived from your github repository. Until sigmoid is integrated into dt, would it be possible to have a monthly refresh of your custom build, which is synced up with the latest dt dev code.

The sigmoid build, includes a version of dt dev which is several months behind the current code version. If your sigmoid build, could be synced monthly and refreshed with the latest dt code, then for many of us, we can keep only two instances of dt running, one with sigmoid which is no more than one month out of sync with the latest dev build, and our usual stable dt release. This allow us to test and experience the most recent developments in dt(no more than one month out of sync), with your sigmoid code, in the same build.

This text will be hidden

4. The DT pipeline may have some issues, which affect perception

I sincerely always wish it were possible to discuss sigmoid, independently of darktable’s other features, but this is not so, as much as we or you may wish it. Why? at this time, sigmoid relies on the DT infrastructure, to provide other services, on which sigmoid must rely.

DT provides demosaicing of the raw files, and allows us to display the image, etc, etc. export the image, and whatever we view or export is heavily reliant on the quality of the services provided by other DT features/modules.

While testing sigmoid, it is only sensible that I would compare its results with other methods of achieving the same thing, in DT or in other tools.

Whatever I say next, is a function of many things, for any other who reads this to be able to appreciate. In testing DT from different environments, we do not have the same displays, the same in-room lighting, and neither do we all have the same quality of eyesight(vision and colour appreciation), and for the kind of evaluation I have done, which is not based on any scientific tools, using only eyesight, any comments I make here, are impossible for me to verify with any measurement tools. I do not have the skill or experience to compare images scientifically, and can only describe what my eyes see. Others may have a different way of seeing these images.

When comparing images across different raw processors, I tried to exclude any variables, with the raw processor being the only variable. But this is impossible, except when using filmic, which shares the same pipeline as sigmoid, in DT. When using other non DT raw processors, which have their own sharpening and noise reduction, and colour science, I tried as much as possible to arrive at an equivalent way of comparing results with sigmoid.

It revealed something most unexpected. I either do not have the skills to get the best out of DT’s noise removal and sharpening modules, or DT’s noise removal and sharpening modules deliver results that also “colour” the final outcome, in their own unique way - a way which I was not especially pleased with.

In my comparative tests, I noted that the sharpening/noise tools in Lightzone (I’m using version 4.1.1 which I found to be the most stable and resource efficient on Windows) was IMHO producing images which looked quite visibly better than the results from DT.

To prove this conclusively, I exported an image from DT, processed via sigmoid, with:

  • All sharpening and noise management turned off
  • Exported as a 16 bit Tiff, using LinearProphoto RGB as colour space, uncompressed
  • Imported into LIghtzone
  • Applied Lightzone’s sharpening and noise reduction.
  • Exported from Lightzone as tiff 16 bit keeping the Linear ProPhoto colour space
  • Imported tiff from Lightzone back into DT.

The Linear Prophoto colour space may not be significant. I have not attempted using sRGB as the colour space during the transfer from darktable to Lightzone and back, but I do not think this should be of significance.

I was rewarded with the most impressive view, of what sigmoid is capable of, when the image has had an alternative processing to what I could achieve with the current sharpening/noise removal tools in DT.

I need not provide a photo, or image, cos this is science - hopefully, I have outlined the steps I followed and anyone else can check my assertion, by themselves.

For whatever the reason, my own skills or the excellence of Lightzone, processing sharpness with Lightzone, was visually more appealing, than with DT. I could have vouched that I had had a camera sensor upgrade.

I mention all this especially for anyone testing raw processors, as the raw processor is just one factor in the “environment”, and many other factors outside the control of the raw processor provide an objective or subjective difference to the end result.

If there was one word to describe the difference - it is resolution. With ligtzone’s sharpening, I was seeing so much more, almost as if the image had several times more megapixels, or my display had more megapixels, or my lens had developed a macro ability of microscopic vision. The level of detail I could see in the image was so much more… And its something everyone can try out for themselves. The image from DT modules alone is great, until you see an unsharpened image from DT, sharpened in lightzone, you do not want to go back.

I would recommend that while sigmoid is unavoidably tied to DT, anyone testing sigmoid, should adopt a process similar to that described above, so they can get a more revealing image of the end result of sigmoid, and can see so much more of what it does.

Mine is not to explain why, I have no clue of the sharpening code in Lightzone or DT, can only describe what my eyes observed. A pretty shocking alternative, and relevant to anyone testing any modules in DT.

5. The Colours

From values above 2.7 or thereabouts, the contrast slider, creates images which are definitely out-of-this-world, more like an effect, which some may value, but not a natural rendition. More like you turned on some artificial lighting on the image, and colours become vivid. Do keep this feature.

image

Had a go on your image and managed to get a result quite close to what you had with filmic. So I would not categorize sigmoid as always more contrasty.

DSC02045_03.ARW.xmp (76.4 KB)

You can easily make it even less contrasty by lowering the contrast parameter even more:

DSC02045_04.ARW.xmp (73.3 KB)

I noticed that you used quite heavy noise reduction even though there is almost no noise in the image (coming from a Canon 5D Mark II user who is used to a lot of noise). The result is that some parts of your filmic image will look much smoother than in the two above from me.

For some of your questions:

No, you would need binary masks that would be super easy to spot or you would need parallel processing pipes that are recombined as one result. darktable only supports sequential processing. What you are asking for is a so-called node-based editor.

There are also super duper highlights as there shouldn’t be any limit for how bright things we can edit. :wink: But a good observation, it doesn’t stop with just highlights. You can make this happen using the tone equalizer even though it’s a bit cumbersome for that application. Change the preserve details settings under the masking tab to “no” and you have this kind of control, kind of. The fixed 8 control points are a bit stubborn if you ask me but they get the job done.

You actually have a lot of control with the contrast + skew parameters in sigmoid as you can move the point of peak contrast to any luminance in the image. What you can’t do with the sigmoid module is to create wiggles in your tone curve. This is by design as wiggles create really weird higher derivatives which make the curve less smooth.

1 Like

The Darkness:
I think you need to show this in pictures, f.ex. screenshot with visible gamut check settings + raw + xmp. Because the curve is guaranteed to stay within the working gamut if you haven’t changed the display target settings.

The Contrast:
I think the darktable solution to this is to offer a tighter soft limit range. Something more feedback could help with. I think the right click feature in darktable is amazing though and kind of makes this setup ok.

Housekeeping (project management):
Heh, sounds like a boring large company doing that work :laughing: This all started out for me as an exercise in learning the darktable source code and image editing. I don’t think any development of darktable has done anything like what you describe here. I think the next step for this module to really be merged is to get some proper feedback from the core darktable maintainers as they have the final say. They are in the mids of releasing darktable 3.6 so I’m calmly waiting for that to pass while putting more testing into what I have done so far.

Docs are a later project, the project team is basically this thread. One thing that I think had been super nice to have is an open test image database with a wide range of pictures to test on. That would also be helpful for every other image developer out there and be a great community contribution. It might be time though for a summary at the beginning of this thread such that you do not have to spend, let me check, 2 hours! reading through it all!

As for keeping the sigmoid branch up to date! Thanks for the reminder, it is definitely time for a rebase!

I think the example with Lightzone and sharpening is a good example of something that is off-topic for this thread. Sharpening probably needs work in darktable but fixing that is work for a different module and it is independent of any work done here. What would be interesting is how sigmoid compares with Lightzone’s tone curve. Break down the problem to its first principles to borrow a scientific word for it. Don’t worry about sharpening being different between darktable and some other software as at least I will be to tell the difference between the two effects.

The Colors:
Fun! It seems like you are testing on mostly vivid flowers so I’m not surprised that a contrast setting of only 2.7 will be very vivid. I have edited photos where I could crank up the contrast to 3 or even 4 and still have believable results. My feeling is that images have different ranges of usable contrast so you might find that the range you work with will be different with a different subject.

2 Likes

Lightzone I don’t believe has a tone curve…at least in the UI…it uses a module called the zone mapper ie a zone system for tone and contrast…

Short version : TLA, Three Letter Acronym. I like it.
Long version:

The Zone Mapper, Ligthtzone’s equivalent of a tone mapping tool, I found to be remarkably consistent with colours.

What sets it apart, from other tone mapping tools I have used, is the lack of any shift in the hue. All that changes is luminance of different areas of the image, based on what is modified via the controls within the zone mapping tool.

A purist implementation of virtual/digital lighting. Add light or take light away. Simple. Very predictable. No chromatic side effects.

The results might be a bit boring or unusual, for those familiar with the exciting color shifts, that are possible in other tone mappers.

Hint Hint, might be a good candidate for another tone mapping “Proof of Concept” in DT, after sigmoid has been embedded in the official DT roadmap.

image

darktable has a module with the UI much like this. Its been depreciated.

1 Like

That’s because you likely use it in the default luminosity mode…not going to impact color Nearly as much. Switch to RGB and you’ll get some shifts…Blend filmic in lightness and it doesn’t mess much with color either

This discussion is so in sync with my darktable endeavors. I finally found a module workflow that gives me the results I’ve been fighting to achieve.

From bottom to top:

  1. color calibration
  2. color balance (lower saturation to adjust for over saturation in step 5)
  3. filmic rgb (custom middle gray luminance and using white relative exposure and black relative exposure to produce a super flat image with plenty of room for shadows and highlights)
  4. rgb curve (local adjustments)
  5. rgb curve (cubic spline global tone curve with “preserve colors: none”).
  6. lut 3D

Saturation goes overboard when using “preserve colors: none” in step 5, of course. But I lower it in the color balance module (step 2). Doing it the other way around, using luminosity in rgb curve and upping the saturation in color balance produces super strange results.

I know, it goes against every good scene referred advice to go so hard on the rgb curve (or even rely on this module for a global tone curve), but I need more control over the curve than filmic rgb or color balance with “contrast” and “contrast fulcrum” adjustments gives me. 7 points or more on the global rgb curve is not uncommon. The tone equalizer feels like a curve in a straightjacket, I can’t put it better :slight_smile: It is sadly too limited because I can’t shift the points on the histogram sideways or create more points. I’ve been dreaming about a scene referred replacement for the rgb tone curve, but I have no idea if that is even possible. Having it in Sigmoid may be what I’m wishing for? :slightly_smiling_face: