hsv颜色空间
答案:2 悬赏:0 手机版
解决时间 2021-03-11 04:18
- 提问者网友:棒棒糖
- 2021-03-10 16:38
rgb颜色空间通道0,1,2分别对应b,g,r。我想请问hsv呢?
最佳答案
- 五星知识达人网友:鱼芗
- 2021-03-10 17:51
HSV模式中的H、S、V分别表示色调、饱和度、亮度~~如果你是说ps里面的话,那里面是没有这种模式的,这是一种从视觉的角度定义的颜色模式。只要一打开电脑就浮现在你面前就是vsb颜色模式~~
RGB-->HSV色彩模式值的转换方式如下:
var_R = ( R / 255 ) //RGB from 0 to 255
var_G = ( G / 255 )
var_B = ( B / 255 )
var_Min = min( var_R, var_G, var_B ) //Min. value of RGB
var_Max = max( var_R, var_G, var_B ) //Max. value of RGB
del_Max = var_Max - var_Min //Delta RGB value
V = var_Max
if ( del_Max == 0 ) //This is a gray, no chroma...
{
H = 0 //HSV results from 0 to 1
S = 0
}
else //Chromatic data...
{
S = del_Max / var_Max
del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max
if ( var_R == var_Max ) H = del_B - del_G
else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R
if ( H < 0 ) ; H += 1
if ( H > 1 ) ; H -= 1
}
RGB-->HSV色彩模式值的转换方式如下:
var_R = ( R / 255 ) //RGB from 0 to 255
var_G = ( G / 255 )
var_B = ( B / 255 )
var_Min = min( var_R, var_G, var_B ) //Min. value of RGB
var_Max = max( var_R, var_G, var_B ) //Max. value of RGB
del_Max = var_Max - var_Min //Delta RGB value
V = var_Max
if ( del_Max == 0 ) //This is a gray, no chroma...
{
H = 0 //HSV results from 0 to 1
S = 0
}
else //Chromatic data...
{
S = del_Max / var_Max
del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max
if ( var_R == var_Max ) H = del_B - del_G
else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R
if ( H < 0 ) ; H += 1
if ( H > 1 ) ; H -= 1
}
全部回答
- 1楼网友:神鬼未生
- 2021-03-10 18:07
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来实现。
顺便提一下,另外一种直观颜色模型是hsl模型,该模型中前两个参数和hsv一样,而l表示亮度。它的三维表示为一双棱锥。因为用的不多,这里就不详细讲了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