共用方式為


關於YUV影片

數字視訊通常會以 YUV 格式編碼。 本文說明 YUV 影片的一般概念,以及一些術語,而不深入討論 YUV 影片處理的數學。

如果您已使用電腦圖形,您可能已熟悉 RGB 色彩。 RGB 色彩會使用三個值來編碼:紅色、綠色和藍色。 這些值會直接對應至可見光譜的部分。 這三個 RGB 值會形成數學座標系統,稱為 色彩空間。 紅色元件會定義這個座標系統的一個座標軸,藍色定義第二個座標軸,而綠色則定義第三個座標軸,如下圖所示。 任何有效的 RGB 色彩都落在此色彩空間內的某個位置。 例如,純洋紅是 100% 藍色、100% 紅色,以及 0% 綠色。

顯示 rgb 色彩空間的 圖表

雖然 RGB 是代表色彩的常見方式,但可能會有其他座標系統。 YUV 一詞是指一系列色彩空間,這些色彩空間全都會將亮度資訊與色彩資訊分開編碼。 如同 RGB,YUV 會使用三個值來表示任何色彩。 這些值稱為 Y'、U 和 V.(事實上,使用 “YUV” 一詞在技術上不正確。在計算機影片中,YUV 一詞幾乎一律是指一個名為 Y'CbCr 的特定色彩空間,稍後討論。不過,YUV 通常用於任何與 Y'CbCr 相同的原則運作的色彩空間的一般詞彙。

Y 的元件也稱為 luma,代表色彩的亮度值。 撇號(')用來區分 luma 與緊密相關的值,亮度,此值指定為 Y。亮度衍生自 線性 RGB 值,而 luma 則衍生自 非線性 (伽馬校正)RGB 值。 亮度是衡量真實亮度的更準確指標,但由於技術上的實用性,luma 更便於使用。 主要符號經常省略,但 YUV 色彩空間一律使用 luma,而不是亮度。

Luma 衍生自 RGB 色彩,方法是採用紅色、綠色和藍色元件的加權平均值。 針對標準定義電視,會使用下列公式:

Y' = 0.299R + 0.587G + 0.114B

這個公式反映了人眼對某些波長的光比其他波長更加敏感的事實,這會影響色彩的感知亮度。 藍燈呈現最暗,綠色看起來最亮,紅色位於兩者之間的某個位置。 這個公式還反映了早期電視中使用的磷的身體特徵。 考慮到現代電視技術,較新的公式用於高清電視:

Y' = 0.2125R + 0.7154G + 0.0721B

標準定義電視的 luma 方程式是在名為 bt.601 ITU-R 的規格中定義的。 對於高清電視,相關規格 ITU-R BT.709。

U 和 V 元件也稱為 色度 值或 色彩差異 值,是藉由從原始 RGB 色彩的紅色和藍色元件中減去 Y 值而得出。

U = B - Y'

V = R - Y'

這些值一起包含足夠的資訊來復原原始 RGB 值。

YUV 的優點

模擬電視由於歷史原因而部分使用 YUV。 類比彩色電視信號旨在與黑白電視回溯相容。 彩色電視信號帶有色度資訊(U 和 V),疊加到亮度信號上。 黑白電視會忽略色度,並將結合的訊號顯示為灰階圖像。 (信號的設計目的是使色度不會顯著干擾 luma 訊號。彩色電視可以擷取色度,並將訊號轉換回 RGB。

YUV 有另一個優勢,在現今時代更具相關性。 人眼對色調變化的敏感度比亮度的變化要低。 因此,影像的色度資訊可能比 luma 資訊少,而不會犧牲影像的感知品質。 例如,在 luma 樣本的水平解析度的一半處取樣色度值很常見。 換句話說,針對每一排像素中的每兩個 luma 樣本,會有一個 U 樣本和一個 V 樣本。 假設使用 8 個位來編碼每個值,則每兩個圖元需要 4 個字節(兩個 Y'、一個 U 和一個 V),平均每圖元 16 位,或比對等 24 位 RGB 編碼少 30%。

YUV 原本就不比 RGB 更精簡。 如果不是因為色度向下取樣,YUV 像素的大小就和 RGB 像素相同。 此外,從 RGB 轉換為 YUV 是無損的。 如果沒有向下取樣,則 YUV 像素可以轉換成 RGB,且不會遺失資訊。 縮小取樣會使 YUV 影像更小,也會失去一些色彩資訊。 不過,如果正確執行,則損失並不明顯。

計算機影片中的 YUV

先前針對 YUV 列出的公式不是數位視訊中使用的確切轉換。 數字視頻通常會使用一種稱為 Y'CbCr 的 YUV 形式。 基本上,Y'CbCr 的運作方式是將 YUV 元件調整為下列範圍:

元件 範圍
Y' 16–235
Cb/Cr 16–240,128 代表零

 

這些範圍假設 Y'CbCr 元件具有 8 位的精度。 以下是 Y'CbCr 的確切衍生,使用 luma 的 BT.601 定義:

  1. 從範圍 [0...1] 中的 RGB 值開始。 換句話說,純黑色是0,純白色是1。 重要的是,這些是非線性(伽瑪更正)RGB 值。

  2. 計算亮度。 若為 BT.601,Y' = 0.299R + 0.587G + 0.114B,如先前所述。

  3. 計算中繼色度差異值 (B - Y') 和 (R - Y')。 這些值的範圍是 +/- 0.886 代表 (B - Y'),而 +/- 0.701 代表 (R - Y')。

  4. 調整色度差異值,如下所示:

    Pb = (0.5 / (1 - 0.114)) × (B - Y')

    Pr = (0.5 / (1 - 0.299)) × (R - Y')

    這些縮放比例的設計目的是為兩個值提供相同的數值範圍 +/- 0.5。 它們會一起定義名為 Y'PbPr 的 YUV 色彩空間。 此色彩空間用於類比元件視訊。

  5. 調整 Y'PbPr 值以取得最終的 Y'CbCr 值:

    Y' = 16 + 219 × Y'

    Cb = 128 + 224 × Pb

    Cr = 128 + 224 × Pr

這些最後一個縮放比例會產生上表所列的值範圍。 當然,您可以直接將 RGB 轉換成 Y'CbCr,而不需要儲存中繼結果。 此處分別列出這些步驟,說明 Y'CbCr 如何衍生自本文開頭所提供的原始 YUV 方程式。

下表顯示各種色彩的 RGB 和 YCbCr 值,再次使用 luma 的 BT.601 定義。

顏色 R G B Y' Cb
0 0 0 16 128 128
255 0 0 81 90 240
0 255 0 145 54 34
0 0 255 41 240 110
青色 0 255 255 170 166 16
品紅 255 0 255 106 202 222
黃色 255 255 0 210 16 146
255 255 255 235 128 128

 

如下表所示,Cb 和 Cr 不會對應到有關色彩的直覺式想法。 例如,純白色和純黑色都包含 Cb 和 Cr (128) 的中性層級。 Cb 的最高值和最低值分別為藍色和黃色。 針對Cr,最高和最低的值為紅色和青色。

如需詳細資訊

視訊媒體類型

媒體類型