Project

General

Profile

Feature #9559

Required feature: Please add RGB curves

Added by Jaroslav Tvrdy about 5 years ago. Updated 9 months ago.

Status:
New
Priority:
Low
Assignee:
-
Category:
-
Target version:
Start date:
08/17/2013
Due date:
% Done:

0%

Affected Version:
git development version
System:
all
bitness:
64-bit
hardware architecture:
amd64/x86

Description

Hello,
please add RGB curves, it is really needed, thanks.

History

#1 Updated by Matthew Harrison almost 3 years ago

I've been watching a lot of colour correction tutorials and they use RGB curves to manipulate the histograms. RGB curves would be useful so I can use these techniques.

Alternatively, a LAB histogram might be handy.

#2 Updated by Roman Lebedev almost 3 years ago

  • Affected Version set to git development version
  • System set to all
  • bitness set to 64-bit

Matthew Harrison wrote:

Alternatively, a LAB histogram might be handy.

I guess, you did not mean Lab-based curve, https://www.darktable.org/usermanual/ch03s04s02.html.php#tone_curve ?

#3 Updated by Matthew Harrison almost 3 years ago

I didn't say LAB curve, I said LAB histogram. The idea being that you want to adjust the histogram using curves in the same colour space. As DT already has LAB curves, a LAB histogram could help you see what you were doing. (I've never seen a LAB histogram so correct me if they're hard to read). The other alternative is to add RGB curves as they are the natural control to interact with the RGB histogram DT already has.

RGB curves match those used by lots of training material which is also useful for those learning.

#4 Updated by Scott Barlow almost 2 years ago

I agree that RGB curves would be very useful. With them you can easily change the red, green, or blue based on luminance. For example, only changing the blue of the darker parts of an image. This can be useful in several situations, such as cutting through haze. I've been unable to get anything nearly as good in darktable using the Lab curves (yes, I'm using parametric masks to only affect the light or dark areas). Although I understand the numerous benefits of the Lab color space, the reality is that it is much easier for most users to work with RGB curves. Plus, since the image only really exists in the middle of the a* and b* curves, it is hard to get much fine control since only a very small portion of the curve really has useful meaning.

#5 Updated by Matthew Harrison almost 2 years ago

The argument for processing the photo in the current colour space is very good, but thinking about it, would it be possible to specify the adjustment in RGB space, but perform the adjustment in its current space? Convert the request to the current colour space, rather than convert the picture to RGB space?

#6 Updated by Scott Barlow almost 2 years ago

Right. I don't suggest moving away from Lab as I understand the numerous benefits of it as well. One option could be as Matthew suggested, although I don't believe that would be trivial to do. Another option could be to make it a separate module, "RGB Curves", that comes later in the pipeline. At some point in the pipeline, I believe that the image is converted to RGB as they are saved as sRGB.

#7 Updated by Anatoly Sayenko about 1 year ago

Hi. I've been using DT for couple of years already, and, while it's been already extremely useful to me as it is, I feel like I miss those RGB curves from Gimp, still.

I'm thinking about contributing to DT by adding an "RGB curves" module, or extending the existing LAB tone curve module.

I just wonder if there is already some work going on in that direction, so I'm not duplicating the effort.
Also, I've looked through this page http://www.darktable.org/development/ and I wonder if there are any more resources on DT development, like coding style/technology stack description etc.

#8 Updated by Roman Lebedev about 1 year ago

Anatoly Sayenko wrote:

Hi. I've been using DT for couple of years already, and, while it's been already extremely useful to me as it is, I feel like I miss those RGB curves from Gimp, still.

I'm thinking about contributing to DT by adding an "RGB curves" module, or extending the existing LAB tone curve module.

I just wonder if there is already some work going on in that direction, so I'm not duplicating the effort.

Not that i know of.

Also, I've looked through this page http://www.darktable.org/development/ and I wonder if there are any more resources on DT development, like coding style/technology stack description etc.

The problem with that is, rgb curves need to work in some color space, and currently there is no rgb portion of the curve.
After output color profile we have some random rgb color space, e.g. display color profile, so it is really a wrong place for the modules.
So there needs to be some portion of the pipe in rgb color space. And adding yet another dirty hack into some other module is, well, ugly.

#9 Updated by Anatoly Sayenko about 1 year ago

The problem with that is, rgb curves need to work in some color space, and currently there is no rgb portion of the curve.
After output color profile we have some random rgb color space, e.g. display color profile, so it is really a wrong place for the modules.
So there needs to be some portion of the pipe in rgb color space. And adding yet another dirty hack into some other module is, well, ugly.

