1. 程式人生 > >HEVC/H.265——幀內預測

HEVC/H.265——幀內預測

轉載至:https://blog.csdn.net/NB_vol_1/article/details/53288626 感謝一下作者一、幀內預測,利用當前影象內已經編碼的畫素生成預測值二、生成預測值之後,和原始的值相減,得到殘差,後續的變換量化等操作就是基於殘差進行處理的三、幀內預測的大致流程是這樣的(1)遍歷所有的預測模式,得到每種模式下的殘差訊號,再對殘差訊號進行Hadamard變換計算SATD值(2)利用SATD值計算每種預測模式的率失真代價,選取率失真代價最小的幾種模式(與PU大小相關)為預測模式集(3)將已編碼相鄰塊的預測模式補充到預測模式集中(4)遍歷模式集合中的所有模式,並對殘差訊號進行正常編碼(熵編碼),計算率失真代價(5)選取最優的預測模式作為該PU的最優模式(6)當亮度塊的模式確定之後,把該模式以及DC、planar、水平方向模式、垂直方向模式作為色度塊的候選模式,選取最優的模式即可四、HEVC的幀內預測1、支援五種大小的PU(PU就是預測單元,由CU分割得來):4x4~64x642、每一種PU都有35種預測模式,包括planar模式(模式0) ,DC模式(模式1)和33種角度模式,模式2~17是水平類模式,模式18~34稱為垂直類模式3、HEVC的PU會參考右上角、上面、左上角、左邊、左下角的相鄰塊的邊界畫素(但是不一定全部都參考)4、planar模式把水平和垂直方向上的平均值作為當前畫素的預測值;DC模式適用於大面積的平坦區域5、亮度模式的預測     (1)先用率失真優化的方式選取幾個代價小的模式作為預測模式集     (2)利用相鄰塊的預測模式來對當前塊的模式進行預測,得到若干模式(存放在candList中),然後新增到預測模式集中          ①假設當前塊的左邊是A,上面的是B               ②如果modeA==modeB               a)modeA和modeB都是planar或者DC模式,那麼candList[0] =planar,candList[1]=DC,candList[2]=26               b)modeA和modeB都是角度模式,那麼,candList[0]=modeA,candList[1]和candList[2]等於modeA相鄰的兩個模式          ③如果modeA!=modeB,那麼candList[0]=modeA,candList[1]=modeB,candList[2]則要分幾種情況               a)modeA和modeB都不是planar模式,那麼candList[2]=planar               b)當a)不滿足,而且modeA和modeB都不是DC模式,那麼candList[2]=DC               c)當a)和b)不滿足,candList[2]=26     (3)遍歷預測模式集,獲取最優的模式(假設為modeC),需要進行下面一些處理:          ①如果modeC在candList中出現(就是說最優模式modeC是candList的成員),那麼只需編碼modeC在candList中的位置即可          ②如果modeC不在candList中出現,那麼按照下面的步驟編碼modeC               a)把candList中的模式按照從小到大的順序重新排序               b)遍歷candList的元素,分別與modeC比較,如果modeC >=candList[i],那麼modeC自減1               c)對modeC的值進行編碼         6、色度模式的預測     (1)色度模式的候選模式是:planar模式,DC模式、水平模式、垂直模式,對應的亮度分量的模式     (2)調整模式:如果對應的亮度分量的模式和(planar,DC、水平、垂直)這幾種模式中的一個重複了,那麼把對應亮度分量模式改成模式34     (3)遍歷候選的模式,選出最優的模式,然後直接對色度分量的模式的編號進行編碼(會經過一定的判斷和調整,細節就不說了)。附色度分量的模式的編號:          模式0:planar          模式1:垂直模式(即角度模式26)          模式2:水平模式(即角度模式10)          模式3::DC模式          模式4:對應亮度分量模式四、實現技術1、理論上預測模式是在PU的基礎上定義的,但是實際的實現中是以TU為單位的,因為PU可以按照四叉樹的方式劃分成為TU。但是呢,一個PU內的所有TU都是用同一個預測模式(因此實際上還是相當於以PU即單位進行的)2、判斷當前TU相鄰參考畫素是否可以使用,然後做相應的處理     (1)slice(或者tile)的幀內參考是不能跨越slice邊界的,因此處於slice邊界的TU的某些參考畫素是不可用的     (2)當某些參考畫素不可用時,HEVC會使用最鄰近的畫素進行填充;如果所有的參考畫素都不可用,那麼使用固定值填充,即把所有的參考值填充為某一個固定值,固定值R=1<<(BitDepth - 1)3、對參考畫素進行濾波     (1)濾波的目的是為了更好利用鄰近畫素之間的相關性,提高預測精度     (2)針對不同大小的TU選擇不同數量的模式進行濾波(所謂濾波就是,如果當前TU選擇了某一個模式進行預測,那麼需要判斷,對於該模式,是否需要對參考畫素進行濾波)          ①DC模式和以及4x4大小的TU不需要進行濾波          ②32x32的TU:除了水平模式(模式10)和垂直模式(模式26),其他模式都需要進行濾波          ③16x16的TU:在32x32TU的基礎上去除最接近水平和垂直方向的4個模式——模式9、模式11、模式25、模式27          ④8x8的TU:僅對3個45度的模式(模式2,18,34)以及planar模式進行濾波     (3)常規濾波,有一個計算的公式,不細講     (4)強濾波,這是HEVC新增的一個濾波方法,不細講4、根據濾波後的參考畫素計算當前TU的預測畫素值,反正就是根據一些公式計算出預測值

