RGB和HSV颜色转换
2008-07-21 21:50
288 查看
RGB和HSV颜色转换
标签:integer算法工具c360
2008-07-21 21:50
9701人阅读 评论(4)
收藏
举报
本文章已收录于:
分类:
图像处理(13)
作者同类文章X
H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。
纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。
V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。
RGB转化到HSV的算法:
1: max=max(R,G,B) 2: min=min(R,G,B) 3: if R = max, H = (G-B)/(max-min) 4: if G = max, H = 2 + (B-R)/(max-min) 5: if B = max, H = 4 + (R-G)/(max-min) 6: 7: H = H * 60 8: if H < 0, H = H + 360 9: 10: V=max(R,G,B) 11: S=(max-min)/max |
1: if s = 0 2: R=G=B=V 3: else 4: H /= 60; 5: i = INTEGER(H) 6: 7: f = H - i 8: a = V * ( 1 - s ) 9: b = V * ( 1 - s * f ) 10: c = V * ( 1 - s * (1 - f ) ) 11: 12: switch(i) 13: case 0: R = V; G = c; B = a; 14: case 1: R = b; G = v; B = a; 15: case 2: R = a; G = v; B = c; 16: case 3: R = a; G = b; B = v; 17: case 4: R = c; G = a; B = v; 18: case 5: R = v; G = a; B = b; |
一般说来,人眼最大能区分128种不同的色彩,130种色饱和度,23种明暗度。如果我们用16Bit表示HSV的话,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以满足我们的需要了。
由于HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,如Photoshop(在Photoshop中叫HSB)等等,但这也决定了它不适合使用在光照模型中,许多光线混合运算、光强运算等都无法直接使用HSV来实现。
顺便提一下,另外一种直观颜色模型是HSL模型,该模型中前两个参数和HSV一样,而L表示亮度。它的三维表示为一双棱锥。
顶0踩0
上一篇Nebula3学习笔记(7): 网络系统
下一篇Nebula3学习笔记(8): 脚本系统
相关文章推荐
- Python RGB 和HSV颜色相互转换
- HSV与RGB颜色空间的转换
- 【OpenCV】颜色空间RGB与HSV(HSL)的转换
- RGB与HSV之间的转换公式及颜色表
- 不同颜色空间的图像转换(RGB到HSV,YUV,Lab)
- 【C#/算法】RGB、HSV、HSL颜色模型的互相转换
- 颜色空间RGB与HSV(HSL)的转换
- 【OpenCV】颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- RGB和HSV颜色转换
- 颜色空间RGB与HSV(HSL)的转换
- RGB和HSV颜色转换
- 计算机中的颜色IX——总述:RGB和HSV快速转换
- 颜色空间RGB与HSV(HSL)的转换
- 颜色空间RGB与HSV(HSL)的转换
- RGB颜色空间转换为HSV空间颜色值
- [导入]RGB和HSV颜色转换
- 颜色空间RGB与HSV(HSL)的转换
- RGB、HSB\HSV、HSL三种颜色空间的原理理解与转换