一般的3D編程只需要使用RGB顏色空間就好了,但其實(shí)美術(shù)人員更多的是使用HSV(HSL),因?yàn)榭梢苑奖愕恼{(diào)整飽和度和亮度。
有時(shí)候美術(shù)需要程序幫助調(diào)整飽和度來達(dá)到特定風(fēng)格的渲染效果,這時(shí)候就需要轉(zhuǎn)換顏色空間了。
出處:
http://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4HSL 和 HSV(也叫做 HSB)是對
RGB 色彩空間中點(diǎn)的兩種有關(guān)系的表示,它們嘗試描述比 RGB 更準(zhǔn)確的感知顏色聯(lián)系,并仍保持在計(jì)算上簡單。HSL 表示 hue(
色相)、saturation(
飽和度)、lightness(
亮度),
HSV 表示 hue、saturation、value(
色調(diào)) 而 HSB 表示 hue、saturation、brightness(
明度)。
HSL 和 HSV 二者都把顏色描述在
圓柱體內(nèi)的點(diǎn),這個(gè)圓柱的中心軸取值為自底部的
黑色到頂部的
白色而在它們中間是的
灰色,繞這個(gè)軸的角度對應(yīng)于“色相”,到這個(gè)軸的距離對應(yīng)于“飽和度”,而沿著這個(gè)軸的距離對應(yīng)于“亮度”,“色調(diào)”或“明度”。
這兩種表示在用目的上類似,但在方法上有區(qū)別。二者在數(shù)學(xué)上都是圓柱,但 HSV(色相,飽和度,明度)在概念上可以被認(rèn)為是顏色的倒
圓錐體(黑點(diǎn)在下頂點(diǎn),白色在上底面圓心),HSL 在概念上表示了一個(gè)雙圓錐體和圓球體(白色在上頂點(diǎn),黑色在下頂點(diǎn),最大橫切面的圓心是半程灰色)。注意盡管在 HSL 和 HSV 中“色相”指稱相同的性質(zhì),它們的“飽和度”的定義是明顯不同的。
因?yàn)?HSL 和 HSV 是設(shè)備依賴的 RGB 的簡單變換,(h, s, l) 或 (h, s, v) 三元組定義的顏色依賴于所使用的特定
紅色、
綠色和
藍(lán)色“
加法原色”。每個(gè)獨(dú)特的 RGB 設(shè)備都伴隨著一個(gè)獨(dú)特的 HSL 和 HSV 空間。但是 (h, s, l) 或 (h, s, v) 三元組在被約束于特定 RGB 空間比如
sRGB 的時(shí)候就變成明確的了。
HSV 模型在 1978 年由
埃爾維·雷·史密斯創(chuàng)立。
動(dòng)機(jī)
藝術(shù)家有時(shí)偏好使用 HSV 顏色模型而不選擇
RGB 或
CMYK 模型,因?yàn)樗愃朴谌祟惛杏X顏色的方式。RGB 和 CMYK 分別是
加法原色和
減法原色模型,以原色組合的方式定義顏色,而 HSV 以人類更熟悉的方式封裝了關(guān)于顏色的信息:“這是什么顏色?深淺如何?明暗如何?”。HSL 顏色空間類似于 HSV,在某些方面甚至比它還好。
[
編輯]用途
HSV 色輪允許用戶快速的選擇眾多顏色。
HSV 模型的圓錐表示適合于在一個(gè)單一物體中展示整個(gè) HSV 色彩空間。
HSV 模型通常用于
計(jì)算機(jī)圖形應(yīng)用中。在用戶必須選擇一個(gè)顏色應(yīng)用于特定圖形元素各種應(yīng)用環(huán)境中,經(jīng)常使用 HSV
色輪。在其中,色相表示為圓環(huán);可以使用一個(gè)獨(dú)立的三角形來表示飽和度和明度。典型的,這個(gè)三角形的垂直軸指示飽和度,而水平軸表示明度。在這種方式下,選擇顏色可以首先在圓環(huán)中選擇色相,在從三角形中選擇想要的飽和度和明度。
HSV 模型的另一種可視方法是圓錐體。在這種表示中,色相被表示為繞圓錐中心軸的角度,飽和度被表示為從圓錐的橫截面的圓心到這個(gè)點(diǎn)的距離,明度被表示為從圓錐的橫截面的圓心到頂點(diǎn)的距離。某些表示使用了六棱錐體。這種方法更適合在一個(gè)單一物體中展示這個(gè) HSV 色彩空間;但是由于它的三維本質(zhì),它不適合在二維計(jì)算機(jī)界面中選擇顏色。
HSV 色彩空間還可以表示為類似于上述圓錐體的圓柱體,色相沿著圓柱體的外圓周變化,飽和度沿著從橫截面的圓心的距離變化,明度沿著橫截面到底面和頂面的距離而變化。這種表示可能被認(rèn)為是 HSV 色彩空間的更精確的數(shù)學(xué)模型;但是在實(shí)際中可區(qū)分出的飽和度和色相的級別數(shù)目隨著明度接近黑色而減少。此外計(jì)算機(jī)典型的用有限精度范圍來存儲 RGB 值;這約束了精度,再加上人類顏色感知的限制,使圓錐體表示在多數(shù)情況下更實(shí)用。
[
編輯]HSL 與 HSV 的比較
HSL 和 HSV 色彩空間比較。
HSL 類似于 HSV。對于一些人,HSL 更好的反映了“飽和度”和“亮度”作為兩個(gè)獨(dú)立參數(shù)的直覺觀念,但是對于另一些人,它的飽和度定義是錯(cuò)誤的,因?yàn)榉浅H岷偷膸缀醢咨念伾?HSL 可以被定義為是完全飽和的。對于 HSV 還是 HSL 更適合于人類用戶界面是有爭議的。
W3C 的
CSS3 規(guī)定聲稱“HSL 的優(yōu)點(diǎn)是它對稱于亮與暗(HSV 就不是這樣)…”,這意味著:
在 HSL 中,飽和度分量總是從完全飽和色變化到等價(jià)的灰色(在 HSV 中,在極大值 V 的時(shí)候,飽和度從全飽和色變化到白色,這可以被認(rèn)為是反直覺的)。
在 HSL 中,亮度跨越從黑色過選擇的色相到白色的完整范圍(在 HSV 中,V 分量只走一半行程,從黑到選擇的色相)。
在軟件中,通常以一個(gè)線性或圓形色相選擇器和在其中為選定的色相選取飽和度和明度/亮度的一個(gè)二維區(qū)域(通常為方形或三角形)形式提供給用戶基于色相的顏色模型(HSV 或 HSL)。通過這種表示,在 HSV 和 HSL 之間的區(qū)別就無關(guān)緊要了。但是很多程序還允許你通過線性滑塊或數(shù)值錄入框來選擇顏色的明度/亮度,而對于這些控件通常使用要么 HSL 要么 HSV(而非二者)。HSV 傳統(tǒng)上更常用。下面是一些例子:
GIMP 支持在 HSV 色彩空間內(nèi)的選取顏色的多種方法,包括帶有色相滑塊的色輪和色方。
使用 HSV (HSB)的應(yīng)用: Apple
Mac OS X 系統(tǒng)顏色選擇器(有一個(gè) H/S 顏色碟和一個(gè) V 滑塊)
Xara XtremePaint.NET(有一個(gè) H/S 顏色碟和一個(gè) V 滑塊)
Adobe 圖形應(yīng)用程序(
Illustrator,
Photoshop,等等)
Turbo Photo使用 HSL 的應(yīng)用:
CSS3 規(guī)定
Inkscape(從版本 0.42 開始)
Macromedia StudioMicrosoft Windows 系統(tǒng)顏色選擇器(包括
Microsoft Paint)
Paint Shop ProImageMagick使用 HSV 和 HSL 二者的應(yīng)用:
Pixel image editor(從 Beta5 開始)
PixiaBryceGIMP(HSV 用于顏色選擇,HSL 用于顏色調(diào)整)
[
編輯]與其他顏色模型的比較
HSV 顏色空間在技術(shù)上不支持到
輻射測定中測量的物理
能量譜密度的一一映射。所以一般不建議做在 HSV 坐標(biāo)和物理光性質(zhì)如
波長和
振幅之間的直接比較。
[
編輯]形式定義
HSL 和 HSV 在數(shù)學(xué)上定義為在 RGB 空間中的顏色的 R, G 和 B 的坐標(biāo)的變換。
[
編輯]從 RGB 到 HSL 或 HSV 的轉(zhuǎn)換
設(shè) (r, g, b) 分別是一個(gè)顏色的紅、綠和藍(lán)坐標(biāo),它們的值是在 0 到 1 之間的實(shí)數(shù)。設(shè) max 等價(jià)于 r, g 和 b 中的最大者。設(shè) min 等于這些值中的最小者。要找到在 HSL 空間中的 (h, s, l) 值,這里的 h ∈ [0,360)是角度的色相角,而 s, l ∈ [0,1] 是飽和度和亮度,計(jì)算為:
h 的值通常規(guī)范化到位于 0 到360°之間。而 h = 0 用于 max = min 的(就是灰色)時(shí)候而不是留下 h 未定義。
HSL 和 HSV 有同樣的
色相定義,但是其他分量不同。HSV 顏色的 s 和 v 的值定義如下:
[
編輯]從 HSL 到 RGB 的轉(zhuǎn)換
給定 HSL 空間中的 (h, s, l) 值定義的一個(gè)顏色,帶有 h 在指示色相角度的值域 [0,360)中,分別表示飽和度和亮度的s 和 l 在值域 [0, 1] 中,相應(yīng)在 RGB 空間中的 (r, g, b) 三原色,帶有分別對應(yīng)于紅色、綠色和藍(lán)色的 r, g 和 b 也在值域 [0, 1] 中,它們可計(jì)算為:
首先,如果 s = 0,則結(jié)果的顏色是非彩色的、或灰色的。在這個(gè)特殊情況,r, g 和 b 都等于 l。注意 h 的值在這種情況下是未定義的。
當(dāng) s ≠ 0 的時(shí)候,可以使用下列過程:
[1](h 規(guī)范化到值域 [0,1)內(nèi))
對于每個(gè)顏色
向量 Color = (ColorR, ColorG, ColorB) = (r, g, b),
[
編輯]從 HSV 到 RGB 的轉(zhuǎn)換
類似的,給定在 HSV 中 (h, s, v) 值定義的一個(gè)顏色,帶有如上的 h,和分別表示飽和度和明度的 s 和 v 變化于 0 到 1 之間,在 RGB 空間中對應(yīng)的 (r, g, b) 三原色可以計(jì)算為:
對于每個(gè)顏色向量 (r, g, b),
[
編輯]例子
展示的 RGB 值的范圍是 0.0 到 1.0。
RGBHSLHSV結(jié)果
(1, 0, 0)(0°, 1, 0.5)(0°, 1, 1)
(0.5, 1, 0.5)(120°, 1, 0.75)(120°, 0.5, 1)
(0, 0, 0.5)(240°, 1, 0.25)(240°, 1, 0.5)