H.264编码器基本原理
1.編碼器
相關概念
編碼器采用的是變換和預測的混合編碼法:采用混合編碼時候主要將圖像分為固定大小的塊,對塊進行壓縮編碼處理。
1.混合編碼:即將預測編碼和變換編碼結合起來。
??1.1 預測編碼:
????1.1.1 幀內預測:主要基于人眼對不同頻率的亮度敏感度不同。將實際像素和參考像素相減,得到差值,到接收端把預測值加上差值得到實際像素值。主要解決的是空間冗余問題。
????1.1.2 幀間預測:利用幀間的相關性,即利用已編碼視頻幀/場和基于塊的運動補償的預測模式進行編碼。幀間相關性比幀內相關性強。主要解決的是時間冗余問題。
??1.2 變換編碼:包括如K-L變換、離散余弦變換(DCT)等等。主要通過圖像的高頻和低頻部分進行變換。
????1.2.1 K-L變換:用圖像的每行陣列進行變換
????1.2.2 DCT變換:一般將圖像分為多個塊,以塊為單位進行DCT變換。
1.視頻的一場或一幀都是可產生一個編碼圖像
2.通過比較當前幀與前一陣得出運動矢量MV,將比較的MV輸入運動補償預測期,可得到預測圖像。
運動補償的概念
1.通過比較當前幀與前一幀得出運動矢量MV,將比較的MV輸入運動補償預測期,可得到預測圖像。
2.前向參考幀預測當前幀稱為前向運動補償,利用后向參考幀預測當前幀稱為后向運動補償,利用前后向同時預測的就稱為雙向預測運動補償
3.重疊塊運動補償OBMC,采用OBMC時候,一個像素的預測不僅基于他所屬的MV估計,也基于相鄰的MV估計。
運動估計的概念,運動矢量的概念
1.幀間預測中,因為鄰近幀存在相關性, 可將活動圖像分為若干塊/宏塊,并設法搜索出每個塊或宏塊在鄰近幀圖像的位置,得出兩者的空間位置的偏移量,得到的偏移量即所指的運動矢量MV,這個過程為運動估計。
熵編碼概念 CAVLC(基于上下文自適應的可變長編碼)
1.利用信源的統計特性進行碼率壓縮的編碼就稱為熵編碼,也叫統計編碼熵編碼,主要包括變長編碼和算術編碼。
2.熵編碼是無損壓縮編碼方法,它生成的碼流可以經解碼無失真地恢復出原數據
3.熵編碼的輸入參數為幀內/幀間預測殘差經過變換-量化后的系數矩陣。數據壓縮的一個基本的途徑是去除信源的符號之間的相關性,盡可能地使序列成為無記憶的,即前一符號的出現不影響以后任何一個符號出現的概率。
CAVLC基本原理
根據已編碼句法元素的情況動態調整編碼中使用的碼表,有很高的壓縮比。CAVLC用于亮度和色度殘差數據的編碼,CAVLC充分利用殘差經過整數變換、量化后數據的特性進行壓縮,進一步減少數據中的冗余信息。
CAVLC的上下文模型
CAVLC中上下文模型的選擇主要體現在兩個方面:非零系數編碼所需表格的選擇以及拖尾系數后綴長度的更新。
量化的概念
因為經過取樣的脈沖信號在時間上是離散的,但在幅值上空間上仍是連續的,即其可能取的值有無限多個,所有要將其可能的取值進行四舍五入,由無限多個變為有限多個,即將這種信號幅值由連續量變為離散量的過為量化。
量化后進行PCM編碼,將量化信號變為0,1表示。
H.264的功能分為兩層
視頻編碼層(VCL)和網絡提取層(NAL,Network Abstraction Layer)。VCL數據即編碼處理的輸出,它表示被壓縮編碼后的視頻數據序列。在VCL數據傳輸或存儲之前,這些編碼的VCL數據,先被映射或封裝進NAL單元中。
經過壓縮后的幀分為:I幀,P幀和B幀
I幀:關鍵幀,采用幀內壓縮技術。
P幀:向前參考幀,在壓縮時,只參考前面已經處理的幀。采用幀間壓縮技術。
B幀:雙向參考幀,在壓縮時,它即參考前面的幀,又參考它后面的幀。采用幀間壓縮技術。
濾波概念
編解碼器反變換量化后圖像會出現方塊效應。其產生的原因有兩個:①基于塊的幀內和幀間預測殘差的DCT變換。變換系數的量化過程相對粗糙,因而反量化過程恢復的變換系數帶有誤差,會造成在圖像塊邊界上的視覺不連續。
②第二個原因來自于運動補償預測。運動補償塊可能是從不是同一幀的不同位置上的內插樣點數據復制而來。因為運動補償塊的匹配不可能是絕對準確的,所以就會在復制塊的邊界上產生數據不連續。
編碼流程
1.通過采集到視頻幀,送到H264緩沖區中,編碼器將視頻幀中的每一幅圖片劃分為宏塊,在某些復雜的部分,還可細分為更小的子塊進行處理。
2.選擇幀內壓縮或者幀間壓縮:
??2.1 幀內壓縮:通過將當前像素值經過一維/二維的預測函數得到預測像素,將原始圖像和預測圖像的每個像素值進行相減的得到殘差值,先將預測信息暫存起來。對殘差數據進行變換編碼(DCT變換/K-L變換,主要是去除掉塊內的空間冗余,即像素間的相關性),變換后還需要經過量化將脈沖信號從無限變有限,即減少視覺恢復中不必要的信息,再對這個數據進行熵編碼(CABAC壓縮),即無損壓縮編碼方法,(這個過程主要是給高頻的數據短碼,低頻的數據長碼,以及根據上下文相關性壓縮),經過壓縮后的數據會暫存到NAL單元內。
??2.2幀間壓縮:在編碼器將幀分組后,編碼器會按順序從緩沖區取出頭部兩幀數據,進行宏塊掃描,當發現其中一個物體時,在另一幀也發現該物體,則進行運動矢量的計算,得到運動矢量MV后(得到運動矢量的過為運動估計),將兩幀圖像相同部分減去,就得到補償數據,暫存到NAL單元內,然后將運動矢量和補償數據發送到解碼端進行解碼。
2.解碼器
1.輸入參數為NAL壓縮后的存儲數據,經熵解碼得到量化后的一組變換系數X,再經反量化、反變換,得到殘差Dn’。利用從該比特流中解碼出的頭信息,解碼器就產生一個預測塊PRED,該解碼器產生的PRED與殘差Dn’相加后,就產生uFu’,再經濾波后,最后就得到濾波后的Fn’,這個Fn’就是最后的解碼輸出圖像。
總結
以上是生活随笔為你收集整理的H.264编码器基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光影魔术手下载|光影魔术手下载
- 下一篇: 流程管理模板规范及相关表单