關於視頻編解碼的一些基礎知識


因為最近看IMX6Q的VPU示例代碼有些概念不懂,所以看了《 基於H.264的視頻編碼處理技術與應用》這本書的前幾章了解了一下,做一個簡單的記錄。

顏色模型

我們平常能接觸到的是RGB和YUV。

RGB

RGB一般用在電視,顯示器等設備上,而非科學研究中,因為三種顏色分量放在一起表示,相互干擾,不便處理。而且會造成存儲空間的浪費。

YUV顏色空間:

其中Y代表亮度值,U和V表示色度,代表了顏色的色調Cr飽和度Cb
與RGB不同,其優點是亮度Y和色度UV是相互獨立的,占用頻寬小。如果只有Y信號,就是黑白彩色圖像。
因為人眼對顏色細節的分辨能力遠遠低於對亮度細節分辨能力,所以可以把幾個相鄰像素不同顏色值當做相同的顏色值來處理,以減少存儲容量,從而壓縮數據。按照不同的YCbCr的比率,可以分為YUV420、YUV422、YUV411和YUV444。
這篇博客對於他們的區別講的很好,主要差別在采樣率上,最后需要的存儲空間自然就不同了。
另外,YUV可以與RGB通過矩陣相互轉換。

編碼的基本原理

視頻編碼的目的是實現對視頻的壓縮,也可以稱作去除冗余。主要有以下幾種

分類 幀間冗余 幀內冗余 統計冗余 視覺冗余
說明 低速運動物體 大片的藍天 根據概率分配碼字 人眼對某些信息不易感知

針對以上冗余解決辦法有運動補償、幀內預測、熵編碼、量化等。

I幀、P幀和B幀

I幀:幀內預測編碼幀,是獨立的,可以當做是單獨的一幅靜態畫面。視頻序列中的第一幀都是I幀,因為它是關鍵幀。
P幀:幀間預測編碼幀,與前一幀有關,需要用到本幀和前一幀的信息(可以是I幀,也可是P幀)。由於P幀對前面的P和I參考幀有着復雜的依耐性,因此對傳輸錯誤非常敏感。
B幀:雙向預測編碼幀,記錄的是本幀與前后幀的差別。B幀壓縮率高,但是對解碼性能要求較高。
一般視頻傳輸使用的是I幀和P幀,比如海康的某些相機編碼I幀間隔是50,中間有49幀P幀。

H264/AVC

一幀(frame)可以分為若干個片(slice),向下還可以細分為宏塊等,一圖勝千言:

上圖來自於這篇文章,它對一些H264的基本概念講的很通俗易懂。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM