【音視頻基礎】(十三):YUV顏色空間之YUV和YCbCr

原文鏈接:https://mp.weixin.qq.com/s/i1ywnRdm86-nOWbRbh-iUA

這篇我們開始講YUV顏色空間,我們把這幾篇文章,前面都帶上這幾個字,就顯示出來了它的重要性,它是理解電視發展史,圖像數字化,圖像/視頻編碼的核心,至少我是這麼認爲的。所以前面分四篇去講了電視機的來龍去脈,相信看了前四篇,對它也有個初步瞭解,下面我們就開始正式介紹YUV顏色空間。

YUV主要應用在彩色圖像和視頻編碼層面,爲什麼這麼說呢?前面我們就知道,模擬圖像數字化爲數字圖像時,需經歷採樣、量化和編碼壓縮階段,而YUV就主要應用在編碼壓縮這個階段。

那爲什麼是YUV這種顏色空間,而不是RGB或者其他顏色空間呢?因爲YUV顏色空間,更好的將人類感知考慮進去了。比如,人眼對亮度更敏感,黑白亮度單純依靠亮度,就可以錄製播出節目,並且人眼不會對黑白圖像產生信息誤讀。而彩色電視,只是順勢而爲的,在黑白圖像的基礎上,加入了人們心裏預估的顏色。所以 “人眼對亮度更敏感” 這點非常重要,在圖像和視頻編碼中,就更深入的應用了這點,而不影響人眼對圖像的判斷。

YUV能夠在除電視系統以外的,其他彩色圖像或視頻上,大展身手,也源於了它最初就是應用在電視上。後來數字電視誕生,人們利用YUV對圖像進行編碼,產生了一系列的編碼標準,然後這些標準被用在商業上。由攝像器材產生的圖像信息,不再只能產生模擬圖像,和廣播電視,它們被編碼爲通用的圖片格式或視頻格式,存儲在手機、電腦、存儲卡等磁盤上。

雖然我們通常在說YUV,但是和它相關的顏色空間有多個,比如Y’UV、YUV、YCbCr、YPbPr。下面我們分開來說。

1、YUV

這個顏色空間我們應該很熟悉,最初知道它的時候,是在講彩色模擬電視的時候,它是PAL彩色電視制使用的顏色空間。其中的Y是黑白電視系統使用的Y,而後彩色電視產生,於是在Y的基礎上,加上了色差信息U和V,保證了黑白電視的兼容。這裏的 UV爲什麼稱爲色差,是因爲它們分別是藍和紅與Y的差值。也即

U = B - Y        V = R - Y

注意這裏的B和R不是RGB裏的B和R,只是代表了藍和紅信息,就像CIE XYZ一樣,如果你還記得的話。

2、Y’UV

它其實和YUV是同一個概念,只不過Y帶了撇,代表了非線性的YUV。我們之前提到過伽瑪矯正,這裏的非線性就是伽瑪校正的結果。

3、YPbPr

這個也是模擬電視中使用的,只需要知道就好,和YUV類似。

4、YCbCr

YCbCr顏色空間是在ITU-R BT.601和ITU-R BT.709中定義的,它們定義了YCbCr爲數字電視的顏色空間,並且定義了RGB和YCbCr的具體轉換關係。說到這裏你可能明白了,我們前面說的圖像或視頻編碼,使用的顏色空間就是它,因爲它是使用在數字電視中的顏色空間,並且定義在ITU-R BT.601和ITU-R BT.709中,說明是在圖像數字化過程中使用的。而前面幾個顏色空間,比如YUV、YPbPr,是模擬電視中使用的,跟數字視頻或圖像的編碼不沾邊。

那麼現在就有一個問題了,爲啥我們文章開頭在講編碼時,還使用YUV這一詞呢?那是因爲,現在我們通常說的YUV,不只是模擬電視裏那個YUV了,它在計算機行業,被用來描述使用YCbCr編碼的文件格式。所以我們說YUV時,也是在說YCbCr