相關推薦

HEVC/H.265——預測

轉載至:https://blog.csdn.net/NB_vol_1/article/details/53288626 感謝一下作者一、幀內預測,利用當前影象內已經編碼的畫素生成預測值二、生成預測值之後,和原始的值相減,得到殘差,後續的變換量化等操作就是基於殘差進行處理的三、

HEVC亮度分量預測模式程式碼詳解

作者:66 (轉載請註明出處) 從我自身的學習歷程來看,建議大家先把理論紮實了再去理解程式碼,程式碼裡也有註釋,與理論的地方一對應加上一點C程式設計基礎很容易就能理解。 按從內到外的順序,能夠更清晰地理解程式碼實現。 1. HEVC幀內Planar模式預測-預測畫素計算

HEVC中的預測模式選擇(Intra prediction mode selection in HEVC

HEVC標準提供35個幀內預測模式,包括一個DC模式, 一個Planar模式,以及33個Angular模式。   在HEVC的test model HM10.0中,對於幀內預測的模式選擇可以總結為:35個預測模式首先根據STAD的方式,利用Hadamard變換,選擇RD-c

H.266/VVC預測框架

本人是西電研一的一名普通學生,現在在通院信科所多媒體通訊實驗室,主要研究方向是視訊編碼標準H.266/VVC。      如很多剛上研同學一樣,入學以來經歷了迷茫、對科研方向無從下手等問題。兩個月來,在理清視訊編碼結構後,終於漸漸理解並敢於修改VVC的程式碼。準備在部落格這個平臺上記錄自己的

HEVC 預測

幀內預測使用TU塊。利用當前圖片已經編碼的畫素進行預測。 預測模式 幀內預測可用塊大小為幀內預測分成35種預測模式,其中33種角度預測(2-34),Planar預測(0)和DC預測(1)。支援塊大小從4x4到64x64。 MPM選擇 亮度預測 當進行亮度預測時

HEVC學習-預測-initAdiPattern函式

#define MAX_CU_DEPTH 6 // log2(LCUSize) 最大CU深度為6 #define MAX_CU_SIZE (1&l

HEVC學習(三) —— 預測系列之一

今天開始進入實質性內容的討論,主要是從程式碼實現的角度比較深入地研究幀內預測演算法。由於幀內預測涉及到的函式的數量相對於編解碼器複雜部分來說少,但事實上大大小小也牽涉到了十幾二十個函式(沒具體統計過,只是大概估算了下),想要一下子討論完比較困難,所以打算在接下來的若干篇文章

HEVC學習(五) —— 預測系列之三

今天主要介紹幀內預測一個很重要的函式initAdiPattern,它的主要功能有三個,(1)檢測當前PU的相鄰樣點包括左上、上、右上、左、左下鄰域樣點值的可用性,或者說檢查這些點是否存在;(2)參考樣點的替換過程,主要實現的是JCTVC-J1003即draft 8.4.4.

H.264預測編碼之預測

預測編碼是視訊壓縮中最基本的編碼工具,常見的預測編碼為幀間預測和幀內預測。 視訊編碼中,主要的冗餘資訊是時間冗餘,其次是空間冗餘,視訊編碼通過幀間預測消除時間冗餘,通過幀內預測消除空間冗餘。接下來說說

HEVC預測:fillReferenceSamples函式講解

將自己看到的對我幫助很大的文章轉載於此,方便下次查閱。 今天開始進入實質性內容的討論,主要是從程式碼實現的角度比較深入地研究幀內預測演算法。由於幀內預測涉及到的函式的數量相對於編解碼器複雜部分來說少,但事實上大大小小也牽涉到了十幾二十個函式(沒具體統計過,只是大概估

HEVC預測(1)

HEVC的幀內預測(intra prediction),即intra塊的預測過程,為intra塊解碼提供預測值(predSamples[ x ][ y ])。 首先要確定當前塊和鄰塊的關係。

VVC程式碼 BMS 預測學習之四:xFillReferenceSamples()

xFillReferenceSamples()函式是參考畫素的獲取過程。 主要步驟: 1、分析臨近的畫素是否可獲取 2、進行參考樣本的填充:若臨近的畫素全部可獲取,則賦值;全部不可獲取,則賦預設值;若部分可獲取,則對可獲取的賦對應的值,不可獲取的用預設值填充。

VVC程式碼 BMS 預測學習之六:Planar、DC及角度模式下預測值的計算

1、Planar模式,函式xPredIntraPlanar(): 預測畫素是水平、垂直兩個方向上4個參考畫素的平均值。 left, top為預測畫素正左,正上方參考畫素值; right = leftColumn[height]- left, bottom =

ffmpeg libx264視訊編碼過程中預測模式a->i_predict4x4[idx]的獲取問題

analyse.c的函式static void x264_mb_analyse_intra(...)中有這麼一段程式碼: if( i_best > 0 )  //註釋來自leixiaohua大神                 {                 

HEVC/H.265理論知識(10)——率失真優化

這一章很重要!!!!!!! 一、率失真優化的目標就是: 1、在一定的位元速率(位元速率也表現為資料壓縮的程度,位元速率越低,資料壓縮的越厲害)限制下,減少視訊的失真(減少失真就會提高視訊的主觀質量,看的人就會喜歡o(*≧▽≦)ツ)! 2、在允許一定的失真下,把視訊壓縮到最

HEVC/H.265理論知識(7)——環路濾波

一、環路濾波的目的是為了提高視訊質量,降低去方塊效應和振鈴效應。 二、環路濾波可以分成兩大步驟: 1、去方塊濾波 2、SAO(畫素自適應補償) 三、去方塊濾波介紹 1、方塊效應是編碼塊邊界的不連續性,因為HEVC是一個基於塊的混合編碼框架,各個編碼塊的操作是相互獨立的,

33、編碼一個CU(部分)2、預測各種模式的實現

HEVC中一共定義了35中幀內編碼預測模式,編號分別以0-34定義。其中模式0定義為平面模式(INTRA_PLANAR),模式1定義為均值模式(INTRA_DC),模式2~34定義為角度預測模式(INTRA_ANGULAR2~INTRA_ANGULAR34),分別代表了不同

【miscellaneous】最新HEVC/H.265 4K視訊,顯示卡解碼測試

轉載自:http://bbs.zol.com.cn/diybbs/d34441_76103.html 4K這個概念也在最近幾年開始流行了起來,無論是4K顯示器、4K電視盒子,還是4K遊戲對硬體的要求也越來越高。很多玩家,為了達到“4K”標準,不得不去升級自己的裝置。最近

HEVC/H.265 Bistream Analysis Tools

Currently in markets, there are few good HEVC/H.265 data analysis tools for developers, such as Vega HEVC,  Elecard HEVC Analyzer,Parabo

華為:解讀下一代視訊壓縮標準HEVC(H.265)

 概述   H.264(AVC)從2003年5月草稿釋出以來,憑藉其相對於以往的視訊壓縮標準在壓縮效率以及網路適應性方面的明顯優勢,逐步成為視訊應用領域的主流標準。根據 MeFeedia的資料,由於iPad 以及其它新興裝置大多支援H.264 硬體加速,至2011年底,80%的視訊使用H.264編碼,並