【问题标题】:Convert YUV into HSL or HSV bypassing the RGB step绕过 RGB 步骤将 YUV 转换为 HSL 或 HSV
【发布时间】:2017-09-28 02:55:38
【问题描述】:

维基百科和大量的在线资源为从/到 RGB 的各种色彩空间转换提供了详细而丰富的帮助。我需要的是直接的 YUV->HSL/HSV 转换。

其实我需要的只是色调(不要太在意饱和度或亮度亮度/值)。换句话说,我只需要计算给定 YUV 颜色的“颜色角度”。

任何语言的代码都足够了,尽管我更喜欢 C 风格的语法。

请注意,我所说的 YUV 是指 Y′UV,也就是 YCbCr(如果这有什么不同的话)。

【问题讨论】:

  • 您应该知道我们不能推荐任何库或软件来执行此操作。我们可以帮助您编写代码,但我们也无法为您编写代码。
  • @Rob 您是否建议将其移至其他 SE 站点?如果是这样 - 哪一个? (我可以自己写代码,没什么大不了的。我需要颜色空间转换算法方面的帮助)
  • 好问题。有一个图形 SE 和一个数学 SE。我自己会对这个解决方案感兴趣,尽管我隐藏了一些几十年来没有看过的算法。
  • 我都想到了(加上“照片/视频”),但似乎都不合适,TBH。这就是为什么这个问题在这里结束 - 我希望我有更好的机会吸引那些对自己“对此解决方案感兴趣”的人,就像你上面所说的那样。
  • 看看游戏的。那里有一些相同的人。不知道其他SE网站对推荐有没有同样的限制。

标签: colors yuv hsv color-space hsl


【解决方案1】:

虽然 YUV->RGB 颜色空间转换是线性的(与“可以表示为矩阵运算”相同),但 RGB->HSL 不是。因此,不可能将两者组合成一个操作。

感谢 Kel Solar 为我确认这一点。

供参考:

请注意,在数学上,色调的计算是分段写入的,因为“底角”取决于颜色所在的扇区,而“主要颜色”由 max(R, G, B) 表达式驱动。

【讨论】:

  • 我想补充一点,尽管 Y'CbCr 和 RGB 之间的关系是线性的,但实际上是 Y'CbCr 到 R'G'B' 的转换。这里的素数表示被变换的分量的非线性。 Y'CbCr 的 Y' 代表 Luma,而不是 Luminance。这意味着您可能还想在转换为 HSV 之前将非线性编码的 R'G'B' 颜色解码为线性 RGB 颜色。
【解决方案2】:

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

【讨论】:

  • 只需阅读专利,然后......它与查找表有何不同? ;-) 这也使得它的空间要求在任何 RAM 有限的应用程序中都不实用
猜你喜欢
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 2021-06-29
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多