【音視頻基礎】(十四):YUV顏色空間之圖像子採樣

原文鏈接:https://mp.weixin.qq.com/s/92vTFAd8zREU2wsX__PG0w

在開始這篇文章之前,首先得知道,什麼是圖像子採樣,以及爲什麼要介紹這個話題。

首先圖像子採樣,其實就是圖像採樣。這個子的含義並沒那麼高深,可能有的同學一看標題,以爲子採樣是種多麼高深的技術,這裏直接按採樣來理解就好。我們曾在電視圖像數字化中,講過採樣這一步驟,它實質上就是指,用多少點來描述一幅圖像,也即圖像的像素點有多少個。不過在講圖像採樣的時候,我們不說像素點,相應的,我們稱它爲採樣點,其實是一個意思。

通常,我們對彩色電視圖像進行採樣時,會使用兩種方法。

  • 一種是使用相同的採樣頻率,對圖像的亮度信號和色差信號進行採樣。

  • 另一種則是對亮度信號和色差信號,分別採用不同的採樣頻率進行採樣。而如果對色差信號使用的採樣頻率,比對亮度信號使用的採樣頻率要低,這時我們就說它是圖像子採樣

其實這兩種方法很好理解,首先採樣頻率我們之前講過,它的公式爲:

採樣頻率 = 幀頻 x 每幀的行數 x 每行上的採樣數目

它的意思是:每秒採樣到的採樣點數目,知道了這點就來看一下上面這兩種方法的區別。

第一種是使用相同的採樣頻率,對亮度和色度(不用解釋,色差即代表色度)進行採樣,說明亮度和色度的採樣點數目是相同的,進而說明,在圖像的每一個像素上,我們都需要對亮度和色度同時進行採樣。這點我們可能覺得很正常,不過卻是沒必要而且浪費帶寬的。

理解了第一種,第二種就很好理解了。當色度的採樣數目,比亮度的要低時,這種採樣方法就叫圖像子採樣,這裏的子不是指父子的子,而是指高低的低。

這有的人可能就納悶了,爲什麼色度的採樣數目,可以更低呢?我們之前說過,人眼對亮度的敏感度,要高於色度。雖然這樣說,但是我們還是沒有直觀的感受,所以我找了幅圖:

在這裏插入圖片描述
亮度(左) 色度(中) 完整圖像(右)

我想這幅圖應該很直觀,最左邊只保留了亮度,而中間提取出了色度,右邊則是完整的圖像,左邊 + 中間 = 右邊。當然這裏的亮度我們專指黑白灰,而不考慮光強等表示光通量的因素,因爲我們已經定義了比較兩種顏色的標準光源。

所以這時我們應該比較清楚了,就像我們小時候看黑白電視,也並不會產生錯誤信息一樣。

所以下面我們就來看看,常用的圖像子採樣格式,比如4:4:4, 4:4:0, 4:2:2, 4:1:1, 4:2:0

首先來看一下這種格式表示方法,理解了這種表示方法,才能理解各個子採樣格式。顯而易見,這種格式分爲了三部分,維基百科上表示爲:J🅰️b。這時千萬不要以爲它代表了,Y:Cb:Cr,因爲按照第一印象,我們自然而然會這麼認爲,其實完全不是這樣。

這裏的J也就是第一個位置,它表示水平採樣點數目,通常我們以兩行8個採樣點爲一個單位,每行4個採樣點。

第二個位置,也就是a,它表示4個採樣點的第一行,色度樣本的個數。

第三個位置,也就是b,它表示4個採樣點的第二行,色度樣本的個數。

當然這是默認規則,對上面那幾個子採樣格式適用,而4:2:1並不是按照這個規則來的,不過我們也不打算介紹它,因爲它極少使用。下面我們就按照這個規則,一一介紹,規則沒看懂沒關係,看完一個示例就懂了。這裏我們需要注意,每個採樣點,我們都需要對亮度進行採樣,所以規則裏並沒有哪個數是代表亮度的。那麼爲了便於分析,我們從後往前介紹

1、4:2:0 YCbCr格式

對照規則,第一個4代表了水平4個採樣點,也即一個單位的水平採樣數目。第二個2代表第一行有2個色度樣本,第三個0代表第二行沒有色度樣本。如下圖:

在這裏插入圖片描述
4:2:0 YCbCr格式的採樣

