視頻編解碼芯片設計原理----01 概論
本系列主要介紹視頻編解碼芯片的設計,以HEVC視頻編碼標準為基礎,簡要介紹編解碼芯片的整體硬件架構設計以及各核心模塊的算法優化與硬件流水線設計。本文為概論部分,將簡單介紹圖像視頻的基本信息和視頻編碼的基礎知識。
隨著信息時代的高速發展,視頻已經成為了不可或缺的信息載體。為了便于對視頻進行存儲和傳輸,實際應用中必須對龐大的視頻數據量進行壓縮,即視頻編碼 (Video Coding)。
1視頻的組成
幀
視頻是按照一定時間間隔采集的靜止圖像序列,一幅圖像也被稱為一幀 (frame)。
像素
在空間維度上,一幀圖像可以視為一個像素 (pixel) 點陣,像素是圖像不可分割的最小單位。
分辨率
像素的行列數用于表示圖像的(空間)分辨率。對于面積相同的圖像,分辨率越高,圖像細節越清晰。
幀率
每秒包含的幀數被稱為幀率,單位為fps (frame per second)。幀率更高的視頻能夠給人更加平滑連貫的視覺體驗,能夠流暢地顯示高速運動的視頻。
場
為了節約傳輸帶寬,或者提高時間采樣率,可以將一幀分為兩個場(field) 分別掃描。先掃描所有奇數行構成頂場,再掃描所有偶數行構成底場。
量化空間
像素的幅度值如果用n比特進行表示,則稱量化深度為n。要采集或呈現高動態范圍 (HDR) 的圖像,就需要較大的量化深度。
碼率
碼率又稱比特率,是指單位時間傳送數據的比特數,單位為bps (bit per second)。常見單位有每秒千比特 (kbps)、每秒兆比特 (Mbps) 等。
2色彩空間
RGB色彩空間
根據三基色原理,自然界中的絕大部分色彩,都可以由三種基色按一定比例混合得到;反之,任意一種色彩均可被分解為三種基色。其中,人眼對紅 (R)、綠 (G)、藍 (B) 三種顏色最為敏感,而采用這三種基色表示色彩的方法,即為RGB色彩空間。顏色是由亮度 (luma) 和色度 (chroma) 共同表示的,色度反映的是不包括亮度在內的色彩信息。但是,RGB色彩空間的三個分量值均與亮度相關,一旦亮度發生改變,三個分量的值均會相應改變,因此RGB色彩空間并非圖像處理的最佳選擇。
YUV色彩空間
YUV色彩空間使用1個亮度分量 (Y) 和兩個色度分量 (U、V) 來表示像素。在YUV家族中,YCbCr是應用最為廣泛的,其中Cb指藍色色度分量,Cr指紅色色度分量。相較于亮度,人眼對色度的敏感程度更低,因此可以適當降低色度的采樣精度來節約比特數,即色度亞采樣。下圖展現了常見視頻采樣格式中,亮度和色度樣本的位置分布。以4:2:0格式 (YUV420) 為例,色度在垂直、水平方向上的采樣精度,均只有亮度采樣精度的1/2。
3數據冗余
視頻中存在著大量的冗余,而視頻編碼本質上就是要消除這些冗余,從而實現對視頻數據的壓縮。各種類型的冗余為圖像序列的編碼壓縮提供了廣闊的空間。
目前廣泛應用的混合編碼架構,就基于不同的冗余提出了許多編碼工具,如基于空間冗余的幀內預測,基于時間冗余的幀間預測,基于視覺冗余的量化,基于信息熵冗余的熵編碼,以及基于數學的變換等等。
4編碼層次
對于視頻編解碼而言,編碼單元反映了處理的基本單位。目前,塊級編碼在視頻編碼算法中使用得最為廣泛。為了組織編解碼的架構,定義了如下圖所示的編碼層次,依次為序列、圖像組、幀/圖像、切片、編碼單元(塊/子塊)。編碼過程按照編碼層次,逐層深入、依次進行。而解碼過程則是編碼的逆過程。