H264編碼方式解析(1)

2021-06-03 11:52:11 字數 1620 閱讀 3577

h.264可用於手機電視廣播,開啟手機就可以收看數字電視節目。美國高等電視系統會議和日本無線電工業和事務協會都準備把h.264作為地面可攜式數字電視廣播的編碼方式。歐洲數字電視廣播標準化團體也正在將h.264作為數碼電視的一種編碼方式來採用。

甚至***論壇也在動作。d9型***碟片只有8.5gb容量,不夠放入2小時的hdtv節目,如用h.264來壓縮就有可能。這就是hd-***9格式,其畫質評價已經結束,標準正在制訂之中,等待許可條件的出台。

圖2是h.264編碼原理框圖,圖中,只要去除左上角的幀內**塊和右下角的環路濾波器,及對某些方框的補充說明,此圖同樣可用於表示mpeg-2和mpeg-4的操作流程。所以,圖中很容易看出h.264和mpeg的各種早期格式的主要差別。

對h.264來說,整個運算量在各部分的分配如下:幀間**和幀內**佔60%~70%,整數變換約佔10%,糾錯編碼約佔20%,環路濾波的10%。

mpeg的每秒25或30幀的畫面被分為構成方式不同的三種畫面:幀內編碼i畫面,前向**編碼p畫面和雙向**編碼b畫面。

p畫面用最近的i或p畫面作為比較基準進行運動**,只記錄下這幀畫面與基準畫面的不同之處。所以,編碼效率較高,資料量小,但還原畫面就需要前面的基準幀資料。若基準畫面已經有錯,那麼這個畫面上的錯誤會被傳下去,直到i畫面到來。

b畫面可以同時用前面和後面的畫面作為比較基準進行運動**。編碼壓縮率最大,資料量最小,而且不會傳遞錯誤。但需要附加儲存器,時間上有遲後,還不能作為以後的**基準。

h.264的變化之一是在幀內編碼i畫面中,又加入了幀內**編碼技術,即解碼時可用周圍資料的差分值來重構畫面。幀內**以特定大小的塊作為基準單元,從周圍畫素中**編碼化的模板。h.264的基準塊大小分4×4和16×16兩種,前者有9種**模式,**方向見圖3。後者也有4種模式。因為原影象左右、上下都有一定的相關性,不同部分的差分值總比不進行幀內**的原始值要少,故量化後的編碼量就減少了,而且高頻成分也比原影象為少。

運動**塊中採用了全面**技術,效果極好。h.264在運動向量的檢出時,能選定最合適的大小來進行,因而運動向量檢出的精度較高。見圖4。mpeg- 2只有乙個運動向量檢出模式,mpeg-4有2個,而h.264有7個之多。運動向量探索單元分得細,就能找到更多的靜態部分,真正的運動向量就能單獨求出,抑止了運動細節的編碼量。

在**中,可以利用的參考幀幀數也增加了。在h.264中,根據畫面清晰度的不同能有4到6個校正幀可用,因而能搜尋到突然消失那樣的蒙太奇畫面。h.264中,720×480畫素的d1格式畫面可以從前4幀的不同位置中**第5幀畫面。

全面**和幀內**在mpeg-2時代並非想不到,因當畫面畫素數和畫面品質要求提高時,運算處理量就會爆發性地增加,實時運用時有可能出現中斷。為此,mpeg-2和mpeg-4的運動**規格都指定了最低限,運動向量檢出編碼時的自由度不能太大。

h.264採用全面運動**和i畫面幀內**後,編碼量得到削減,但lsi的運算處理量增大。為此,引入了dct變換的簡化處理技術,來減輕lsi的負擔,畫質也有所改善。

具體技術是把原來的離散余弦變換dct改變為近似的整數變換,即把dct正交變換時用的係數1,0.414變成2,1;cos(π/8),cos (π/8)2變成1/(5)1/2,1/5。使原來必須用浮點運算進行的余弦函式運算,可用整數運算進行。同時還削減了係數的種類,使運算量減少。由於不必嚴格規定運算精度,還可以用simd(單指令多流資料)等操作快捷命令來執行。

H264編碼原理

條件 1.yuv格式為yuv420 2.解析度為640 480 3.幀率為15 建議碼流500kbps,通過計算可以得到h264壓縮比約為1 100。gop中幀與幀之間的差別小 有失真壓縮包括幀內壓縮和幀間壓縮,幀內壓縮解決的是空域資料冗餘問題,幀間壓縮解決的是時域資料冗餘的問題。無失真壓縮包括dc...

H264編碼原理

前言 h264是新一代的編碼標準,以高壓縮高質量和支援多種網路的流 傳輸著稱,在編碼方面,我理解的他的理論依據是 參照一段時間內影象的統計結果表明,在相鄰幾幅影象畫面中,一般有差別的畫素只有10 以內的點,亮度差值變化不超過2 而色度差值的變化只有1 以內。所以對於一段變化不大影象畫面,我們可以先編...

h264編碼分析 哥倫布編碼

1 首先h264為什麼選用哥倫布編碼?因為h264協議為了節省bits,沒有規定字段表示資料字段長度 資料字段可以根據自身的實際值,可長可短,這樣可以大程度上的節省bit。2 無符號指數哥倫布編碼如何編碼的?在實際資料前面有幾個0就表示,有效資料位數是多少,理解為長度字段,然後資料數值 數值 1,因...