Mixing two RGB color vectors to get resultant

半腔热情 提交于 2019-11-27 22:54:13

Is what you suggested the same as a weighted average?

Average R = w1*R1 + w2*R2 + w3*R3 + ... + wn*Rn

Average G = w1*G1 + w2*G2 + w3*G3 + ... + wn*Gn

Average B = w1*B1 + w2*B2 + w3*B3 + ... + wn*Bn

The w's are the weighting fractions and the sum of them is 1.

R1 is the red component of the first color to mix, for example.

So if you wanted to mix two colors evenly, it would be:

Average R = 0.5*R1 + 0.5*R2

Average G = 0.5*G1 + 0.5*G2

Average B = 0.5*B1 + 0.5*B2

As for mapping the resultant color to a named color ("dark red") maybe just do a lookup table and pick the closest one?

The problem is that you're trying to relate two different color theories. RGB is additive color theory (colored light is emitted from the source). In this case the more of the spectrum you add to the mix, the closer you get to white.

For "paint mixing" you need to emulate subtractive color theory which governs the way reflected colors are mixed. (i.e. reflected light such as paints, different surfaces etc.) Here's an overview.

The JavaScript on this page is a clue as to how you might proceed in converting RGB to CMYK.

Scott Burns

Mixing RGB colors to simulate subtractive color mixture (i.e., paint-like mixture) can be done by transforming the RGB values to spectral reflectance curves, then doing the mixture there. This question is very similar to another, stackoverflow.com/questions/10254022/, where the solution is discussed in more detail.

I think you should really define what is "+" in your color scheme.

Based on your requirements, I've translated them into estimated hex color codes, (rgb represention can be deduced easily).

RED     + BLACK   = DARK RED  
#ff0000 + #000000 = #800000
RED     + WHITE   = LIGHT RED
#ff0000 + #ffffff = #ff8080

optimally, also with real paint characteristics:
RED     + BLUE    = PURPLE
#ff0000 + #0000ff = #800080
RED     + YELLOW  = ORANGE
#ff0000 + #ffff00 = #ff8000

I do not see a definite pattern which you can work out some formulas to achieve that.

John's and Nils' methods probably will come close to the colors but probably not to the exact values. I suggest you give theirs a try.

EDIT:
Updated the wrong color codes. Well it does made a lot more sense now.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!