rebooting color balance

I’m am still on the Windows 3.4.1.1 build so haven’t had chance to try this new module out yet, but I am very interested in it because the current color balance module is probably my favourite. I might even go as far as saying that I do the majority of my edits in the color balance module. Whether I need to adjust contrast, exposure, saturation, colour grading, split toning… it does it all.

So, “color balance rebooted” gets me excited (and perhaps a little nervous based on some comments in this thread). I have a couple of questions

  • Is it designed to replace the old color balance module, i.e. will the old one get deprecated?
  • Will there be any features from the old module that are not carried over to the new module?

Many thanks for your work and time!

The new color balance does not have a contrast adjustment - see this post.

Thanks Todd!

I’m in the process of writing the doc. What do you think of this to explain the parameters ? (Took me only 5 hours of work…)

image

8 Likes

I know this is hard. If brilliance runs along lines of constant saturation, then how does chroma run? Perhaps a line of constant chroma or a family of lines will pull it all together.

Yeah, that will be for another graph.

Maybe. I wouldn’t want to make the job harder. How about a set of lines along one of the color charts?

What I was wrestling with these three inter-related parameters in Color Balance RGB was how I would use them to navigate along some similar color chart. If I was at the center and wanted to move upper left, would I simply reduce brilliance and increase saturation?

And where does chroma fit into this… is it some kind of orthogonal dimension not shown, or just a different axis laying on the same plane?

Ligthness + Chroma and Brilliance + Saturation are 2 sets of orthogonal coordinates. Lightness and chroma are absolute (same direction for all colors). Brilliance is computed by rotation of the Lightness + Chroma base, but its direction is particular to each color (it’s an axis that start from black and goes through the current color).

I put a “chroma” arrow in the direction + saturation + brilliance, but I removed it. Roughly, chroma goes bottom left to top right, and lightness goes from top left to bottom right. But I don’t want people getting the wrong idea that saturation is chroma rotated by 45°, because the angle depends on the color. The brilliance axis has a direction that is particular to each color, the only constant is it always joins said color to black.

1 Like

This is the one that I follow the most easily…but I’m simple… I just follow lines plotted this way…may not be the same actual representation of what you are trying to show…

image

1 Like

That’s more or less how I understood that from your earlier descriptions. I do understand from my own very limited way that chroma and lightness aren’t simply axis rotations (I want to better understand and am working to better understand). So as a suggestion, would it make sense to have a could of broad arrows that show the general and opposing direction of chroma and lightness?

Again, from a user perspective, I am really try to understand how I might use chroma along with saturation and brilliance to meet my intent

I have some vivid Wood Duck photos awaiting that question… :wink:

Yes, they are. We go from one reference to the other through a simple matrix of rotation, it’s by-the-book 2D rotation with a cos and a sin.

Perhaps.

I think it’s more about where you want to get your colors. Chroma preserves luminance, but degrades to grey. Saturation doesn’t preserve luminance but degrades to pastels. Brilliance gets you a different shade of the same color.

Anyway, the swatches are drawn in the same direction as the GUI controls. So you can just stare at them until you get it. Understanding the cooking recipe of the geometric transform will not help you that much I think, it’s more about tuning your eyes to the effect.

1 Like

I’ve seen that chart, and it kind of gets to my question. I have three controls under Color Balance RGB: chroma, saturation and brilliance. Let’s say I have a bright red flower petal located at the point where “B=80” lies and I want to change it to the color where “S=40” lies? (I’m just picking those points to identify the squares) Do I change saturation and brightness or chroma and one of the others? Or does that even matter

I understand that I might be a bit dents on this, but what I really want to understand is how to use these three controls to navigate to the color that I’m looking for.

Yeah, I get that. I’m just trying to get the lay of the land and this has helped. I will say that this particular module is really opening new doors. Thanks for all your effort.

My interpretion of your graphic is: At the bottom you show a variance of saturation from -1 to +1 while brilliance is left constant. And a variance of brilliance from -1 to +1 while saturation is left constant. This interpretion obviously is not correct. Not only are the 0 values of the saturation and brilliance bars different (checking with color picker) but also the values of the bars can’t be found in the above shown color matrix. E.g. I would expect the briliance bar to be located here:

Could you explain your graphic a little further ?

1 Like

What tools are you using to check values? I just ran Digital Color Meter over Aurelien’s image and all 0 squares give the same LAB and sRGB values, and it is indeed the middle square in the row you highlighted.

Hmm,I think I saved it as a TIF out of the windows clipboard. I then used the color picker of dt.

Took the png now an imported this in dt and now the central color is equal. Thanks, that was my mistake.

But shouldn’t also all the squares in the middle row and the correspondending squares in the brilliance bar have the same colour values ?

Example: Far left (matrix middle line) = 76, 96, 78. Far left brilliance bar = 24, 24, 24

I programmatically enforce the “0” patches to the same value:

def make_swatches(RGB):
    # without gamut mapping
    swatches = []
    for j in range(-5, 6):
        for i in range(-5, 6):
            result = color_mapping(RGB, j / 9., i / 9., clip=False)
            if(j == 0 and i == 0):
                result = RGB
            swatches.append(colour.plotting.ColourSwatch(RGB=result))

    colour.plotting.plot_multi_colour_swatches(swatches, 
                                               columns=11, width=30, height=30)  
    
    swatches = []
    for j in range(-5, 6):
        result = chroma_mapping(RGB, j / 5., clip=False)
        if(j == 0):
            result = RGB
        swatches.append(colour.plotting.ColourSwatch(RGB=result))
    colour.plotting.plot_multi_colour_swatches(swatches, 
                                               columns=11, width=30, height=30)  
    
    swatches = []
    for j in range(-5, 6):
        result = color_mapping(RGB, j / 5., 0., clip=False)
        if(j == 0):
            result = RGB
        swatches.append(colour.plotting.ColourSwatch(RGB=result))
    colour.plotting.plot_multi_colour_swatches(swatches, columns=11, width=30, height=30)  
    
    swatches = []
    for j in range(-5, 6):
        result = color_mapping(RGB, 0., j / 5., clip=False)
        if(j == 0):
            result = RGB
        swatches.append(colour.plotting.ColourSwatch(RGB=result))
    colour.plotting.plot_multi_colour_swatches(swatches, columns=11, width=30, height=30)  

So I’m not sure what you measure.

It’s complicated. I can’t go as far in the square as I go in the bars without reaching sRGB gamut limit and having gamut clipping producing hue shifts somewhere in the square.

OK, so the bars have a different scale than the matrix ?

Going through the lightness/chroma or brilliance/saturation path will get this particular color to the same spot. BUT don’t forget all the other pixels will follow the same path. The luma/chroma path will darken the whole image, while the brilliance/saturation will ignore the neutral colors (not completely, but more than the other).

In terms of creative shifts, I find brilliance/saturation to be easier to use. Lightness is anyway already set by exposure elsewhere (lightness ~= cubic_root(luminance)), you probably don’t want to mess with it in there. Chroma is more like a gamut compression/expansion, nothing really artistic.

1 Like

Yes. The 0 spots match, though.

1 Like