HEVC 編解碼框架

一、基本的編解碼原理

1、 包含的模塊、每個模塊的作用、 模塊的原理

     編碼器的流程:首先編碼器是將yuv數據經過不同的 協議的 算法 壓縮 成對應協議的流。具體來說首先將原始圖像進行分塊, 然後編碼器中的預測模塊 生成預測塊。 將原始圖像的塊  同預測塊相減 就得到殘差數據,殘差經過量化 變換 熵編碼  後得到碼流。這個碼流加上預測所需要的一些信息(如預測模式,mv數據等)組成編碼後的碼流數據。其中預測模塊的預測數據是從哪裏來的: 預測的數據來自於之前的殘差數據經過反變換、反量化、預測、 濾波後得到的重構數據。

    解碼器的流程: 首先將編碼後的碼流 經過熵解碼, 然後反變換 反量化然後幀內和幀間的預測  最後進行濾波 得到重構圖像。

1.1 碼流結構

編碼完成之後的碼流中還存在描述解碼相關的語法元素。  這些語法元素是按照編碼的分層結構進行組織的。

包括 sps、pps、vps。

按照層次從上到下 GOP(圖像組)-- 圖像 -- (slice)---(tile(不一定有))--- ctu -- cu

屬於GOP層語法元素 存儲在序列參數集(Sequence Parameter Set,SPS)

SPS包含了一個CVS (Coded Video Sequence)中所有圖像共用的信息。其中CVS被定義爲一個GOP編碼後所生成的壓縮數據。SPS的內容大致包括解碼相關信息,如檔次級別、分辨率、某檔次中編碼工具開關標識和涉及的參數、時域可分級信息等。

屬於Slice層中共用 的語法元素 存儲在圖像參數集(PictureParameter Set,PPS)

PPS包含一幅圖像所用的公共參數,即一幅圖像中所有SS引用同一個PPS。其大致內容包括初始圖像控制信息,如初始量化參數(Quantization Parameter,QP)、分塊信息等。此外,爲了兼容標準在其他應用.上的擴展,例如可分級視頻編碼器、多視點視頻編碼器,

視頻參數集( Video Parameter Set,VPS)

內容大致包括多個子層共享的語法元素,其他不屬於SPS的特定信息等。

對於-一個SS,通過引用它所使用的PPS,該PPS又引用其對應的SPS,該SPS又引用它對應的VPS,最終得到SS的公用信息。

參數集是一個獨立的數據單位,它包含視頻的不同層級編碼單元的共享信息,只有當參數集直接或間接被sS引用時纔有效。一個參數集並不對應某個特定的圖像或CVS,同一個VPS或SPS可以被多個CVS引用,同一個PPS可以被多個圖像引用。

uploading.4e448015.gif正在上傳…重新上傳取消

 

uploading.4e448015.gif正在上傳…重新上傳取消

 

1.2 幀間預測原理了解

    基於塊的方式進行處理的、從參考幀來預測預測當前像素的值。然後編碼傳輸預測值和參考值的預測殘差 以及 當前塊到參考塊的位移 稱爲運動向量。幀間預測是指利用視頻時間域的相關性,使用鄰近已編碼圖像像素預測當前圖像的像素,以達到有效去除視頻時域冗餘的目的。由於視頻序列通常包括較強的時域相關性,因此預測殘差通常是“平坦的”,即很多殘差值接近於“0”。將殘差信號作爲後續模塊的輸入進行變換、量化、掃描及熵編碼,可實現對視頻信號的高效壓縮。

    目前主要的視頻編碼標準幀間預測部分都採用了基於塊的運動補償技術。其主要原理是爲當前圖像的每個像素塊在之前已編碼圖像中尋找一個最佳匹配塊,該過程稱爲運動估計( Motion Estimation,ME)。其中用於預測的圖像稱爲參考圖(Reference Frame),參考塊到當前像素塊的位移稱爲運動向量(Motion Vector, MV),當前像素塊與參考塊的差值稱爲預測殘差( Prediction Residual )。

編碼 各種方法運用的目標是:

1、要保證解碼端恢復的圖像損失盡 可能的小 

