I am working on a project where I need to convert colors defined in RGB (Red, Green, Blue) color space to RYB (Red Yellow Blue).
I managed to solve converting a color from RYB to RGB space based on this article: http://vis.computer.org/vis2004/DVD/infovis/papers/gossett.pdf
I convert a color from RYB to RGB with this "algorithm":
So the values of
y (yellow), and
b (blue) are known, also these arrays/sets are constants:
white: [1, 1, 1] red: [1, 0, 0] yellow: [1, 1, 0] blue: [0.163, 0.373, 0.6] violet: [0.5, 0, 0.5] green: [0, 0.66, 0.2] orange: [1, 0.5, 0] black: [0.2, 0.094, 0.0]
here is how I calculate the value of
red for the RGB space based on the parameters above:
i = 1; rgb_red = white[i] * (1 - r) * (1 - b) * (1 - y) + red[i] * r * (1 - b) * (1 - y) + blue[i] * (1 - r) * b * (1 - y) + violet[i] * r * b * (1 - y) + yellow[i] * (1 - r) * (1 - b) * y + orange[i] * r * (1 - b) * y + green[i] * (1 - r) * b * y + black[i] * r * b * y);
rgb_green exactly the same thing but for
My problem is that now I want to convert from RGB to RYB back. In other words, knowing the values of
rgb_blue I want to calculate the values of
b. So I need a kind of inverse function for this, but I don't know how to get it.
Any help is appreciated.