【问题标题】:HSI and HSV color spaceHSI 和 HSV 颜色空间
【发布时间】:2013-12-31 07:22:40
【问题描述】:

HSI 和 HSV 色彩空间有什么区别?我想使用 HSI 色彩空间,但我没有找到任何对 HSI 有用的材料。 HSI 和 HSV 一样吗?

【问题讨论】:

标签: image-processing computer-vision


【解决方案1】:

HSI、HSV 和 HSL 都是不同的色彩空间。三个模型之间的色调计算(据我所知)相同,并使用 6 片分段函数来确定它,或者对于精确到 1.2 度以内的更简单模型,可以使用atan((sqrt(3)⋅(G-B))/2(R-G-B)) .在大多数情况下,这两者是可以互换的,但通常 HSV 和 HSL 使用分段模型,而 HSI 通常使用 arctan 模型。可以使用不同的方程,但这些方程通常会为了简单或更快的计算而牺牲精度。

对于亮度/值/强度,三个空间使用略有不同的表示。

  • 通过简单地平均 RGB 值来计算强度:(1/3)⋅(R+G+B)
  • 亮度平均 RGB 的最小值和最大值:(1/2)⋅(max(R,G,B) + min(R,G,B))
  • 取值最简单,就是RGB的最大值:max(R,G,B)

在后续计算中使用时,L/V/I 被缩放到 0 到 1 之间的小数。

饱和度是三个模型差异最大的地方。对于所有 3,如果 I/V/L 为 0,则饱和度为 0(这是用于黑色,因此其表示是明确的),如果亮度最大,HSL 还会将饱和度设置为 0(因为对于 HSL,最大亮度意味着白色)。

  • HSL 和 HSV 占 RGB 的最小值和最大值,取两者之差:max(R,G,B) - min(R,G,B),此值有时称为色度 (C)。
  • HSV 然后获取色度并将其除以值以获得饱和度:C/V
  • HSL 将色度除以一个将亮度考虑在内的表达式:C/(1-abs(2L-1))
  • HSI 不使用色度,而只考虑min(R,G,B)min(R,G,B)/I

来源

【讨论】:

  • 谢谢,这很有帮助。我想知道 Smith 在 1978 年的原始论文(“色域变换对”,alvyray.com/Papers/CG/color78.pdf)中描述的三角形模型是否实际上描述了 HSI 模型,而不是论文中声明的 HSL 模型。
  • "强度是通过简单地平均 RGB 值来计算的:(1/3)(R+G+B)。强度平均 RGB 的最小值和最大值:(1/2)(max( R,G,B) + min(R,G,B))。” - 您写了两次“Intesity”时似乎有问题。
  • 您可以给出转换 RGB->HSI、RGB->HSV、RGB->HSL 的公式。这将使差异更加明显。
  • @moose 修复了 Intensity 被使用两次的问题,不知道我最初是怎么没注意到的。还为星号添加了转义,所以现在它不是随机斜体。这里给出的公式是从 RGB 到给定系统的转换,只是分离到每个组件。不过,我会添加一个重述/摘要以将它们整合在一起。
  • @MitchellCarroll 谢谢。你介意我改变一下格式吗?这主要是一个主观的事情,但我认为我对 StackExchange 上很多人喜欢的东西有很好的感觉。另外,我会将星号 * 替换为乘法点
【解决方案2】:

根据数学formula,当您尝试将 RGB 转换为其中一种时,HSV 和 HSI 的色调是相同的。

HSL 中的饱和度取决于 maxmin 和亮度,而 HSV 的饱和度仅取决于 maxmin。 (maxmin 是 R、G、B 空间中的最大和最小像素值)。

值是max,而亮度是(max + min)/2

附录:RGB->HSVRGB->HSL

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多