天天看點

數字視訊技術介紹 之 基本術語

公衆号回複:666,領取學習資源大禮包

這是一份循序漸進的視訊技術的介紹,來自 Github 倉庫:

​​https://github.com/leandromoreira/digital_video_introduction​​

本文檔旨在盡可能使用淺顯的詞語,豐富的圖像和實際例子介紹數字視訊概念,使這些知識能适用于各種場合。

有興趣了解更多内容的同學可以下載下傳倉庫源碼,這裡隻做摘錄,僅供參考。

基本術語

一個圖像可以視作一個二維矩陣。如果将色彩考慮進來,我們可以做出推廣:将這個圖像視作一個三維矩陣——多出來的次元用于儲存色彩資訊。

如果我們選擇三原色(紅、綠、藍)代表這些色彩,這就定義了三個平面:第一個是紅色平面,第二個是綠色平面,最後一個是藍色平面。

數字視訊技術介紹 之 基本術語

an image is a 3d matrix RGB

我們把這個矩陣裡的每一個點稱為像素(圖像元素)。像素的色彩由三原色的強度(通常用數值表示)表示。例如,一個紅色像素是指強度為 0 的綠色,強度為 0 的藍色和強度最大的紅色。粉色像素可以通過三種顔色的組合表示。如果規定強度的取值範圍是 0 到 255,紅色 255、綠色 192、藍色 203 則表示粉色。

編碼彩色圖像的其它方法

還有許多其它模型也可以用來表示色彩,進而組成圖像。例如,給每種顔色都标上序号(如下圖),這樣每個像素僅需一個位元組就可以表示出來,而不是 RGB 模型通常所需的 3 個。在這樣一個模型裡我們可以用一個二維矩陣來代替三維矩陣去表示我們的色彩,這将節省存儲空間,但色彩的數量将會受限。
數字視訊技術介紹 之 基本術語
NES palette

例如以下幾張圖檔。第一張包含所有顔色平面。剩下的分别是紅、綠、藍色平面(顯示為灰調)(譯注:顔色強度高的地方顯示為亮色,強度低為暗色)。

數字視訊技術介紹 之 基本術語

RGB channels intensity

我們可以看到,對于最終的成像,紅色平面對強度的貢獻更多(三個平面最亮的是紅色平面),藍色平面(最後一張圖檔)的貢獻大多隻在馬裡奧的眼睛和他衣服的一部分。所有顔色平面對馬裡奧的胡子(最暗的部分)均貢獻較少。

存儲顔色的強度,需要占用一定大小的資料空間,這個大小被稱為顔色深度。假如每個顔色(平面)的強度占用 8 bit(取值範圍為 0 到 255),那麼顔色深度就是 24(8*3)bit,我們還可以推導出我們可以使用 2 的 24 次方種不同的顔色。

很棒的學習材料:現實世界的照片是如何拍攝成 0 和 1 的。

圖檔的另一個屬性是分辨率,即一個平面内像素的數量。通常表示成寬*高,例如下面這張 4x4 的圖檔。

數字視訊技術介紹 之 基本術語

image resolution

自己動手:玩轉圖像和顔色

你可以使用 jupyter(python, numpy, matplotlib 等等)玩轉圖像。

你也可以學習圖像濾鏡(邊緣檢測,磨皮,模糊。。。)的原理。

圖像或視訊還有一個屬性是寬高比,它簡單地描述了圖像或像素的寬度和高度之間的比例關系。

當人們說這個電影或照片是 16:9 時,通常是指顯示寬高比(DAR),然而我們也可以有不同形狀的單個像素,我們稱為像素寬高比(PAR)。

數字視訊技術介紹 之 基本術語

display aspect ratio

數字視訊技術介紹 之 基本術語

pixel aspect ratio

DVD 的 DAR 是 4:3

雖然 DVD 的實際分辨率是 704x480,但它依然保持 4:3 的寬高比,因為它有一個 10:11(704x10/480x11)的 PAR。

現在我們可以将視訊定義為在機關時間内連續的 n 幀,這可以視作一個新的次元,n 即為幀率,若機關時間為秒,則等同于 FPS (每秒幀數 Frames Per Second)。

數字視訊技術介紹 之 基本術語

video

播放一段視訊每秒所需的資料量就是它的比特率(即常說的碼率)。

比特率 = 寬 * 高 * 顔色深度 * 幀每秒

例如,一段每秒 30 幀,每像素 24 bits,分辨率是 480x240 的視訊,如果我們不做任何壓縮,它将需要 82,944,000 比特每秒或 82.944 Mbps (30x480x240x24)。

當比特率幾乎恒定時稱為恒定比特率(CBR);但它也可以變化,稱為可變比特率(VBR)。

這個圖形顯示了一個受限的 VBR,當幀為黑色時不會花費太多的資料量。
數字視訊技術介紹 之 基本術語
constrained vbr

在早期,工程師們想出了一項技術能将視訊的感官幀率加倍而沒有消耗額外帶寬。這項技術被稱為隔行掃描;總的來說,它在一個時間點發送一個畫面——畫面用于填充螢幕的一半,而下一個時間點發送的畫面用于填充螢幕的另一半。

如今的螢幕渲染大多使用逐行掃描技術。這是一種顯示、存儲、傳輸運動圖像的方法,每幀中的所有行都會被依次繪制。

數字視訊技術介紹 之 基本術語

interlaced vs progressive

現在我們知道了數字化圖像的原理;它的顔色的編排方式;給定幀率和分辨率時,展示一個視訊需要花費多少比特率;它是恒定的(CBR)還是可變的(VBR);還有很多其它内容,如隔行掃描和 PAR。

自己動手:檢查視訊屬性

你可以使用 ffmpeg 或 mediainfo 檢查大多數屬性的解釋。
數字視訊技術介紹 之 基本術語