Tekson

禧之狼

博客园 首页 联系 订阅 管理

RGB->HSV

H:色调,即所处的光谱颜色的位置,范围从0º360º。该参数用角度量来表示,红(0º)、绿(120º)、蓝(240º)分别相隔120º。互补色分别相差180º

S:饱和度(纯度),为一比例值,范围从01。它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度;S=1时为纯色。

V:色彩的明亮程度,范围从01。有一点要注意:它和亮度之间并没有直接的联系

RGB转化到HSV的算法:

【注】在作变换前一定要先将RGB的数值进行归一化。

max=max(R,G,B)

min=min(R,G,B)

H

if R = max, H = (G-B)/(max-min)

if G = max, H = 2 + (B-R)/(max-min)

if B = max, H = 4 + (R-G)/(max-min)

H = H * 60

if H < 0, H = H + 360

V

V=max(R, G, B)

S

S=(max-min)/max

【例示】

1. 纯红:

HSV(0º, 1, 1) -> RGB(1, 0, 0)

2. 淡红:

HSV(0º, 0.5, 1) -> RGB(1, 0.5, 0.5)

说明:比较纯红和淡红之间的区别,可以发现:淡红的GB分量增大而R分量不变,于是亮度增加;但是在HSV模型中,V分量并没有增加,反而是饱和度降低了。可见,在纯色的基础上增加亮度可以降低色彩的饱和度,也即色彩的纯度降低(当前饱和度计算式:(1-0.5)/1=0.5)。

当然,这只是一个亮度值没有变的特例,但至少证明了HSV色彩模型中的V分量与亮度之间并没有直接的联系

3. 深红:

HSV(0º, 1, 0.5) -> RGB(0.5, 0, 0)

说明:在纯色的基础上降低亮度,会使V分量直接减少。解释:纯色(当前为纯红色)在RGB模型中只有R分量非零,故降低亮度等价于减少R分量的值,而V=max(R, G, B)=R,于是V分量减少。

这说明HSV色彩模型中的V分量与亮度之间的联系要具体情况具体分析,并没有一个简单的正比关系。

事实上,V=max(R,G,B),而亮度=(R2+G2+B2)1/2

HSVHSL

这两个色彩模型在思想上基本相似,区别仅表现在各分量的具体计算上。

HSV中的S分量从01分别对应黑色和纯色;而HSLS分量从00.5再到1分别对应黑色、纯色和白色。可见,后者与人眼的直观感觉有差别,而前者更好地体现了人眼视觉系统的真实感受。

posted on 2009-06-25 08:37  珍宝老王  阅读(3673)  评论(0编辑  收藏  举报