數字視頻簡介

基本術語


顏色編碼方法

一張圖片可以被想象成2D的矩陣。如果我們考慮顏色,我們可以順着這個思路一張圖片想象成3D矩陣,其中另外一個D用於存儲顏色數據。

如果我們使用原色(紅,黃,藍三色)代表這些顏色,我們可以定義三個平面:第一個代表紅色,第二個代表綠色,第三個代表藍色。
在這裏插入圖片描述
我們將這個矩陣中的每一個點成爲像素,一個像素表示給定顏色的強度,通常用數字值。舉個例子,一個紅色的像素(R:0 , G:0 , B:255)。

編碼彩色圖像的其他方式
許多其他可能的模型可用於表示構成圖像的顏色。例如,我們可以使用索引調色板,我們只需要一個字節來表示每個像素,而不是使用RGB模型時所需的3個像素。在這樣的模型中,我們可以使用2D矩陣而不是3D矩陣來表示我們的顏色,這將節省內存但產生更少的顏色選項。

在這裏插入圖片描述
例如,請查看下面的圖片。第一張臉是全綵的。其他是紅色,綠色和藍色的平面(顯示爲灰色調)。
在這裏插入圖片描述
我們可以看到,紅色將是對最終顏色貢獻更多(第二面中最亮的部分)的顏色,而藍色顏色的貢獻大多只能在馬里奧的眼睛(最後一張臉)和他的衣服的一部分中看到,看看所有飛機如何爲馬里奧的鬍子貢獻更少(最黑暗的部分)。

深度(bit depth)

並且每種顏色強度需要一定量的位,這個量稱爲位深度。假設我們每種顏色(平面)花費8位(接受0到255之間的值),因此我們的顏色深度爲24位(8位* 3平面R / G / B),我們也可以推斷出我們可以使用2到24種不同顏色的力量。

瞭解如何將圖像從世界中捕獲到比特中,這真是太棒了

分辨率

圖像的另一個屬性是分辨率,即一維矩陣中的像素數。它通常表示爲寬度×高度,例如,下面的4×4圖像。
在這裏插入圖片描述

寬高比

我們在處理圖像或視頻時可以看到的另一個屬性是寬高比,它簡單地描述了圖像或像素的寬度和高度之間的比例關係。

當人們說這部電影或圖片是16:9時,他們通常指的是顯示寬高比(DAR),但我們也可以使用不同形狀的單個像素,我們稱之爲像素寬高比(PAR)。
在這裏插入圖片描述
在這裏插入圖片描述

DVD是DAR 4:3
雖然DVD的真實分辨率爲704x480,但仍保持4:3的寬高比,因爲它的PAR爲10:11(704x10 / 480x11)

幀率

最後,我們可以將一段時間內連續的n幀定義爲視頻,n表示幀率或則每秒鐘的幀數(fps)。
在這裏插入圖片描述

碼率

每秒鐘需要顯示的視頻數據的大小我們成之爲碼率

bit rate = width * height * bit depth * frames per second

舉個例子,一個視頻的幀率是30fps,每個像素的深度爲24,分辨率爲480x240;那麼根據上面的公式計算得出我們每秒需要82,944,000 bits或則82.944 Mbps 這麼大的網絡帶寬或則本地存儲空間!當然前提是我們不進行任何壓縮的情況下。

碼率控制方法(VBR/CBR/ABR)

  • 當碼率幾乎恆定的時候我們稱爲恆定碼率(CBR)
  • 當碼率是變化的時候我們稱之爲動態碼率(VBR)

該圖顯示了受約束的VBR,其在幀爲黑色時不會花費太多比特。
在這裏插入圖片描述

隔行/逐行掃描

隔行掃描

在早期,工程師想出了一種技術,可以在不消耗額外帶寬的情況下將視頻顯示的幀速率加倍。這種技術稱爲隔行掃描視頻 ; 它基本上在1“幀”中發送一半屏幕而在下一個“幀”中發送另一半。

逐行掃描

今天屏幕渲染主要使用逐行掃描技術。漸進式是一種顯示,存儲或傳輸運動圖像的方式,其中每個幀的所有線都是按順序繪製的。
在這裏插入圖片描述

查看視頻信息

我們可以使用mediainfo或則ffmpeg來查看視頻的信息,
在這裏插入圖片描述
此處還有很多信息上面沒有介紹到,後面會介紹到!

去冗餘

我們瞭解到,使用不要所的視頻是不可行的!一個時常一小時,分辨率是720p,幀率是30幀的視頻,需要278GB的存儲空間!由於僅使用 DEFLATE等無損數據壓縮算法(用於PKZIP,Gzip和PNG),因此不會充分降低所需帶寬,我們需要找到壓縮視頻的其他方法。

