顏色空間,可以清晰立體地表達顏色。不同的顏色空間,使用場景也不相同。如何區(qū)分不同的顏色空間呢?本文簡單介紹了三種常見的顏色空間:RGB、HSV和HSL,僅供參考。
?
RGB 顏色空間由三個通道表示一幅圖像,分別為紅色(R),綠色(G)和藍色(B)。任何顏色都與這三個分量有關(guān),而且這三個分量是高度相關(guān)的,所以連續(xù)變換顏色時并不直觀,想對圖像的顏色進行調(diào)整需要更改這三個分量才行。這三種顏色的不同組合可以形成幾乎所有的其他顏色。
自然環(huán)境下獲取的圖像容易受自然光照、遮擋和陰影等情況的影響,即對亮度比較敏感。而 RGB 顏色空間的三個分量都與亮度密切相關(guān),即只要亮度改變,三個分量都會隨之相應(yīng)地改變,而沒有一種更直觀的方式來表達。
但是人眼對于這三種顏色分量的敏感程度是不一樣的,在單色中,人眼對紅色最不敏感,藍色最敏感,所以 RGB 顏色空間是一種均勻性較差的顏色空間。如果顏色的相似性直接用歐氏距離來度量,其結(jié)果與人眼視覺會有較大的偏差。對于某一種顏色,我們很難推測出較為精確的三個分量數(shù)值來表示。
RGB 顏色空間是圖像處理中最基本、最常用、面向硬件的顏色空間,比較容易理解。但是RGB 顏色空間適合于顯示系統(tǒng),卻并不適合于圖像處理。
?
在圖像處理中使用較多的是 HSV 顏色空間,它比 RGB 更接近人們對彩色的感知經(jīng)驗。非常直觀地表達顏色的色調(diào)、鮮艷程度和明暗程度,方便進行顏色的對比。
在 HSV 顏色空間下,比 BGR 更容易跟蹤某種顏色的物體,常用于分割指定顏色的物體。
HSV 表達彩色圖像的方式由三個部分組成:
Hue(色調(diào)、色相)
Saturation(飽和度、色彩純凈度)
Value(明度)
用這個圓柱體來表示 HSV 顏色空間,圓柱體的橫截面可以看做是一個極坐標系 ,H 用極坐標的極角表示,S 用極坐標的極軸長度表示,V 用圓柱中軸的高度表示。
Hue 用角度度量,取值范圍為0~360°,表示色彩信息,即所處的光譜顏色的位置。,表示如下:
顏色圓環(huán)上所有的顏色都是光譜上的顏色,從紅色開始按逆時針方向旋轉(zhuǎn),Hue=0 表示紅色,Hue=120 表示綠色,Hue=240 表示藍色等等。
在 GRB中 顏色由三個值共同決定,比如黃色為即 (255,255,0);在HSV中,黃色只由一個值決定,Hue=60即可。
其中水平方向表示飽和度,飽和度表示顏色接近光譜色的程度。飽和度越高,說明顏色越深,越接近光譜色飽和度越低,說明顏色越淺,越接近白色。飽和度為0表示純白色。取值范圍為0~100%,值越大,顏色越飽和。
豎直方向表示明度,決定顏色空間中顏色的明暗程度,明度越高,表示顏色越明亮,范圍是 0-100%。明度為0表示純黑色(此時顏色最暗)。
可以通俗理解為:
在Hue一定的情況下,飽和度減小,就是往光譜色中添加白色,光譜色所占的比例也在減小,飽和度減為0,表示光譜色所占的比例為零,導(dǎo)致整個顏色呈現(xiàn)白色。
明度減小,就是往光譜色中添加黑色,光譜色所占的比例也在減小,明度減為0,表示光譜色所占的比例為零,導(dǎo)致整個顏色呈現(xiàn)黑色。
?
HLS 和 HSV 比較類似,這里一起介紹。HLS 也有三個分量,hue(色相)、saturation(飽和度)、lightness(亮度)。
HLS 和 HSV 的區(qū)別就是最后一個分量不同,HLS 的是 light(亮度),HSV 的是 value(明度)??梢缘竭@個 網(wǎng)頁 嘗試一下。
HLS 中的 L 分量為亮度,亮度為100,表示白色,亮度為0,表示黑色;HSV 中的 V 分量為明度,明度為100,表示光譜色,明度為0,表示黑色。
提取白色物體時,使用 HLS 更方便,因為 HSV 中的Hue里沒有白色,白色需要由S和V共同決定(S=0, V=100)。而在 HLS 中,白色僅由亮度L一個分量決定。所以檢測白色時使用 HSL 顏色空間更準確。
?
因此,RGB顏色空間更加面向于工業(yè),而HSV更加面向于用戶,大多數(shù)做圖像識別這一塊的都會運用HSV顏色空間,因為HSV顏色空間表達起來更加直觀!