绕过 RGB 步骤将 YUV 转换为 HSL 或 HSV

Convert YUV into HSL or HSV bypassing the RGB step

Wikipedia 和大量在线资源提供了有关各种颜色 space 转换 from/to RGB 的详细而丰富的帮助。我需要的是直YUV->HSL/HSV转换.

实际上我需要的只是色调(不太关心饱和度或亮度Lightness/Value)。换句话说,我只需要为给定的 YUV 颜色计算 "color angle"。

任何语言的代码都可以,但我更喜欢 C 风格的语法。

请注意,我所说的 YUV 具体指的是 Y′UV,a.k.a。 YCbCr(如果这有什么不同的话)。

虽然 YUV->RGB 颜色空间转换 是线性的(与 "can be expressed as a matrix operation" 相同),但 RGB->HSL 不是 .因此不可能将两者合并为一个操作。

谢谢 Kel Solaar 为我确认这一点。

供参考:

请注意,从数学上讲,Hue 的计算是分段编写的,因为 "base angle" 取决于颜色所在的扇区,而 "major color" 由 max(R, G, B) 表达式驱动。

我认为他们来自不同的兴趣世界。这是一项google专利
https://patents.google.com/patent/CN105847775A/en