darktable-org / darktable

darktable is an open source photography workflow application and raw developer
https://www.darktable.org
GNU General Public License v3.0
9.54k stars 1.13k forks source link

Suggestion to improve the Color balance RGB module #10474

Closed pedrorrodriguez closed 1 year ago

pedrorrodriguez commented 2 years ago

Hi all,

The possibilities that the new Color balance RGB module has opened for us Darktable users have been amazing. That, combined with the very robust masking system, lets us tweak colors in whatever way we want. However, it seems that, as of right now, this module has a usability gap that could be easily closed, since the features are already there.

There are two basic ways, as far as I understand it, of using this module:

  1. On the whole image
  2. Fine tune a mask to your heart's content to work on a very specific portion of your image.

The problem is that, say you want to work on the yellows, the oranges and the blues of your image. At the moment, you'd have to create three instances of the module, with their corresponding feathered parametric masks. That is tedious to do, and it seems that it would be inefficient processing-wise. Would it be a terrible idea to create a new tab within the module where you can work on specific colors through sliders for hue, chroma, saturation, vibrance and contrast? And what about banding? If darktable's masking system is already so good and has a feathering slider, we could include it here as well and let you avoid nasty artifacts. Here is a quick mockup:

HSB

This way we would normally use the master tab for the whole image, this second tab for speeding up our work on specific colors, and only go into the masking section when we need the extra precision.

Thanks!

aurelienpierre commented 2 years ago

Would it be a terrible idea to create a new tab within the module where you can work on specific colors through sliders for hue, chroma, saturation, vibrance and contrast? And what about banding? If darktable's masking system is already so good and has a feathering slider, we could include it here as well and let you avoid nasty artifacts.

Re-using the general masking API from within a module is something I don't know about. Maybe it's possible without too much of an hassle, maybe not.

The other problem is what to do with the GUI. That will add a lot of clutter as it is.

The next problem is how to blend the hue corrections to avoid banding. Maybe a radial-basis interpolation like in tone EQ would be possible but hues are really tricky to blend corrections smoothly (see color zones… it's great until you get a bit harsh).

All I can say is, from the internal masking point of view, this is do-able while retaining backward compatibility since it's basically just extending the alpha masks. But from the hue blending and GUI points of view, I'm really not sure.

MStraeten commented 2 years ago

If we think about this in a more general way it’s something like colorzones on steroids. Both in one UI seems to be very ambitious…

pedrorrodriguez commented 2 years ago

Re-using the general masking API from within a module is something I don't know about. Maybe it's possible without too much of an hassle, maybe not.

The other problem is what to do with the GUI. That will add a lot of clutter as it is.

The next problem is how to blend the hue corrections to avoid banding. Maybe a radial-basis interpolation like in tone EQ would be possible but hues are really tricky to blend corrections smoothly (see color zones… it's great until you get a bit harsh).

All I can say is, from the internal masking point of view, this is do-able while retaining backward compatibility since it's basically just extending the alpha masks. But from the hue blending and GUI points of view, I'm really not sure.

So if I understood you correctly, the masking side of things could be done (individual selection of hues), however it sounds like a feathering slider wouldn't solve banding issues in a way that you would be satisfied with. Also the UI could quickly become cluttered.

I can't help you with the hue blending side of things, but I think something along the lines of this mockup could be a happy medium between simple UI and the improvements I was suggesting:

HSB2

If we think about this in a more general way it’s something like colorzones on steroids.

My thoughts exactly ;)

lhietal commented 2 years ago

From GUI point of view this feels better to implement in quick access panel. There it is expected to have controls for simplified workflow and having premade masks for specific colours in separate instances seems logical. Then masking could be refined by going to full module.

Though don't think it is currently possiple to have multiple instances of a module in quick access.

aurelienpierre commented 2 years ago

That last mockup is very tempting… I know exactly how to do that.

MStraeten commented 2 years ago

that mockup is colorzonesrgb just with sliders instead of curves ;)

pedrorrodriguez commented 2 years ago

that mockup is colorzonesrgb just with sliders instead of curves ;)

