Skip to main content
added 77 characters in body
Source Link
M.K.
  • 163
  • 4

I'm interpolating RGB values by transforming them into HSV space and then back into RGB. I have trouble figuring out how to achieve interpolate(green, black, 0.5) = darkgreen.

Black has multiple representations in HSV, for example (0, 0, 0) and (30, 0, 0) are both black. When I convert the RGB black #000000, I turn it into (0, 0, 0). When I then interpolate it with green (120, 1, 1), I get (60, 0.5, 0.5) which is dark semi-saturated yellow. A similar issue exist for white.

Am I supposed to choose a different color space? I don't want to use LAB color space, because it's computationally expensive. How can I make this correct?

I'm interpolating RGB values by transforming them into HSV space and then back into RGB. I have trouble figuring out how to achieve interpolate(green, black, 0.5) = darkgreen.

Black has multiple representations in HSV, for example (0, 0, 0) and (30, 0, 0) are both black. When I convert the RGB black #000000, I turn it into (0, 0, 0). When I then interpolate it with green (120, 1, 1), I get (60, 0.5, 0.5) which is dark semi-saturated yellow. A similar issue exist for white.

Am I supposed to choose a different color space? How can I make this correct?

I'm interpolating RGB values by transforming them into HSV space and then back into RGB. I have trouble figuring out how to achieve interpolate(green, black, 0.5) = darkgreen.

Black has multiple representations in HSV, for example (0, 0, 0) and (30, 0, 0) are both black. When I convert the RGB black #000000, I turn it into (0, 0, 0). When I then interpolate it with green (120, 1, 1), I get (60, 0.5, 0.5) which is dark semi-saturated yellow. A similar issue exist for white.

Am I supposed to choose a different color space? I don't want to use LAB color space, because it's computationally expensive. How can I make this correct?

Source Link
M.K.
  • 163
  • 4

Interpolating HSV color with black

I'm interpolating RGB values by transforming them into HSV space and then back into RGB. I have trouble figuring out how to achieve interpolate(green, black, 0.5) = darkgreen.

Black has multiple representations in HSV, for example (0, 0, 0) and (30, 0, 0) are both black. When I convert the RGB black #000000, I turn it into (0, 0, 0). When I then interpolate it with green (120, 1, 1), I get (60, 0.5, 0.5) which is dark semi-saturated yellow. A similar issue exist for white.

Am I supposed to choose a different color space? How can I make this correct?