數字影片概念

本文將探討一些重要的概念,理解這些概念有助於全面掌握如何在網路上使用影片。

編碼顏色

表示影像或影片中的顏色需要為每個畫素設定多個值。這些值具體是什麼取決於您在將顏色轉換為數字形式時如何“拆分”顏色。有多種顏色模型,影片編解碼器使用其中一種或多種模型來表示編碼過程中的畫素,以及解碼影片幀後的畫素。

RGB

大多數計算機圖形模型使用 RGB 顏色系統,其中一些位的資料用於表示單個畫素顏色的紅、綠、藍三個分量的每個分量,而影像由這些畫素的二維陣列組成。表示 RGB 樣本主要有兩種方法:使用整數分量和使用浮點分量。當使用整數分量時,RGB 顏色每個使用 8 位的紅色、綠色和藍色,以及可能使用 8 位的 alpha(透明度值)。

YUV

與 RGB 不同,YUV(或 Y'UV)顏色編碼系統基於人類感知顏色影像的方式。這樣做可以使顏色資料在影片流中使用更少的總位空間來表示。

如今,“YUV”這個名稱通常用於描述這種顏色系統,儘管該術語最初專門用於模擬顏色編碼,而 YCbCr 用於數字顏色。然而,如今這兩個術語都用於數字顏色。符號 ' 表示正在使用伽馬壓縮。

思考人類視覺

我們可以用這種方式表示影像,因為人類的眼睛在灰度中比在顏色中看到更多細節,這要歸功於生物學。人類的眼睛包含兩種型別的光感受器(感光)細胞。視杆細胞是高靈敏度的光強度感測器。視錐細胞靈敏度較低,但能夠檢測顏色。

由於眼睛的視杆細胞數量遠遠多於視錐細胞(約 1.2 億個視杆細胞對大約 600 萬個視錐細胞),因此我們在灰度中看到細節,而顏色細節要少得多。本質上,我們的眼睛就像一臺有兩個影像感測器晶片的相機:一個灰度感測器和一個彩色感測器。灰度感測器是 1.2 億畫素,而彩色感測器只有大約 700 萬畫素。這些感測器在物理上佔據眼睛後部的同一表面,稱為視網膜

視錐細胞有三種類型,每種型別對特定波長範圍的入射光以及該波長下光的強度做出反應。因此,每種型別的視錐細胞捕獲不同波長下的相對響應峰值,大腦使用這些資料來確定到達視網膜該部分的光的顏色強度和色調。

當我們的眼睛捕捉場景時,它們本質上同時拍攝兩張照片:一張細節豐富的灰度影像和一張有點模糊、解析度較低的影像,顯示同時到達視網膜的光的顏色。最終的顏色影像由大腦建立,它本質上將顏色疊加到灰度畫素上。

YUV 概念

YUV 透過定義一個具有三個分量的顏色空間來工作

亮度 (Y')

畫素的亮度。如果沒有另外兩個分量,幀中每個畫素的亮度會產生影像的灰度表示。例如,在 BT.709(用於高畫質電視)中,亮度值是畫素的伽馬校正後的紅、綠、藍分量的加權和,使用公式 Y' = 0.2126R' + 0.7152G' + 0.0722B'。執行這種加權是因為眼睛中綠、紅、藍視錐細胞的比例如前所述。

藍色差 (U 或 Cb)

色度或顏色樣本的藍色差分量。該值透過從伽馬校正後的藍色值中減去亮度來計算;即,U = B' - Y'

紅色差 (V 或 Cr)

顏色樣本的色度的紅色差分量。透過從伽馬校正後的紅色值中減去亮度來計算:V = R' - Y'

色度抽樣

色度抽樣是將顏色畫素轉換為灰度影像以及表示要對映到這些畫素的顏色的一系列 U 和 V 值的過程。

由於顏色資料以低於亮度解析度進行編碼,因此在解碼影片以將其繪製到螢幕上時,每個畫素的顏色是透過根據畫素所在的 8 畫素 4x2 塊的 U 和 V 值計算適當的顏色來計算的。這種解碼操作必須反映編碼過程中使用的解碼操作,這由三個用冒號 (:) 分隔的數字表示。

  • 第一個數字指定從 4x2 畫素塊編碼的每行亮度樣本的數量。此值實際上總是 4,表示“使用所有亮度樣本”。
  • 第二個數字指定用於表示第一行畫素顏色的色度樣本數量。
  • 第三個數字指示用於表示第二行畫素顏色的色度樣本數量。

下表顯示了三種色度抽樣模型的示例。

4:2:0 4:2:2 4:4:4
亮度 Luminance of pixels in a 4:2 (8-pixel) block Luminance of pixels in a 4:2 (8-pixel) block Luminance of pixels in a 4:2 (8-pixel) block
色度 (U 和 V) A matrix of U and V values for a 4:2:0 decoding operation. The first row contains 2 chroma samples for U: a blue and a green. The first row's samples are duplicated in the second row for V. A matrix of U and V values for a 4:2:2 decoding operation. The first row contains 2 chroma samples for U: a blue and a green. The second row contains 2 chroma samples for V: a pink and a yellow. A matrix of U and V values for a 4:4:4 decoding operation. The first row contains 4 chroma samples for U: a light blue, a yellow, a green and a deep blue. The second row contains 4 chroma samples for V: a pink, a white, a red and a gray.
解碼後的畫素 A 4:2 block of decoded pixels after a 4:2:0 decoding operation that applies the 2 samples of the chroma matrix to each row in the block of luminance data. The colors of the samples become darker when applied to gray shades, black when applied to solid black, and remain unchanged when applied to white. A 4:2 block of decoded pixels after a 4:2:2 decoding operation that applies the 2 samples contained in each row of the chroma matrix to the corresponding rows in the block of luminance data. The colors of the samples become darker when applied to gray shades, black when applied to solid black and remain unchanged when applied to white. A 4:2 block of decoded pixels after a 4:4:4 decoding operation that applies the 4 samples contained in each row of the chroma matrix to the corresponding rows in the block of luminance data. The colors of the samples become darker when applied to gray shades, black when applied to solid black and remain unchanged when applied to white.

在所有這些情況下,解碼後的影像都使用了亮度資料每行中的所有四個畫素。檢視 4:2:0 色度抽樣,在第一列中,值 2 表示第一行色度資料中有兩個樣本;0 表示第二行沒有自己的色度樣本,並且第一行的樣本應該複製到第二行。換句話說,我們從源影像中每隔一行的畫素獲取顏色資訊,並將它們應用到亮度表示的灰度影像中。

第二列顯示了 4:2:2 抽樣。四個亮度樣本的頂行應用了兩個色度樣本,而亮度樣本的底行也應用了兩個樣本。因此,由該塊表示的八個畫素在它們之間共享四個色度樣本。

最後一個示例演示了 4:4:4 抽樣。每行都有四個亮度樣本和四個色度樣本,因此由該塊表示的每個畫素都分別上色。

如果色度抽樣模型為 4:0:0 呢?這意味著使用亮度資料的每個畫素,但每行應用 0 個色度樣本。因此,生成的影像僅由亮度資料組成,即灰度影像。

YUV 資料表示

由於影像使用灰度中的更多細節來表示,而不是顏色,因此 Y'、U 和 V 的值通常不會像 RGB 影像儲存在記憶體中那樣儲存在一起,每個畫素一個樣本。

  • 影片的每一幀都由一個亮度值矩陣 Y 表示,每個畫素的顏色使用 U 和 V 矩陣中的值來計算。例如,在 AV1 編解碼器中,一條記錄儲存了平鋪的編碼亮度,而另一條記錄以 U 和 V 值的形式包含色度資料。
  • 在廣播電視中,亮度訊號是主訊號,而色度資料是在副載波上傳輸的。
  • JPEG 檔案型別的壓縮工作原理是首先將影像轉換為 Y'UV 顏色系統,然後壓縮這些資料。Y'、Cb 和 Cr 的每個值都可以在 0 到 255 之間。