2、同時編出來的碼流也要儘可能的小 

3、編碼複雜度也要儘可能的小

三個目標是相互矛盾、要保證碼流越小,那麼編碼損失的可能就越多。需要在這三個目標之間儘可能的達到平衡幀間預測各種方法的使用就是爲了保證上面目標 的平衡。有些方法是H261 H264 MPEG4 早前的協議進行 改進而來, 雖然增加了編碼複雜度, 但是可以實現編碼碼流小、編碼損失少。

1、 B幀圖像定義

    在H.261標準中,P圖像的預測方式必須是由前一幅圖像預測當前圖像,這種方式稱爲“前向預測”( Forward Prediction)。但實際場景中往往會產生不可預測的運動和遮擋,因此當前圖像的某些像素塊可能無法從之前的圖像中找到匹配塊,而在其之後的圖像中可以很容易地找到匹配塊。爲此,MPEG- -1標準”定義了第三類圖像-B圖像,並規定B圖像可以使用3種預測方式:前向預測、後向預測( Backward Prediction)以及雙向預測。這樣,B圖像中的一一個宏塊可對應兩個MV:--個由前向預測得來,另一個由後向預測得來。

2、亞像素精度運動估計

    由於自然界物體運動具有連續性,因此相鄰兩圖像之間物體的運動不一定是以整像素爲基本單位的,而有可能以半像素、1/4 像素甚至1/8像素爲單位。此時若僅使用整像素精度運動估計會出現匹配不準確的問題,導致運動補償殘差幅度較大,影響編碼效率。而應將運動估計的精度提升到亞像素級別,這可以通過對參考圖像像素點進行插值來實現。1/4像素精度相比於1/2 像素精度時的編碼效率有明顯的提高,但是1/8像素精度相比於1/4 像素精度時的編碼效率除了高碼率情況以外並沒有明顯的提升,而且1/8 像素精度運動估計更爲複雜。因此現有標準H.264/AVC以及H.265/HEVC都使用1/4 像素精度運動估計。插值就是利用周圍像素 在像素間的位置生成一個新的像素。

3、塊的劃分

    爲了儘量提高運動補償的精度,H.264/AVC 規定了7 種大小的運動補償塊, 分別爲16x16、 16x8、 8x16、8x8、8x4、4x8、4x4,並且一個宏塊內部允許存在不同大小塊的組合。編碼器可以根據視頻內容自適應地選擇塊大小,例如對於多細節運動區域以及兩個具有不同運動形式的不規則物體的邊界處可以使用小塊,而靜止區域或大面積共同運動區域可以使用較大的塊。

4、mv預測

    在大多數圖像和視頻中,一個運動物體可能會覆蓋多個運動補償塊,因此空間域相鄰塊的運動向量具有較強的相關性。若使用相鄰已編碼塊對當前塊MV進行預測,將二者差值進行編碼,則會大幅節省編碼MV所需的比特數。同時,由於物體運動具有連續  性,因此相鄰圖像同一位置像素塊的MV也具有一-定相關性。H.264/AVC 使用了空域和時域兩種MV的預測方式。空域跟時域預測 跟幀內、幀間預測的方式類似。

5、 merge 和 AVMP

    空域上相鄰塊的MV具有較強的相關性;同時,MV在時域上也具有一定的相關性。若利用空域或時域上相鄰塊的MV對當前塊MV進行預測,僅對預測殘差進行編碼,則能夠大幅節省MV的編碼比特數。H.265/HEVC在MV的預測方面提出了兩種新的技術一Merge技術和AMVP技術。Merge和AMVP技術都使用了空域和時域MV預測的思想,通過建立候選MV列表,選取性能最優的-一個作爲當前PU的預測MV。二者區別主要表現在以下方面。①Merge可以看成一種編碼模式,在該模式下,當前PU的MV直接由空域(或時域),上鄰近的PU預測得到,不存在MVD;而AMVP可以看成一-種MV預測技術,編碼器只需要對實際MV與預測MV的差值進行編碼,因此是存在MVD的。

Merge技術和AMVP技術 都分別包含了空域和 時域兩種方式。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章