讀古今文學網 > 刷臉背後:人臉檢測 人臉識別 人臉檢索 > 2.2 顏色空間 >

2.2 顏色空間

根據數字圖像色彩表示方式的不同,數字圖像有幾種不同的顏色空間(顏色模型),如RGB顏色空間、HSV顏色空間、YUV顏色空間等。下面就具體介紹一下這幾種顏色空間,以及它們在MATLAB中的轉換。

2.2.1 RGB顏色空間

RGB顏色空間是由Red(紅色)、Green(綠色)、Blue(藍色)組成的一種顏色空間。紅、綠、藍這三種顏色被國際照明委員會規定為三原色,這三原色的不同份量比例可以合成任何其他顏色。RGB顏色空間類似一個三維的坐標系,紅色、綠色和藍色分別是一個坐標軸,每種顏色都是空間中的點,由三個數值組成,分別表示在紅色、綠色、藍色上的份量。(0,0,0)表示純黑色,(255,255,255)表示純白色,(0,0,255)表示藍色。

2.2.2 HSV顏色空間

HSV顏色空間由Hue(色調)、Saturation(飽和度)和Value(亮度)組成。HSV顏色空間是1978年提出的,它是一種主觀的顏色空間。HSV顏色空間類似一個六角椎體,如圖2-10所示。色調通常指代顏色名稱。飽和度表示摻入白光的份量,摻入白光的份量越多,則飽和度越低,即S值越小;摻入白光的份量越少,則飽和度越高,即S值越大。亮度表示摻入黑光的份量,摻入黑光的份量越多,則亮度越低,即V越小;摻入黑光的份量越少,則亮度越高,即V越大。

圖2-10 HSV顏色空間模型

2.2.3 YUV顏色空間

YUV顏色空間是歐洲電視系統使用的一種色彩編碼空間,在現代的彩色電視系統中,通過三管彩色攝影機和彩色CCD攝影機得到的彩色圖像信號,經過分色、分別放大校正得到RGB,再進一步經矩陣變換電路得到亮度信號Y和兩個色差信號R-Y(U)、B-Y(V),最後發送端對這三個信號分別編碼,再使用同一信道發出去,這就是YUV顏色空間。若只有亮度Y,沒有U和V,則形成了黑白灰度圖像。

在數字圖像中,圖像的色彩空間還有很多種,如CMYK、Lab、HSL、YIQ等,本書在此不多做介紹。

2.2.4 顏色空間的轉換

1.RGB顏色空間轉換為HSV顏色空間

RGB顏色空間中有三個份量,即R、G、B。HSV顏色空間中也有三個份量,分別是H、S、V。可使用如下算法將RGB顏色空間轉換為HSV顏色空間。

在MATLAB中,函數rgb2hsv可以實現RGB到HSV顏色空間的轉換,用法如下。

hsv=rgb2hsv(rgb)

rgb是輸入的原RGB圖像,它是一個三維的M×N×3的數組,分別是圖像的紅色、綠色和藍色的份量。hsv是經過轉換後的HSV圖像,它是一個三維的M×N×3的數組,分別表示圖像的色調、飽和度和亮度信息。

下面我們通過Code4瞭解如何利用函數rgb2hsv進行RGB到HSV顏色空間的轉換。

運行Code4後,結果如圖2-11所示,有兩組圖,即Figure1和Figure2。Figure1是原RGB圖像和轉換後的HSV圖像的對比,Figure2是轉換後的HSV圖像的色度、飽和度和亮度份量圖。

圖2-11 Code4的運行結果

2.HSV顏色空間轉換為RGB顏色空間

在MATLAB中,也有和rgb2hsv類似的函數。函數hsv2rgb就可以實現HSV到RGB顏色空間的轉換,格式如下。

rgb=hsv2rgb(hsv)

hsv是輸入的原HSV圖像,rgb是經過轉換後的RGB圖像。

下面我們借助Code5瞭解如何利用函數hsv2rgb進行HSV到RGB顏色空間的轉換。

Code5:ch2_5.m

程序Code5首先讀取RGB圖像「1.jpg」,利用函數rgb2hsv將RGB圖像轉換為HSV圖像,然後再利用函數hsv2rgb將上一步得到的HSV圖像轉換為一個新的RGB圖像。最後顯示原RGB圖像、轉換後的HSV圖像和轉換後的新RGB圖像。

運行Code5後,結果如圖2-12所示。可以看到,轉換後的RGB圖像(c)和原RGB圖像(a)是完全相同的。

圖2-12 Code5的運行結果

3.RGB顏色空間轉換為YUV顏色空間

在MATLAB中,沒有用於將RGB顏色空間轉換為YUV顏色空間的函數。Code6程序可以實現RGB到YUV顏色空間的轉換。

Code6:ch2_6.m

運行Code6後,結果如圖2-13所示,有兩組圖,即Figure1和Figure2。Figure1是原RGB圖像和轉換後的YUV圖像的對比,Figure2是轉換後的YUV圖像的亮度信號Y和兩個色差信號U、V的份量圖。

圖2-13 Code6的運行結果