存儲空間計算:1280x720x24x30x3600(寬度,高度,每像素位數,fps和時間,以秒爲單位)

爲了做到這一點,我們需要研究一下我們的眼睛是如何工作的,相對於顏色我們對亮度更加敏感,視頻往往是一段時間內多張非常相似的有極小變化的圖片的連續,每一幀中也包含很多相似或則一樣的顏色。這就爲我們提供了兩個視頻壓縮編碼的方向:幀間編碼和幀內編碼

顏色 亮度和我們的眼睛

其實我們的眼睛對亮度更加的敏感why?,可以親自測試下,看看下面的這張照片。
在這裏插入圖片描述
如果您不能看出上圖左側的方塊A和方塊B的顏色是相同的,那麼恭喜你被自己的大腦給騙了,這是因爲相對於顏色,我們的大腦更多的關注亮或則暗度。右側的圖片中我們增加了一個顏色連接器,這樣我們就能非常容易的看出這是倆兩個顏色相同的塊。如果您還對此有懷疑,可以用紙條或則手指遮住中間的顏色連接器,您會發現,顏色又不一樣了!

眼睛如何工作的一個簡單介紹

The eye is a complex organ, it is composed of many parts but we are mostly interested in the cones and rods cells. The eye contains about 120 million rod cells and 6 million cone cells.

To oversimplify, let’s try to put colors and brightness in the eye’s parts function. The rod cells are mostly responsible for brightness while the cone cells are responsible for color, there are three types of cones, each with different pigment, namely: S-cones (Blue), M-cones (Green) and L-cones (Red).

Since we have many more rod cells (brightness) than cone cells (color), one can infer that we are more capable of distinguishing dark and light than colors.
在這裏插入圖片描述

Contrast sensitivity functions

Researchers of experimental psychology and many other fields have developed many theories on human vision. And one of them is called Contrast sensitivity functions. They are related to spatio and temporal of the light and their value presents at given init light, how much change is required before an observer reported there was a change. Notice the plural of the word “function”, this is for the reason that we can measure Contrast sensitivity functions with not only black-white but also colors. The result of these experiments shows that in most cases our eyes are more sensitive to brightness than color.

一旦我們知道我們對亮度(圖像中的亮度)更敏感,我們就可以嘗試利用它。

顏色模型

在文章的開始我們就已經瞭解過了關於RGB顏色模型如何對圖片進行着色,
當然還有其他的顏色模式!事實上還有一個模型是將亮度和色度分開,成之爲YCbCr*。*代表這個模型還能演變出更多的模型。
該顏色模型使用Y表示亮度,使用Cb(chrome blue)和Cr(chrome red)表示兩個顏色通道。YCbCr和YUV模式可以相互轉化,使用此模型,我們可以創建全綵色圖像,如下所示
在這裏插入圖片描述

YCbCr 和 RGB轉換

有人可能會質疑,沒有綠色我們怎麼可能創建出所有的顏色?
我們通過將RGB轉到YCbCr來回答這個問題,我們將使用ITU-R*組織建議的BT.601標準的係數。
第一步是計算亮度,我們將使用ITU建議的常量計算

Y = 0.299R + 0.587G + 0.114B

一旦我們得到亮度值,我們就能解析出兩個色度通道的值

Cb = 0.564(B - Y)
Cr = 0.713(R - Y)

當然我們能根據公式將YCbCr退回成RGB,甚至得到RGB的B色

R = Y + 1.402Cr
B = Y + 1.772Cb
G = Y - 0.344Cb - 0.714Cr

在數字視頻領域組織和標準是很常見的,他們通常是標準的制定者,例如,什麼是4K?我們應該用什麼樣的幀率?分辨率呢?顏色模式呢?

通常,顯示器(顯示器,電視,屏幕等)僅使用RGB模型,以不同的方式組織,請參閱以下放大的部分:
在這裏插入圖片描述

Chroma subsampling(二次抽樣

由於圖像表示爲亮度和色度分量,我們可以利用人類視覺系統對亮度比色度更敏感的特點去有選擇的刪除信息。Chroma subsampling就是這種色度分辨率低於亮度分辨率進行編碼的技術。
在這裏插入圖片描述
那麼問題來了,我們應該降低多少色度分辨率呢?事實證明,已經有一些模式描述瞭如何處理分辨率和合並 (final color = Y + Cb + Cr).

實踐:檢查YCbCr直方圖

您可以使用ffmpeg檢查YCbCr直方圖。此場景具有更高的藍色貢獻,直方圖顯示。

ffmpeg -i /files/v/small_bunny_1080p_30fps.mp4 -vf "split=2[a][b],[b]histogram,format=yuv420p[hh],[a][hh]overlay" /files/v/small_bunny_yuv_histogram.mp4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章