HSV颜色空间
来源:互联网 发布:电火花线切割编程 编辑:程序博客网 时间:2024/06/02 02:27
作者:masikkk
转自:http://blog.csdn.net/masibuaa/article/details/6316684
H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。
纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。
V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。
RGB转化到HSV的算法:
max=max(R,G,B)
min=min(R,G,B)
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=max(R,G,B)
S=(max-min)/max
HSV转化到RGB的算法
if s = 0
R=G=B=V
else
H /= 60;
i = INTEGER(H)
f = H - i
a = V * ( 1 - s )
b = V * ( 1 - s * f )
c = V * ( 1 - s * (1 - f ) )
switch(i)
case 0: R = V; G = c; B = a;
case 1: R = b; G = v; B = a;
case 2: R = a; G = v; B = c;
case 3: R = a; G = b; B = v;
case 4: R = c; G = a; B = v;
case 5: R = v; G = a; B = b;
HSV对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色彩角H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。例如,要得到深蓝色,V=0.4 S=1 H=240度。要得到淡蓝色,V=1 S=0.4 H=240度。
一般说来,人眼最大能区分128种不同的色彩,130种色饱和度,23种明暗度。如果我们用16Bit表示HSV的话,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以满足我们的需要了。
由于HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,如Photoshop(在Photoshop中叫HSB)等等,但这也决定了它不适合使用在光照模型中,许多光线混合运算、光强运算等都无法直接使用HSV来实现。
- HSV颜色空间
- HSV颜色空间
- 关于HSV颜色空间
- 颜色空间---HSV
- HSV颜色空间
- HSV颜色空间
- HSV颜色空间
- HSV颜色空间
- HSV颜色空间
- RGB-HSV颜色空间
- HSV颜色空间
- HSV颜色空间
- HSV YCrCb 颜色空间
- HSV颜色空间
- HSV颜色空间
- HSV颜色空间颜色阈值
- RGB和HSV颜色空间
- RGB和HSV颜色空间
- 尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
- Android系列教程之十二:Intents and Intent Filters(三)
- 特殊符号
- YUV颜色空间
- HTTPS是如何保证连接安全:每位Web开发者都应知道的
- HSV颜色空间
- Bug 9239863 - Excessive "library cache:mutex X" contention on hot objects (文档 ID 9239863.8)
- Android中关于线程使用的几点注意事项
- Qt4.8下应用OpenCV2.4.4搭建环境详细步骤(win7系统)
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- win7下搭建qt+opencv编程环境详细步骤...我的血泪史,希望能帮到正在学习的人!
- 数据结构实验之栈四:括号匹配
- android调用平台功能
- Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等