hsv的算法是怎么樣的
hsv的算法是怎么樣的
HSV是根據(jù)顏色的直觀特性由A. R. Smith在1978年創(chuàng)建的一種顏色空間,,也稱六角錐體模型,以下是由學(xué)習(xí)啦小編整理關(guān)于什么是hsv的內(nèi)容,希望大家喜歡!
hsv的簡介
色調(diào)H
用角度度量,取值范圍為0°~360°,從紅色開始按逆時(shí)針方向計(jì)算,紅色為0°,綠色為120°,藍(lán)色為240°。它們的補(bǔ)色是:黃色為60°,青色為180°,品紅為300°;
飽和度S
飽和度S表示顏色接近光譜色的程度。一種顏色,可以看成是某種光譜色與白色混合的結(jié)果。其中光譜色所占的比例愈大,顏色接近光譜色的程度就愈高,顏色的飽和度也就愈高。飽和度高,顏色則深而艷。光譜色的白光成分為0,飽和度達(dá)到最高。通常取值范圍為0%~100%,值越大,顏色越飽和。
明度V
明度表示顏色明亮的程度,對(duì)于光源色,明度值與發(fā)光體的光亮度有關(guān);對(duì)于物體色,此值和物體的透射比或反射比有關(guān)。通常取值范圍為0%(黑)到100%(白)。
RGB和CMY顏色模型都是面向硬件的,而HSV(Hue Saturation Value)顏色模型是面向用戶的。
HSV模型的三維表示從RGB立方體演化而來。設(shè)想從RGB沿立方體對(duì)角線的白色頂點(diǎn)向黑色頂點(diǎn)觀察,就可以看到立方體的六邊形外形。六邊形邊界表示色彩,水平軸表示純度,明度沿垂直軸測量。
hsv的算法
RGB轉(zhuǎn)化到HSV的算法:
max=max(R,G,B);
min=min(R,G,B);
V=max(R,G,B);
S=(max-min)/max;
if (R = max) H =(G-B)/(max-min)* 60;
if (G = max) H = 120+(B-R)/(max-min)* 60;
if (B = max) H = 240 +(R-G)/(max-min)* 60;
if (H < 0) H = H+ 360;
HSV轉(zhuǎn)化到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對(duì)用戶來說是一種直觀的顏色模型。我們可以從一種純色彩開始,即指定色彩角H,并讓V=S=1,然后我們可以通過向其中加入黑色和白色來得到我們需要的顏色。增加黑色可以減小V而S不變,同樣增加白色可以減小S而V不變。例如,要得到深藍(lán)色,V=0.4 S=1 H=240度。要得到淡藍(lán)色,V=1 S=0.4 H=240度。
一般說來,人眼最大能區(qū)分128種不同的色彩,130種色飽和度,23種明暗度。如果我們用16Bit表示HSV的話,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以滿足我們的需要了。
由于HSV是一種比較直觀的顏色模型,所以在許多圖像編輯工具中應(yīng)用比較廣泛,如Photoshop(在Photoshop中叫HSB)等等,但這也決定了它不適合使用在光照模型中,許多光線混合運(yùn)算、光強(qiáng)運(yùn)算等都無法直接使用HSV來實(shí)現(xiàn)。
順便提一下,另外一種直觀顏色模型是HSL模型,該模型中前兩個(gè)參數(shù)和HSV一樣,而L表示亮度。它的三維表示為一雙棱錐。
hsv的比較
HSL 類似于 HSV。對(duì)于一些人,HSL 更好的反映了“飽和度”和“亮度”作為兩個(gè)獨(dú)立參數(shù)的直覺觀念,但是對(duì)于另一些人,它的飽和度定義是錯(cuò)誤的,因?yàn)榉浅H岷偷膸缀醢咨念伾?HSL 可以被定義為是完全飽和的。對(duì)于 HSV 還是 HSL 更適合于人類用戶界面是有爭議的。
W3C的CSS3 規(guī)定聲稱“HSL 的優(yōu)點(diǎn)是它對(duì)稱于亮與暗(HSV 就不是這樣)…”,這意味著:
在 HSL 中,飽和度分量總是從完全飽和色變化到等價(jià)的灰色(在 HSV 中,在極大值 V 的時(shí)候,飽和度從全飽和色變化到白色,這可以被認(rèn)為是反直覺的)。
在 HSL 中,亮度跨越從黑色過選擇的色相到白色的完整范圍(在 HSV 中,V 分量只走一半行程,從黑到選擇的色相)。
在軟件中,通常以一個(gè)線性或圓形色相選擇器和在其中為選定的色相選取飽和度和明度/亮度的一個(gè)二維區(qū)域(通常為方形或三角形)形式提供給用戶基于色相的顏色模型(HSV 或 HSL)。通過這種表示,在 HSV 和 HSL 之間的區(qū)別就無關(guān)緊要了。但是很多程序還允許你通過線性滑塊或數(shù)值錄入框來選擇顏色的明度/亮度,而對(duì)于這些控件通常使用要么 HSL 要么 HSV(而非二者)。HSV 傳統(tǒng)上更常用。
看過“hsv的算法”的人還看了:
1.單純皰疹是什么
2.皰疹是怎么形成的
4.皰疹是怎樣形成的