HSI和HSV颜色空间

14

HSI和HSV颜色空间的区别是什么?我想使用HSI颜色空间,但没有找到任何有用的HSI材料。HSI是否与HSV相同?


1
它在维基百科上有描述(http://en.wikipedia.org/wiki/HSI_color_space) - Ray Toal
2个回答

23
HSI、HSV和HSL是不同的颜色空间。根据我所找到的资料,色调计算在这三种模型中是相同的,它使用一个由6个部分组成的分段函数来确定,或者可以使用一个更简单的模型,该模型的精度在1.2度以内,公式为atan((sqrt(3)⋅(G-B))/2(R-G-B))。在大多数情况下,这两种模型是可以互换的,但通常HSV和HSL使用分段模型,而HSI通常使用反正切模型。可能会使用不同的方程,但通常会在精度、简单性或计算速度之间做出取舍。
对于亮度/值/强度,这三个空间使用稍有不同的表示方法。
- 强度通过简单地对RGB值求平均来计算:(1/3)⋅(R+G+B)。 - 亮度通过对RGB的最小值和最大值求平均来计算:(1/2)⋅(max(R,G,B) + min(R,G,B))。 - 值是最简单的,它是RGB中最大值的数值:max(R,G,B)
在后续计算中,亮度/值/强度会被缩放为0到1之间的小数。
饱和度是这三种模型中最不同的地方。对于所有三种模型,如果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)1 - min(R,G,B)/I
来源
维基百科:HSL和HSV 维基百科:色调

谢谢,这很有帮助。我想知道史密斯1978年原始论文中描述的三角形模型(“色域变换对”,http://alvyray.com/Papers/CG/color78.pdf)是否实际上描述了HSI模型,而不是在论文中声明的HSL模型。 - Benjamin Gudehus
强度是通过简单地平均RGB值来计算的:(1/3)(R+G+B)。 强度平均了RGB的最小值和最大值:(1/2)(max(R,G,B) + min(R,G,B))。 - Martin Thoma
你可以提供将RGB转换为HSI、RGB转换为HSV、RGB转换为HSL的公式。这将使差异更加明显。 - Martin Thoma
1
@moose 修复了强度被重复使用的问题,不确定为什么我最初没有发现。此外,添加了星号的转义字符,因此现在不会随机变成斜体字了。这里给出的公式是从RGB到给定系统的转换,只是分别应用于每个组件。不过,我会添加一个概述/总结来将所有内容汇总在一起。 - Mitchell Carroll
@MitchellCarroll 谢谢。你介意我稍微改一下格式吗?这主要是一个主观的问题,但我认为我对StackExchange上许多人喜欢的东西有很好的感觉。此外,我会用乘法点 替换星号 * - Martin Thoma
@moose 尽管去做,我不精通格式,欢迎任何帮助。当我解释事情时,我倾向于写类似于这篇文章的大段文字,但我知道那不是最容易阅读的。我甚至不知道乘法点可用于使用,所以请随意添加。 - Mitchell Carroll

3
从数学公式来看,当你试图将RGB转换为HSV或HSI时,Hues是相同的。
在HSL中,饱和度取决于maxmin和亮度,而在HSV中,饱和度仅取决于maxmin。(maxmin是R、G、B空间中的最大和最小像素值)。
值是max,而亮度是(max + min)/2
附录:RGB->HSVRGB->HSL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接