圖像處理之顏色空間小結

1.介紹

    在圖像處理中,我們會遇到各式各樣的顏色空間,比如RGB、HLS、HSV、HSB、YCrCb、CIE XYZ、CIE Lab ,那麼它們的區別和應用場所又在哪裏呢?

    1)RGB是生活中最常見的顏色空間,其中,R代表紅色通道,G代表綠色通道,B代表藍色通道,它們之間的相互搭配組合256*256*256,幾乎可以包括人類視力所能感知的所有顏色。應用場所:一般的彩色圖片都是用RGB三通道來表示,另外,在深度學習領域,很多圖片的輸入也是RGB三通道的,比如目標跟蹤、圖像超分等。

    2)在HLS顏色空間裏,其中,H代表色相通道,L代表飽和度通道,S代表亮度通道

    3)HSV、HSB是同樣的一個顏色空間,其中,H代表色相,S代表飽和度,V代表明度。如果我們不仔細辨別HSV和HSB,如果它們就是一個東西,在原理和表現上,HSL 和 HSB 中的 H(色相) 完全一致,但二者的 S(飽和度)不一樣, L 和 B (明度 )也不一樣:

  • HSB 中的 S 控制純色中混入白色的量,值越大,白色越少,顏色越純;
  • HSB 中的 B 控制純色中混入黑色的量,值越大,黑色越少,明度越高
  • HSL 中的 S 和黑白沒有關係,飽和度不控制顏色中混入黑白的多寡;
  • HSL 中的 L 控制純色中的混入的黑白兩種顏色。

    另外,有了RGB通道,又爲什麼要引入HSL和HSB通道呢?因爲,人去描述一個顏色的時候,不僅僅會說是什麼顏色,也會說其明暗,因此他們的應用場景常見如藝術家,此時,我在想,通過深度學習做的風格轉移,如果用此通道作爲輸入,其結果又會怎麼樣呢?

    4)YCrCb,它的另外一個大名是YUV,其中,其中“Y”表示明亮度,也就是灰階值;而“U”和“V” 表示的則是色度,作用是描述影像色彩及飽和度,用於指定像素的顏色。YUV常用於視頻傳輸中,而且有一個很好的優點是可以兼容黑白電視機(只傳Y通道即可)

    5)在CIE XYZ顏色空間裏面,其中X、Y、Z是R、G、B的線性變換的結果,因爲Y不僅僅包含綠色,並且由於人眼感受綠色,要比紅色和藍色要亮,因此Y也被定義爲亮度。其作用就是在RGB系統的基礎上,用數學方法,選用三個理想的原色來代替實際的三原色,從而將CIE-RGB系統中的光譜三刺激值和色度座標r、g、b均變爲正值

    6)在CIE Lab顏色通道里面,它由三個要素組成,一個要素是亮度(L),a 和b是兩個顏色通道。a包括的顏色是從深綠色(低亮度值)到灰色(中亮度值)再到亮粉紅色(高亮度值);b是從亮藍色(低亮度值)到灰色(中亮度值)再到黃色(高亮度值)。因此,這種顏色混合後將產生具有明亮效果的色彩。這個顏色通道是不依賴光線,也不依賴於顏料

 

2.代碼

import matplotlib.pyplot as plt
import cv2

img_bgr = cv2.imread('kodim04.png')  # BGR

img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
plt.subplot(2, 3, 1)
plt.imshow(img_rgb);
plt.axis('off');
plt.title('RGB')

img_hls = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2HLS)
plt.subplot(2, 3, 2)
plt.imshow(img_hls);
plt.axis('off');
plt.title('HLS')

img_hsv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2HSV)
plt.subplot(2, 3, 3)
plt.imshow(img_hsv);
plt.axis('off');
plt.title('HSV')

img_yuv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2YUV)
plt.subplot(2, 3, 4)
plt.imshow(img_yuv);
plt.axis('off');
plt.title('YUV')

img_xyz = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2XYZ)
plt.subplot(2, 3, 5)
plt.imshow(img_xyz);
plt.axis('off');
plt.title('XYZ')

img_lab = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2LAB)
plt.subplot(2, 3, 6)
plt.imshow(img_lab);
plt.axis('off');
plt.title('LAB')

plt.show()

3.效果

 

4.參考資料

    https://blog.csdn.net/u010712012/article/details/85240100

    百度百科

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章