Although I have watched several times videos from Boris and Bruce and a read the darktable user manual I still struggle with the understanding of the channel mixer.
I made a very simple R, G, B png image (picture 1)
If I move the “input G” slider in the the “R tab” to the right, the green area turns into brown and in the histogram a red pin appears (picture 2). Why does red appear in a pure green field? Is this a png issue, or am I…?
No not at all your green bar comes in on my pc around 52 green … so 0 52 0… when you set the green slider to 2.0 you multiply this by 2 and add it as red since you are in the red output… so the pixel is now 104 52 0… ie the color that you see…
And the other bars have little to no green so they will not change much if at all…
The way I’ve thought of it (and I’m sure there are many ways to visualize / conceptualize it) is the channel mixer determines the “purity” of each output channel’s color. If you have a pixel that’s 100% R, 100% B and 100% G, it’s white. If it’s 100% R, 100% B and 0% G, it’s magenta. But if the red channel has been adjusted to now contain some other input color in addition to red, then it’s skewed and the final color will shift.
In other words, the output channels are “conduits” through which theoretically a percentage of pure R, G and B will “flow” (per conduit). But the channel mixer can “pollute” each output channel by de-purifying a color though the addition of other colors. So while the percentage of “red” might not change, its inherent “redness” might, which will affect the final color.
Someone please correct me… I know it’s coming. LOL
I just think of them as simple multipliers… You are going to enhance red with + values and decrease it with - ones for the red output channel… the extent to which that happens and the resulting color will rely on the values of the pixel so pixels with a large blue number will add more red to the final pixel value than ones with less blue when you bump the blue slider and the same for green, and well red in the red output channel is pretty obvious… i guess whatever way you think about it to understand it…
Consider just the pixel where your cursor is located. In the first image, the RGB value of that green pixel is RGB = (0,60,0) (on my machine). These are the red, green and blue “input” values for that pixel. You have selected the “R” tab in the color calibration module, which means you are going to modify only the red value of that pixel by a mixture of the input values corresponding to the coefficients of the sliders (1.0, 2.0 and 0.014). Therefore, the new red value (the output) becomes R_out = (1.000 * 0) + (2.000 * 60) + (0.014 * 0) = 120 and the modified RGB value for that pixel now becomes RGB = (120,60,0). The color turns brown.
Now consider a pixel in the red region of the input image. It would have an input RGB value of say RGB=(120,0,0), i.e, no green. The output red value is modified as before so it becomes R_out = (1.000 * 120) + (2.000 * 0) + (0.014 * 0) = 120. Notice it has not changed because there was no green in the input. Therefore, the RGB value for that pixel is also unchanged, i.e, RGB = (120,0,0), and the color stays red.
Thx to all of you for your very supportive explanations. I think I got it.
Maybe it would be helpful for my brain, if the channel mixer UI looked a little bit like the matrix equation. Meaning: the R, G, B tabs as lines instead of columns, and the input sliders in columns instead of lines. But not sure if this makes sense.