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

1.1 幀間預測簡要說明

         幀間預測(inte-Prediction),是針對一個視頻序列或其子序列在時序上的圖像信息預測模式,它主要用於消除視頻序列中的時間上的信息冗餘。

         關於時間冗餘,理解起來很簡單,一般來說,我們的視頻中的背景基本上是沒有變化的,只是人或者其他的什麼物體在移動,首先,背景在時間上就存在冗餘,既然當前幀和前一幀的背景基本上是一樣的,那麼直接用前一幀的背景,做一定的處理後,替換當前的背景就得了,沒必要在編碼當前的背景;其次,當前畫面中的移動的物體或者人在兩幀圖像之間基本上算是在平移的,既然基本上是平移,那麼直接將前一幀圖像中移動的人或者物體,加上一個向量,讓它基於背景做一個平移,就可以得到當前的圖像了,這樣的話,當前幀移動的物體或者人就不用編碼了,直接由前一幀圖像中對應的移動的物體或人平移一下就可以了

 

下面舉個簡單的例子:

         我從一段視頻中提取了其中連續的三幀圖像。很容易看出,這三幅圖像中的背景基本上是不變的,在傳輸是可以考慮只傳輸一個背景就夠了。而圖像中間的那個人在三幅圖像中感覺也沒什麼太大的變化,就是在圖像中的相對位置有了一些改變,那麼我也只需要對這個人做一次編碼,後面的圖片中只需要將人想對於背景最一點點的平移就足夠了。

.


圖1


圖2


圖3


當然,上面這個例子是比較理想的,只是爲了理解方便,在MPEG4中也考慮過對於這種基於背景和前景的幀間預測,不過貌似效果並沒有想想的那麼好。

        

1.2 關於視頻序列

         在編碼時,會將一個視頻序列分成一個個視頻子序列,這些子序列是基於相同或相似背景的,就像上面的例子中一樣,對這些基於不同背景分割出來的視頻子序列分別作幀內壓縮,可以得到很要的壓縮效果,當然這也是理想的,因爲我們要自適應的根據背景分割視頻子序列,還是比較麻煩的。

 

         一種簡單的方法就是將視頻序列按照等長劃分,將視頻劃分成一個個等長的視頻子序列,再這列子序列裏分別作幀內(這個可以參看《Duanxx的HEVC學習(三)HEVC編碼框架(二)幀內預測》)和幀間預測,HM代碼中將這個子序列叫做Gop,也就是一個Group的視頻,其結構如圖4:


圖4

在1.1的例子中,三幅圖像是我們看到的視頻的播放順序,但是在編碼的時候呢並不是按照視頻順序編碼的,在圖4中,POC是是圖片的計數,是播放順序,而Decode Order是解碼順序,同時也是編碼順序。

         其中,I幀做的是幀內預測,P幀做的是向前幀間預測,而B幀做的是雙向幀間預測。關於這些會在後面的文章中說明,此處只是爲了參悟一下編碼時的視頻序列問題。

 

、 幀間預測編碼迴路

         幀間預測的整個迴路如圖5所示:


圖5


Step1:

         圖像被分割成CTU後,首先沿着紅色的線進入(1)運動估計中,可以看到,Motion Estimation也是有兩個輸入的,左邊是原始的圖片,右邊是經過濾波的解碼後的圖片。運動估計的作用主要是在解碼後的圖片中找到和當前色塊最相似的色塊,而MV指的就是從當前色塊,如何找到參考圖像中對應的匹配色塊。

         Theencoding process for interpicture prediction consists of choosing motion data comprising the selected reference picture and motion vector(MV) to be applied for predicting the samples of each block. The encoder anddecoder generate identical interpicture predictionsignals by applying motion compensation (MC) using the MV and mode decision data,which are transmitted as side information.

         由上面這段話可以知道,motion Compensation主要就是基於MV做運動補償,在編碼器和解碼器得到相同的幀間預測。

         這裏的Motion Data就是MV和一些相關的預測模式,而解碼器,就是基於Motion Data,做Motion Compensation,進而得到當前圖片的inter-Prediction。

 

         (3)(4)(5) 的作用和幀內預測是一樣的,可參看《Duanxx的HEVC學習(三)HEVC編碼框架(二)幀內預測》。

 

         關於(6)的濾波,這裏需要說明一下,因爲預測的值和真實值無論怎樣都是有一定的差別的,並且隨着壓縮率的提高,這種差別就會越來越明顯,並且,在做預測的時候,都是按照一個色塊一個色塊的來編碼的,也就是說,在解碼之後的圖片也是以色塊爲單位出現差別的,更專業的說法叫做相關性弱。

         由於預測的失真,導致了相鄰色塊的相關性不強,甚至出現很大的差別,當這種差別比較大的時候,就出現了一種有意思的現象:馬賽克

         (6)是濾波模塊,說白了,就是儘量的消除相鄰色塊在邊界上的差異,也就是去馬賽克。

 

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