Duanxx的HEVC學習(三)HEVC編碼框架(二)幀內預測

、幀內預測簡要說明

         幀內預測,是針對一幀圖像內部信息做的一種預測模式,它主要針對的是圖像中的空間冗餘(空間冗餘指的是圖像相鄰像素或像素塊之間有較強的相關性,粗魯的說,就是一副圖像中有些地方看起來差不多)。

 

         如下圖,這位美女的頭上的兩個紅色方框看上起是差不多的(專業的說法叫做相關性強,對於相關性當然是有專門的相關性判別函數的),既然差不多那麼我可以考慮只把左邊的圖像塊編碼,而右邊的圖像塊直接從左邊的圖像塊生成,那麼可以說右邊的那個色塊是由左邊那個色塊做幀內預測而來的




         再看下面這張圖片,這是編碼的一瞬間,左邊有圖片的區域是已經完成編碼的區域,而右邊白色的區域是待編碼的區域,T1~T6是正在編碼的塊(這個還涉及WPP相關的內容此處暫時不予討論),可以看出,如果是幀內編碼,那麼已編碼的塊就是當前正在編碼的T1~T6的左邊、上邊、左上方的一些色塊。對於一副圖像而言,由於圖像內部的連續性以及相關性(如上圖1中的兩個紅色框就是連續的,相關性強),那麼T1~T6就可以直接由以編碼的色塊做預測處理,預測出來,而不需要再進行編碼。




、幀內預測迴路

         幀內預測的整個迴路如下圖3所示





 

Step1:

         一幀圖片進入編碼器,被分割成CTU之後,通過紅色的線,進入(1)幀內估計中,這裏色塊對應於圖2中的T1~T6,是待預測的色塊。在(1)中找到和當前色塊相關性最高的色塊,這些相關性高的色塊是已解碼的色塊,在圖1中對應於T1~T6左邊、左上、上邊已解碼的色塊。


         注意:Intra-Picture Estimation這個模塊是有兩個輸入一個輸出的,上面箭頭的輸入是待預測的當前的色塊,而右邊的輸入是已經預測完成並經過了編碼量化和反編碼反量化之後的色塊


         也就是說,在(1)中基於前面已經解碼出來的色塊,在已解碼的色塊中,找到和當前色塊先關性最高的色塊,並且將這個相關性最高的色塊的方向向量和預測模式做Intra Prediction Data放入碼流中,以便解碼器找到當前塊做幀內預測時的參考塊

         找到相關性最高的色塊後,再進入(2),基於相關性最高的色塊對當前色塊做幀內預測

         有一點必須注意,(1)、(2)輸入的解碼塊,是沒有經過濾波的。主要是因爲幀內預測是根據一副圖片內部的相關性來做預測的,幀內預測之後的圖片相鄰色塊間的相關性強,在視覺上不存在特別大的塊效應(就是馬賽克),所以並沒有做濾波處理(這是相對於幀間預測的,幀間預測所依賴的已解碼塊是需要做濾波的)。

        

Step2:

         經過(1)(2)之後,得到的是做完幀內預測之後的圖片,然後經過籃紫色的那條線,進入(3),與原始圖片做差,求出殘差Residual。

         因爲編碼器內部有解碼器,而預測是基於解碼器解碼之後的圖片完成的,也就是說,在真正的解碼端,可以通過碼流中的Intra Prediction Data,得到當前色塊的參考塊及其預測模式,從而得到當前塊的預測值。但是,預測值和實際值總是有差別的,(3)的作用就是求出預測值Prediction和原始值Original之間的差別,即殘差Residual

Residual= Original – Prediction

         而解碼端可以自己得到Prediction,只要解碼端再得到Residual,那麼它就可以得到Original了。 

                                                        Original= Residual + Prediction

 

Step3:

         圖3中淺藍色的線表示的就是對Residual的變換和量化,主要DCT變換的方法來實現數據壓縮,將變換量化之後的係數放入碼流中。通過反變換和反量化就可以得到當前色塊的Residual了。


發佈了28 篇原創文章 · 獲贊 142 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章