1. 程式人生 > 實用技巧 >顏色模型簡介: RGB與HSV, CMYK相互之間轉換公式整理

顏色模型簡介: RGB與HSV, CMYK相互之間轉換公式整理

RGB, CMYK, HSV顏色空間簡介

  • RGB

RGB,R紅色,G綠色,B藍色,適合計算機使用與人的視覺感知習慣不太相符。SHV(SHB,飽和度S/色度H/亮度B)更符合人的視覺習慣

  • CMYK

CMY(K): C青色,M洋紅,Y黃色,K黑色。最佳列印模式,相減混色,處理四個通路。RGB和CMY可以相互變換(RGB/CMY歸一化到1),但RGB顏色和CMYK顏色不能一一對應,存在黑色部分的替代取值問題

  • HSV

HSV對人來說是最直觀的顏色模型,H色相,物理意義是光的波長,不同光的波長呈現不同的色相。在HSV模型中,H是光譜顏色在首位相接的顏色環中的角度位置(0~360度),每一種顏色和它的補色相差180度。S是飽和度,S的範圍是[0,1],0代表灰色,1代表白光。S的物理意義是一束光可能有很多種不同波長的單色光構成,如果光的波長成分越多,則純度越低(白光),如果只有單色,則表示色彩的純度很高。V表示色彩的明亮程度,範圍[0,1],增加可以減小V(亮度),增加白色可以減小S(飽和度)。

V=1,S=1是對應於HSV圓錐模型的頂面圓周,這些被模型編碼為純色。一般而言人的視覺可以感知:128中色彩,130中飽和度,23中敏感度,16位儲存一個畫素:H7 S4 V5或者H6 S5 V5

HSV與RGB之間的相互轉換

  • 已知畫素的RGB值,求HSV模型的表示

m=max(r,g,b), n=min(r,g,b),其中r,g,b是歸一化的RGB顏色空間的值,求對應於HSV顏色空間的h,s,v

\\v = m\\ \\ s = \left\{\begin{matrix} (m-n)/m, \;m\neq 0& & \\ 0, \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;m=0& & \end{matrix}\right.\\ \\ h=\left\{\begin{matrix} 0,& s=0 \\ 60*(g-b)/(m-n),& r=m \;\&\;g\geqslant b\\ 360+60*(g-b)/()m-n),& r=m\;\&\;g\leqslant b\\ 120+60*(b-r)/(m-n) ,&g=m \\ 240+60*(r-g)/(m-n),&b=m \end{matrix}\right.

  • 已知畫素的HSV表示,求RGB模型的表示

已知該畫素的HSV顏色空間的值是H, S, V,其中H的範圍是[0, 360], S的範圍是[0, 1], V的範圍是[0, 1],求對應RGB顏色空間的r, g, b

C = V * S&\\ X = C * (1 -\left | (H / 60) \;mod\; 2 - 1 \right | )\\ m = V - C\\ (R, G, B) = \left\{\begin{matrix} (C, X, 0), &0\leqslant H\leqslant 60 \\ (X, C, 0),&60\leqslant H\leqslant 120 \\ (0, C, X),&120\leqslant H\leqslant 180 \\ (0, X, C),&180\leqslant H\leqslant 240 \\ (X, 0, C),&240\leqslant H\leqslant 300 \\ (C, 0, X),&300\leqslant H\leqslant 360 \end{matrix}\right.\\ r = (R + m) * 255\\ g = (G + m) * 255 \\ b = (B + m) * 255

CMYK與RGB之間的相互轉換

  • 已知畫素的CMYK表示,求RGB表示

已知CMYK顏色空間的值c,m,.y,k的範圍是[0, 1],RGB顏色空間的值r, g, b的範圍是[0, 255],CMYK到RGB的轉換如下:

r= 255 *(1 -c) *(1 -k)

g= 255 *(1 -m) *(1 -k)

b= 255 *(1 -y) *(1 -k)

  • 已知畫素的RGB表示,求CMYK的表示

已知RGB的值為R, G, B,範圍是[0, 255],求CMYK顏色空間的值c, m, y, k,對應的

R, G, B歸一化的值是r, g, b,範圍[0, 1]

r =R/ 255

g =G/ 255

b

= B / 255

k = 1 - max(r, g, b)

c= (1 -r-k) / (1 -k)

m= (1 -g-k) / (1 -k)

y= (1 -b-k) / (1 -k)

公式參考:

https://www.rapidtables.com/convert/color/index.html