圖中每個點(黑色實心/空心圓圈)都代表一個採樣點,而黑色實心,代表這個採樣點對色度進行採樣,也即有色度樣本。而空心圓圈,代表不對色度進行採樣,沒有色度樣本。

我們可以看到,左上角的8個採樣點,被標記了矩形框,這是一個單位。在這8個採樣點的單位裏,第一行有兩個實心,也即有2個色度樣本(注意我們並不區分Cb和Cr,至始至終我們都把它們當成一體,也就是色度),而第二行全部爲空心圓圈,所以色度樣本爲0,所以這種子採樣格式稱爲:4:2:0 YCbCr格式。

那麼既然知道了這種格式怎麼採樣,我們就來看看它怎麼顯示。
在這裏插入圖片描述
4:2:0 YCbCr格式的顯示

對照右圖,可以看到左圖把採樣點,按每4個像素作爲一個顯示單位,它們共用一個色度。而我們通過右圖就可以發現,每4個採樣點,只有左上角那個採樣點,採樣了色度。所以這4個採樣點顯示的時候,它們顯示的色度,也是左上角那個值,而亮度則各自顯示各自的。這就相當於,每4個像素,用4個Y樣本,1個Cr樣本,1個Cb樣本,共6個樣本來顯示,平均一個像素1.5個樣本。它顯示的實際效果,就是下圖這樣子:

在這裏插入圖片描述
4:2:0 YCbCr格式的顯示

這張圖從上往下看,最上面是YCbCr顯示效果圖,它等於Y(亮度) 加 CbCr(色度),也即中圖和下圖。最上面每個格子代表一個採樣點,也即一個像素。按照這種採樣格式,每4個採樣點,只有左上角的採樣點採樣色度,所以在最下面色度圖中,只有兩個樣本色,1號藍色和2號綠色。

4:2:0 YCbCr格式的使用

這種子採樣格式的使用非常普遍,H.261、H.263和MPEG-1、MPEG-2(後面介紹)中就使用這種採樣格式。不過MPEG-1和MPEG-2在實際使用的過程中,對色度的取樣和上面描述的有所不同。這在科學技術的發展上,是很常見的事情。其中MPEG-1在對色度取樣時,並不是對4個採樣點的上角那個進行取樣,而是通過這4個採樣點的色差,計算得出的Cb和Cr。

在這裏插入圖片描述
MPEG-1等使用的4:2:0子採樣格式

這點了解就好,以免在看其他技術文的時候陷入誤區。

2、4:1:1 YCbCr格式

在這裏插入圖片描述
從圖中可以看到,這種子採樣格式,在水平掃描線上,每4個Y樣本就有一個色度樣本。而它在顯示的時候,對於沒有色度樣本的像素點來說,它使用前後相鄰的Cr和Cb樣本,來計算該Y樣本的CbCr。這種格式,是數字電視盒式磁帶(DVC)使用的格式。

3、4:2:2 YCbCr格式

在這裏插入圖片描述
這種子採樣格式,在水平掃描線上,每2個採樣點就有一個色度樣本。同樣,在顯示的時候,對於沒有色度樣本的像素點來說,它使用前後相鄰的Cr和Cb樣本,來計算該Y樣本的CbCr。而且該格式,也是在ITU-R BT.601中使用的子採樣格式。

4、4:4:0 YCbCr格式

在這裏插入圖片描述
從圖中就可以看出,這種子採樣格式,採樣的是隔行採樣色度樣本的方式,因爲並不常用,知道就好。

5、4:4:4 YCbCr格式

這種格式顯而易見,並不是子採樣格式,因爲它的色度樣本數,和亮度樣本數,是一樣的,所以它就是普通的採樣格式。它代表每條掃描線上,每4個連續的採樣點,取4個亮度Y樣本,4個紅色差Cr樣本,4個藍色差Cb樣本。相當於每個像素,用3個樣本顯示,也就是YCbCr都有值。所以這種格式,在顯示一個像素時所使用的樣本數,算是最多了。

在這裏插入圖片描述

下圖爲維基百科上,這幾種採樣格式的顯示對比圖:
在這裏插入圖片描述

參考資料:

https://en.wikipedia.org/wiki/Chroma_subsampling
http://dougkerr.net/Pumpkin/articles/Subsampling.pdf

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