關於 YUV 影片

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

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

diagram showing rgb color space

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

Y' 元件也稱為 luma,代表色彩的亮度值。 質符號 (') 用來區分 luma 與指定為 Y 的緊密關聯值 、亮度。Luminance衍生自 線性 RGB 值,而 luma 則衍生自 非線性 (gamma 更正) RGB 值。 亮度是更接近真實亮度的量值,但基於技術考慮,luma 更實用。 經常省略質符號,但 YUV 色彩空間一律使用 luma,而非亮度。

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

Y' = 0.299R + 0.587G + 0.114B

此公式反映人類眼睛對於某些光線的敏感度比其他人更敏感,這會影響色彩的感知亮度。 藍色光線呈現最暗,綠色看起來最亮,而紅色則是介於兩者之間的某處。 此公式也會反映早期電視中使用的螢光板實體特性。 將新式電視技術納入考慮的新式電視技術,用於高畫質電視:

Y' = 0.2125R + 0.7154G + 0.0721B

標準定義電視的 luma 方程式定義于名為」的規格中,名稱為「」的「」是「使用」的 BT-R BT.601。 對於高畫質電視,相關規格為「」的「」是「使用」的「」是「使用」-[BT.709]。

您和 V 元件也稱為 chroma 值或 色彩差異 值,是藉由從原始 RGB 色彩的紅色和藍色元件減去 Y 值來衍生:

U = B - Y'

V = R - Y'

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

YUV 的優點

類比電視因歷史原因而使用 YUV。 類比色彩電視訊號的設計目的是要與黑白電視回溯相容。 色彩電視訊號會 (您和 V) 迭加到 luma 訊號上, 色彩電視訊號會帶上色色資訊。 黑白電視會忽略色色,並將合併的訊號顯示為灰階影像。 (設計訊號,讓色板不會大幅干擾 luma signal.) Color 電視可以擷取色度,並將訊號轉換回 RGB。

YUV 有另一個目前更相關的優點。 人類眼睛對色調變更的敏感度比亮度的變更更不敏感。 因此,影像的色度資訊可能比 luma 資訊少,而不會犧牲影像的認知品質。 例如,通常會在 luma 樣本的水準解析度上取樣色度值。 換句話說,對於每兩個圖元列中的 luma 樣本,會有一個 U 樣本和一個 V 樣本。 假設 8 位用來編碼每個值,則每兩個圖元總共需要 4 個位元組, (兩個 Y'、一個 U 和一個 V) ,平均每圖元 16 位,或 30% 小於相等的 24 位 RGB 編碼。

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 位有效位數。 以下是使用 luma 的 BT.601 定義來確切衍生 Y'CbCr:

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

  2. 計算 luma。 針對 BT.601,Y' = 0.299R + 0.587G + 0.114B,如先前所述。

  3. (B - Y') 和 (R - Y') 計算中繼色差值。 這些值的範圍為 +/- 0.886,適用于 (B - Y') ,而 (R - Y') 則為 +/- 0.701。

  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 定義。

Color R G B Y' Cb Cr
黑色 0 0 0 16 128 128
紅色 255 0 0 81 90 240
綠色 0 255 0 145 54 34
藍色 0 0 255 41 240 110
11:青色 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,最高和最低值為紅色和青色。

詳細資訊

視訊媒體類型

媒體類型