H264 幀內壓縮技術整理

2021-10-12 18:35:26 字數 1619 閱讀 4697

幀內壓縮,解決的是空域資料冗餘問題(一張內部的資料壓縮問題)。

比如:一張天然色背景的壓縮,背景天然色是可以用一部分很小的資料量儲存,解壓縮時可以通過很少的資料量還原回去。對於幀內的物體也有實際的演算法。

幀間壓縮,解決的是時域資料冗餘問題

隨著時間推移每個時間段是有幀資料的,他們是有參考的。

整數離散余弦變換(dct),將空間上的相關性變為頻域上無關的資料然後進行量化

cabac壓縮

巨集塊的尺寸有:16x16 8x16 16x8 8x8  4x8 4x4 8x4

幀內壓縮理論

1、相鄰畫素差別不大,所以可以進行巨集塊**

2、人對亮度的敏感度超過色度

3、yuv很容易將亮度與色度分開

根據已知的模組來推測下乙個模組的資料。

幀內**,九種**模式

從某乙個巨集塊為基礎,在這個巨集塊下邊或者右邊的巨集塊是什麼,進行推算的時候實際用九種模式的一種來計算,哪種最近接原來的模組就選擇哪種模式,有相關的**。

把所有巨集塊進行處理,標記每個巨集塊具體使用的模式。

根據巨集塊所選用的模式來**巨集塊的值,以下是具體的九種模式

上圖橫向a-h和豎向i-l是已經知道的值,白色方格仔就是待**的巨集塊,中小寫字母的值是待**填充的部分。

如果是豎向**,圖中第一中,那麼小方格的值就是按箭頭所指的方向填充,巨集塊中第一列的值就全是a, 第二例全是b,以此類推。

如果是橫向**,圖中第二中,那麼小方格的值就是按箭頭所指的方向填充,巨集塊中第一行的值就全是a, 第二行全是b,以此類推。

第三個圖就是求平均值,即巨集塊的值是其周圍已經**巨集塊橫向和豎向所有畫素的值。

其他幾種模式按箭頭方向**,如上箭頭方式類推。

不同模式的**結果是不一樣的,第乙個圖是垂直**,第二個水平**,第三個求平均,如下;

幀內**舉例

1、根據所選定的模式**各個模組的值,之後得到一張**圖。

2、**圖與原始圖進行比較得到殘差值。

3、將**時使用的模式資訊(prediction mode info ) 和**的殘差值(residual)進行壓縮,之後進行傳輸。

4、解碼端根據傳輸過來的i幀和**模式資訊,以及殘差值還原影象。 

幀內壓縮幀型別

i 幀idr 幀

H 264參考幀管理

引言 h 264相對於以前的標準,採用了多參考幀的技術,提高了編碼器的效能,但也增加了實現的複雜度,在理解上也加大了難度。下面是我近來參閱一些資料的總結 frame num 標誌片的解碼順序,當前影象是idr 立即重新整理影象 時,設定為0 相對於前面乙個參考幀 解碼順序 增加1 poctype0 ...

H 264多參考幀

h264中允許從多至15個幀裡面選擇1幀或者2幀出來作為參考進行 所以必須引入乙個列表來管理這些參考影象,對與p slice而言,對應 list0,對於 b slice 而言,還需要多乙個 list1,因為 b slice 是進行的兩次 乙個前向乙個後向 兩個前向 兩個後向 參考幀分為 long t...

h264幀邊界識別

幀邊界識別簡介 h.264 將構成一幀影象所有nalu 的集合稱為乙個au,幀邊界識別實際上就是識別au。因為h.264 取消幀級語法,所以無法簡單地從碼流中獲取au。解碼器只有在解碼的過 程中,通過某些語法元素的組合才能判斷一幀影象是否結束。一般來說,解碼器必須在完成一幀新影象的第乙個slice ...