Kind of, but wasn't colorzones in Lab? Also, we get all the niceties from color balance rgb with finer control

MStraeten commented 2 years ago

that's what i mean with "on steroid" My idea is like the HSL Curves in davinci resolve or final cut pro (https://coloraggio.github.io/davinci-resolve-manuals/12.5_Manual/26.pdf page 16ff) - and that in an appropriate color model ;) It's not just curves over hue, but also Sat over Sat etc. pp.

pedrorrodriguez commented 2 years ago

that's what i mean with "on steroid" My idea is like the HSL Curves in davinci resolve or final cut pro (https://coloraggio.github.io/davinci-resolve-manuals/12.5_Manual/26.pdf page 16ff) - and that in an appropriate color model ;) It's not just curves over hue, but also Sat over Sat etc. pp.

Ah, I see. That is great too. It sounds like that would be more like an idea for a new version of Color zones, rather than Color balance RGB, right? My suggestion was more geared towards repackaging what is already there, in a way that would speed up the workflow, hopefully without much coding hassle.

I was also taking a look at what other applications like Lightroom and Capture One do, and Capture one has a very interesting "advanced" tab for precise color work:

capture-one-raw-photo-editor-blogpost-mareike-keicher-color-harmonies-20-update-analogues-02

In Darktable world, I can imagine that being a mix between Darktable's color picker, and my last mockup:

HSB3

That way you would work on the whole image on the master tab. Then go to what I called "HSB" for quick color adjustments, and then move on to the advanced tab for really zoning in a few different colors, or everything but a few different colors.

This last step could perhaps instead be achieved by expanding Darktable's masking system to let you pick several hues at the same time, which might be the simplest solution, and the one that gives most control:

masks

aurelienpierre commented 2 years ago

The Capture One approach is exactly what the general parametric masking does though, except the hue is a ring instead of a slider. But it's the same idea of selecting only a contiguous range and using a soft transition on the bounds.

Hacking parametric hue masking for more than a hue is again very challenging, not only UI−wise (it's already crowded) but again to blend effects between ranges smoothly.

In that regard, the previous mockup is more realistic, especially since all the maths already exist in tone equalizer (which provides both UI : curve and sliders, but they ultimately fall back to the same thing).

pedrorrodriguez commented 2 years ago

The Capture One approach is exactly what the general parametric masking does though, except the hue is a ring instead of a slider. But it's the same idea of selecting only a contiguous range and using a soft transition on the bounds.

That's what I was thinking

Hacking parametric hue masking for more than a hue is again very challenging, not only UI−wise (it's already crowded) but again to blend effects between ranges smoothly.

Yeah, you are right, it's probably way too complicated for minor gains in what you can already do with several instances of the module and parametric masks.

In that regard, the previous mockup is more realistic, especially since all the maths already exist in tone equalizer (which provides both UI : curve and sliders, but they ultimately fall back to the same thing).

That would be amazing.

github-actions[bot] commented 2 years ago

This issue did not get any activity in the past 60 days and will be closed in 365 days if no update occurs. Please check if the master branch has fixed it and report again or close the issue.

pedrorrodriguez commented 2 years ago

In that regard, the previous mockup is more realistic, especially since all the maths already exist in tone equalizer (which provides both UI : curve and sliders, but they ultimately fall back to the same thing).

Sorry to be the nagging mockup guy and bring this back from the dead. @aurelienpierre was something like this what you had in mind when you were talking about the Tone EQ UI? HSB-Curves

I think it also goes along what @MStraeten was suggesting. I can imagine having another checkbox so that it can affect the whole picture instead of just one color, and having a slider to move all the nodes up or down, so that the effect is constant for a given color.

github-actions[bot] commented 2 years ago

This issue did not get any activity in the past 60 days and will be closed in 365 days if no update occurs. Please check if the master branch has fixed it and report again or close the issue.

github-actions[bot] commented 1 year ago

This issue was closed because it has been stalled for 300 days with no activity. Please check if the newest release or nightly build has it fixed. Please, create a new issue if the issue is not fixed.