[New module] [Packages available] Color harmonizer

Hi all,

A couple of days ago, I started playing around with the idea of a module to simplify working with color harmonies. After a few iterations with Gemini and Claude (due to quota limitations they had to come to terms with each other) I came up with this:

It is pretty straightforward: you select an “anchor” hue, then you choose the harmony type, and then you play with the slider to push all the hues more or less aggressively towards the target hues.

If you push the power and width sliders to the max you are likely to see artifacts, especially if the starting image does not already have some inherent harmony, but in general it works quite well for me.

As expected, you get the best results if you use the module to emphasize what is already in the photo, instead of adding something that is not.

The code implementing the math of the transformation (including the OpenCL implementation) is completely generated. I had to iterate several (a few dozen) times to get good results, but I am quite happy now. The concept and UI design are mine, so probably there is more margin for improvement in these areas :slight_smile:

There is extensive documentation here:

And if you want to try it out, the code is here:

DISCLAIMER: I am no color scientist. In fact, I understand nothing about color science. I cannot guarantee that the approach is sound, and actually I look forward to the feedback of those who are more knowledgeable than me to do things in a more principled way.

Hope you like it and find it useful, if not for editing photos at least for exploring more easily the color harmonies in your frames.

Looking forward to your feedback, cheers!

Download Links [Updated: 2026-03-15]

Please, find packages for all supported platforms here (scroll to the Artifacts section at the bottom of the page and download the right package for your OS and architecture).

I will try to keep this link up to the date with the latest build.

21 Likes

I think it’s an interesting idea, but I’ll leave it to others to comment on whether it is good for dt.

I especially like the guiding lines/sectors on the vectorscope. FYI DaVinci Resolve has an option to draw a “skin-tone line” on the vectorscope, a feature that I find to be useful when color grading.

Thank you for the idea and demo. :slightly_smiling_face:

2 Likes

The concept of a skin tone line was discussed a few times and ultimately rejected…but its pretty easy to sample the skin and have that sample on the vectorscope and eyeball it…then I am not sure if you know but in the color picker you can hover on the patch and instead of a color you will get a skin tone…so if you are in the range of Thai skin or Caucassian or Asian…I am not sure how many “Ethnic” variants are listed …each has a programmed range obviously as there can be some selections that will satisfy more than one of the skin tone options… but you can use them as a sort of reference as well…

There is the code and some comments here:

4 Likes

Cool, I did not know about skin tones with the color picker. My poor brain just does not translate RGB levels into colors, except of course for limiting cases. :sunglasses:

1 Like

I switch the picker to lab when I am tweaking them…I have a feel for the numbers that I find pleasing…

The demo looks really cool. I am not able to test it currently, and I am also not a color scientist, but this would be a great addition after some vetting to darktable. I currently use color balance RGB for this sort of thing, but a dedicated module that is simple to use would be far superior in my opinion.

This also looks to be operating in a different way than split toning with CB RGB: the latter is just adding color on top, and this seems to be moving the hues seperately. Very cool.

2 Likes

The concept is very cool :+1:

3 Likes

sounds interesting, having an option to protect certain colours might be useful, or a slider for each part of the harmony so it’s easier to tune

I’m wondering about a module working out which types of harmony might already be there and autoselecting those

1 Like

I really appreciate the fresh ideas you are bringing to DT. I also love some of what @Christian-B is bring to DT lately.

3 Likes

How does this differ from using Color Balance RGB properly?

2 Likes

CbRgb and ColorEq are general purpose tools. This is specifically designed to work on harmonies.

As an analogy, it is what vignette is to exposure. A less generic tool to achieve a specific effect more easily and possibly with better results.

In a real workflow, this would probably be used to create a foundation for more fine grained manipulation in either CbRgb or ColorEq.

2 Likes

Yeah vignette is just a masked exposure module though, makes no sense as a standalone module.

This can be achieved with the 4 ways tab in color balance RGB. It seems a bit strange to add smaller module to get the exact same results that other modules already achieve.

It’s almost like a “shortcut” for users who don’t want to learn how to use the proper tools that already exist.

Also please don’t take this as an attack on your effort, just offering a little resistance since darktable is constantly criticized for having too much choice, and a module that introduces no new functionality seems a bit redundant. But of course I am not a maintainer, just adding my opinion :slight_smile:

5 Likes

No worries, I understand that the criticism is coming from a good place :slight_smile:

I would see it more like, saving you from a lot of repetitive fiddling if you know that what you want to achieve is color harmony, already.

You can cut a branch with a pocket knife, but it’s much better if you have a saw.

5 Likes

Certainly not from me. Choice is what I love about DT and I am sure I am not alone.

4 Likes

Nice idea, I added an “auto detect” button to this end:

7 Likes

Hi Daniele …
i do like the idea of your module , not sure if I would use it often … but at least good to have it available if needed .
Looks like a simple solid design .
And if folks do not find it useful , just ignore the module …
If folks do find DT overwhelming … just pick and choose your WF , that suits your needs , quite simple from my POV .
DT cannot please all the various users … to a full satisfaction .
But as it is fully customizable … I do see no issues . It is just a slightly steeper learning curve as maybe other pieces of software

Just my 2cents

Andreas

2 Likes

Unless I am misunderstanding the implementation, I don’t see this at all.

Color balance divides the image into brightness ranges, whereas this module works on the whole image.

Color balance 4 ways adds a tint (so neutrals become colourful) whereas in this module, neutrals can stay neutral.

Color balance 4 ways adds a single hue tint per brightness range, whereas this can alter many hues at once.

If anything, this reminds me more of colour equaliser or rgb primaries/colour calibration. I am not a mathematician, so have no idea if the concept could be implemented in any of those modules.

3 Likes

Yes, I would say that color equalizer or color replacement table are better candidates to achieve the same results as this module, rather than CbRgb. Still, @hatsnp is right in the sense that it is already possible to achieve similar effects with the existing modules, albeit - I would argue - with significantly more effort and less precise results.

1 Like

You’d need N instances of color balance with masks and a blendmode to emulate this, where N is the number of colors to harmonize.

This module looks like way less work than that.

10 Likes

Add me to the list of people who never complain about more choice in Darktable. And I agree with @Masterpiga that a more streamlined, dedicated tool is a welcome addition, even if other tools can be used to do the same thing but with more effort. Thanks and great work @Masterpiga!

As a user who works a lot with colour harmonies, split toning and colour contrast, this looks to be a great concept and something I would use often. To me, this seems like a useful addition to the creative side of raw processing rather than the correction side. As a big fan of Color Lookup Table, I’m still hoping one day we may get a replacement for it that works in RGB and has more tools to visualize/control the colour selection, but I digress…

Is the “effect strength” essentially working on saturation?

3 Likes