Is there any document (other than source code) that contains some description of how DT is built in the sense of architecture? Like what are the core interfaces, how do you extend the app, so on. Would be grateful if someone pointed me in the right direction

#10 Updated by Roman Lebedev about 1 year ago

Anatoly Sayenko wrote:

The problem with that is, rgb curves need to work in some color space, and currently there is no rgb portion of the curve.
After output color profile we have some random rgb color space, e.g. display color profile, so it is really a wrong place for the modules.
So there needs to be some portion of the pipe in rgb color space. And adding yet another dirty hack into some other module is, well, ugly.

Is there any document

(other than source code)

#darktable on freenode it is then :)

that contains some description of how DT is built in the sense of architecture? Like what are the core interfaces, how do you extend the app, so on. Would be grateful if someone pointed me in the right direction

#11 Updated by Matthew Harrison about 1 year ago

Roman Lebedev wrote:

The problem with that is, rgb curves need to work in some color space, and currently there is no rgb portion of the curve.
After output color profile we have some random rgb color space, e.g. display color profile, so it is really a wrong place for the modules.
So there needs to be some portion of the pipe in rgb color space. And adding yet another dirty hack into some other module is, well, ugly.

What about my earlier suggestion, keep the curves processing in whatever colour space it is already in, but provide an RGB interface? You can then convert the users request from RGB to whatever colour space dt wants to use before adjusting the image.

#12 Updated by Anatoly Sayenko about 1 year ago

Matthew Harrison wrote:

What about my earlier suggestion, keep the curves processing in whatever colour space it is already in, but provide an RGB interface? You can then convert the users request from RGB to whatever colour space dt wants to use before adjusting the image.

I was also thinking whether it's possible to create an RGB "view" of the LAB curves, in the same module. So the data model is the same, only the UI for manipulating curves would differ. It would require some on the fly conversion LAB <-> RGB when you're using that "view", but at least for now it seems not as complicated as adding an RGB color space support.

As I'm not an expert in color spaces, I might be missing some fundamental limitation(s) though.

#13 Updated by Roman Lebedev about 1 year ago

Anatoly Sayenko wrote:

Matthew Harrison wrote:

What about my earlier suggestion, keep the curves processing in whatever colour space it is already in, but provide an RGB interface? You can then convert the users request from RGB to whatever colour space dt wants to use before adjusting the image.

I was also thinking whether it's possible to create an RGB "view" of the LAB curves, in the same module. So the data model is the same, only the UI for manipulating curves would differ. It would require some on the fly conversion LAB <-> RGB when you're using that "view", but at least for now it seems not as complicated as adding an RGB color space support.

As I'm not an expert in color spaces, I might be missing some fundamental limitation(s) though.

JFYU: for legacy reasons, every ugly hack (at least in the IOP's) will have to be kept forever.
And, if the history is any indication, the uglier something is, the less likely that it will be reworked later on.

So it's really best to either do it right from the beginning or not do it at all :/

#14 Updated by Anatoly Sayenko about 1 year ago

Roman Lebedev wrote:

Anatoly Sayenko wrote:

Matthew Harrison wrote:

What about my earlier suggestion, keep the curves processing in whatever colour space it is already in, but provide an RGB interface? You can then convert the users request from RGB to whatever colour space dt wants to use before adjusting the image.

I was also thinking whether it's possible to create an RGB "view" of the LAB curves, in the same module. So the data model is the same, only the UI for manipulating curves would differ. It would require some on the fly conversion LAB <-> RGB when you're using that "view", but at least for now it seems not as complicated as adding an RGB color space support.

As I'm not an expert in color spaces, I might be missing some fundamental limitation(s) though.

JFYU: for legacy reasons, every ugly hack (at least in the IOP's) will have to be kept forever.
And, if the history is any indication, the uglier something is, the less likely that it will be reworked later on.

So it's really best to either do it right from the beginning or not do it at all :/

Well, I understand that :) Sure we don't want to fill the codebase with ugly hacks

But, if DT is not designed to support color spaces other than LAB, adding it would either require a major redesign (which is probably just not worth it), or be much "uglier" than adding an RGB view to LAB curves module.

I'll see how bad does it look when I get to coding :)

#15 Updated by Serhiy Kobyakov 11 months ago

Jaroslav Tvrdy wrote:

Hello,
please add RGB curves, it is really needed, thanks.

I would like add my vote for this feature because it is a basic tool, and many photographers use it in everyday practice.

I also miss it very much using Darktable. Often I had to use other DT tools to mimic the effect, which is easy to do using RGB curves.

#16 Updated by P├ęter Varga 9 months ago

Pretty please:)

Also available in: Atom PDF