哈哈,是不是很魔性,那麼接下來,我們就來分析分析YCbCr,主要是來看看,在文檔裏定義的它和RGB的轉換關係,這也是做視頻編碼的人比較熟悉的數字。

在這裏插入圖片描述
ITU-R BT.601中定義的YCbCr與RGB的轉換

這張圖是從維基百科上截的,式中的Y’UV也即YCbCr。一式具體的計算如下:

在這裏插入圖片描述

式中的係數,就是ITU-R BT.601定義的,因爲SDTV較早流行,所以目前在做編碼時,通常使用的也就是這個轉換關係。在YUV向RGB轉換式中,當我們假設U和V同時爲0時,也就是色差信號爲0,我們可以看到,R、G、B三個值同時等於Y,也就是RGB三值相等。瞭解RGB相加混色我們知道,這個時候產生的是黑白灰,也即之前的黑白電視。

而式中的U和V,則分別是B和R與亮度之差,再乘以係數得來,但是我們還是稱之爲色差,YCbCr中的b和r,就分別代表了是B和R與Y的色差。而Cb和Cr,也就相當於U和V。

那麼接下來,我們就來看看YCbCr在電視系統中的應用。

在這裏插入圖片描述
電視系統中顏色空間的轉換

這張圖,就是電視系統中使用的顏色空間的轉換。圖中的轉換分爲兩部分,上面從RGB到YCbCr的轉換,下面是YCbCr再轉換到RGB。之所以需要這兩個過程,是因爲RGB顏色空間產生的圖像信息太過龐大,轉換到YCbCr利於編碼,而之後又再轉回RGB,是因爲YCbCr圖像信息,從通信通道傳輸到接收端,也即電視機之後,顯示器顯示圖像信息需要RGB值來驅動。

在圖中可以看到,攝像設備拿到三色刺激,也即線性的XYZ或R1G1B1,經過一個3x3的矩陣M得到一個線性的RGB空間。這個過程可以理解爲類似下圖的轉換

在這裏插入圖片描述
然後使用非線性函數對每個顏色分量進行變換,也即r矯正(伽瑪校正)。圖中的0.5代表攝像機的r值,2.5代表普通CRT的r值。這個值每個設備通常不一樣,比如NTSC裏的r指定爲2.2,PAL裏的r指定爲2.8,雖然CRT的r值實際上是2.35。

經過伽瑪校正後,線性的RGB也就變成了非線性的R’G’B’信號,同樣帶撇表示非線性。然後再用一個3x3的色差編碼矩陣M得到非線性的色差分量,產生Y’CbCr,可以理解爲是進行了如下變換

在這裏插入圖片描述

然後就在這個基礎上,把Y‘CbCr經過子採樣濾波器進行採樣,得到經過子採樣的色差分量,也即我們通常說的4:2:2、4:2:0子採樣格式。關於子採樣,我們下篇會詳細講。

這樣一來,我們就完成了顏色空間的轉換,不考慮編碼壓縮的情況下,就可以把變換後的顏色分量,通過通信通道傳輸到接收端,或者是存儲起來。那麼在接收端,或者是要顯示圖像的時候,按照從右到左的方向進行變換,拿到RGB三色刺激值,交給顯示器就可以了。

聯繫我們之前講的CIE XYZ、CIE xyY,下圖爲部分顏色空間的轉換關係
在這裏插入圖片描述
部分顏色空間的轉換關係

可以看到圖像編碼,只應用了顏色空間中少有的幾個顏色空間。而大部分的顏色空間,他們應用的場合都不一樣,通常如下表所示

在這裏插入圖片描述
顏色空間的類型

這張表,就相當於對顏色空間的一個總結了吧。

參考資料:
https://en.wikipedia.org/wiki/YUV
https://en.wikipedia.org/wiki/YCbCr

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