專利名稱:視頻編碼合并模式雙向補償方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)字視頻壓縮領(lǐng)域,具體涉及到視頻信號的預(yù)測補償方法。
背景技術(shù):
數(shù)字視頻是通過對時域和空域連續(xù)的自然場景進行時域和空域連續(xù)采樣所得。如圖1所示,數(shù)字視頻由一系列時域上的視頻幀所組成,每個視頻幀表示自然場景在某個時間的空域采樣,它由二維均勻采樣的視覺像素組成。每個像素由一系列描述像素亮度和色彩的數(shù)字組成,在視頻編碼中,最廣泛被使用的格式是YUV格式,這種格式中,每個像素由一個亮度分量Y,兩個色差分量U和V組成,一般對U和V分量水平和垂直方向各進行一次下采樣,這樣每相鄰的4個像素共用1個U和V分量,這就是YUV4 2 0格式。最廣泛被使用的視頻編碼技術(shù)是塊基混合編碼技術(shù)。如圖2所示,輸入幀被劈分成一個個16x16像素的宏塊,然后從左到右,從上到下依次進行編碼。對每個輸入的待編碼宏塊(以下簡稱為當(dāng)前宏塊),首先從重構(gòu)幀(已經(jīng)完成編碼的幀經(jīng)過解碼后得到的幀,可能有一個或多個)中選擇一個對當(dāng)前宏塊的預(yù)測,并與當(dāng)前塊相減,殘差依次執(zhí)行變換、量化,反量化、反變換得到重構(gòu)宏塊,存入重構(gòu)幀緩沖區(qū),用于對其后編碼的宏塊產(chǎn)生預(yù)測信號。在實際的預(yù)測過程中,宏塊常常被分割成更小的8x8或4x4塊來進行精確的預(yù)測。在后續(xù)的敘述中,我們用‘塊’來統(tǒng)一表示預(yù)測的單元,所說的塊包括但不限于16xl6、16x8、 8x16,8x8等各種尺寸和形狀。在塊基混合編碼技術(shù)中,一般有三種不同類型的幀,I幀(幀內(nèi)預(yù)測幀)、P幀(前向預(yù)測幀)和B幀(雙向預(yù)測幀)。I幀編碼時,只使用本幀中已編碼塊的信息來預(yù)測當(dāng)前塊,這種預(yù)測模式我們成為‘幀內(nèi)預(yù)測’。P幀編碼時,可以采用幀內(nèi)預(yù)測模式,也可以使用已經(jīng)完成編碼并且顯示順序在當(dāng)前幀之前的幀的重構(gòu)幀來預(yù)測當(dāng)前幀中的待編碼塊,我們稱之為‘前向預(yù)測’。如圖3所示, 顯示時間為tn的幀是當(dāng)前編碼幀,黑色塊是當(dāng)前編碼塊(以下簡稱‘當(dāng)前塊’)。顯示時間為tn_i、tn_2、tn_3的幀(tn_3 < tn_2 < tn_i < tn)已經(jīng)完成編碼并生成了重構(gòu)幀,它們都可以作為參考幀,用來預(yù)測當(dāng)前塊。編碼器在所有可用的參考幀中搜索與當(dāng)前塊最接近的塊作為當(dāng)前塊的預(yù)測塊。如圖3所示,編碼器最終選擇參考幀tn_i(這里用顯示時間來標(biāo)記參考幀,下同)中的BLKO作為當(dāng)前塊的預(yù)測塊,BLKO的位置用運動向量MVO來記錄,MVO= (x0, yO)_(x,y),其中(x0,y0)是BLKO在參考幀中的坐標(biāo),(x, y)是當(dāng)前塊在當(dāng)前幀中的坐標(biāo)。 (V1, MV0)構(gòu)成一組完整的預(yù)測參數(shù),作為當(dāng)前塊的編碼數(shù)據(jù)的一部分被編碼。在B幀中,可以使用幀內(nèi)預(yù)測模式,也可以使用已經(jīng)完成編碼的幀(顯示順序在當(dāng)前幀之前或之后都可以)的重構(gòu)幀來預(yù)測當(dāng)前幀中的待編碼塊,在P幀前向預(yù)測模式的基礎(chǔ)上又增加了若干新的預(yù)測模式。如圖4、5、6和7所示,顯示時間為tn的幀是當(dāng)前幀,黑色塊是當(dāng)前塊。顯示時間為 tn+l、tn—ι、 η_2Λ tn_3 的幀(tn_3 < tn_2 < V1 <tn< tn+1)已經(jīng)完成編碼并生成了重構(gòu)幀,它們都可以作為參考幀,用來預(yù)測當(dāng)前塊。在圖3中,運動向量MVO 指向當(dāng)前塊的前向預(yù)測塊BLK0。在圖4中,運動向量MVl指向當(dāng)前塊的后向預(yù)測塊BLK1,這種方式稱為‘后向預(yù)測’。在圖5中,運動向量MV指向當(dāng)前塊的前向預(yù)測塊BLK0,MV的反方向指向后向預(yù)測塊BLK1,BLKO和BLKl的平均作為當(dāng)前塊的預(yù)測塊,這種方式稱為‘對稱預(yù)測’。在圖6中,運動向量MVO指向當(dāng)前塊的前向預(yù)測塊BLK0,運動向量MVl指向當(dāng)前塊的后向預(yù)測塊BLK1,BLKO和BLKl的平均作為當(dāng)前塊的預(yù)測塊,這種方式稱為‘雙向預(yù)測’。 在前向預(yù)測、后向預(yù)測和對稱預(yù)測中,只有一組預(yù)測參數(shù)需要編碼,而在雙向預(yù)測模式中, 有兩組預(yù)測參數(shù)需要編碼。編碼器使用代價函數(shù)來選擇當(dāng)前塊的編碼方式。編碼當(dāng)前塊的代價用C表示,C = MIN{C幀內(nèi),C前向,C后向,C對稱,C雙向,· · · )■即編碼器在各種預(yù)測模式中選擇代價最小的方式作為當(dāng)前塊最終的編碼方式。而某一種預(yù)測模式的代價(用Cx表示)的計算方法如下Cx = MIN {Cbit+λ D}其中Cbit表示當(dāng)前塊的編碼總比特數(shù),D表示失真,λ是失真和比特數(shù)之間的換算系數(shù)。而ΜΙΝ{}表示在該預(yù)測模式下,遍歷所有可能的運動參數(shù)所得的最小值。顯然,在預(yù)測過程中,可以參考的信息(參考幀的數(shù)量)越多,參考的方式(前向、 后向、對稱、雙向等)越多,所得的預(yù)測塊和當(dāng)前塊越接近,預(yù)測的效果越好。但是,最終的壓縮效率不僅和預(yù)測的效果有關(guān),還和運動參數(shù)有關(guān),因為運動參數(shù)是編碼數(shù)據(jù)的一部分, 編碼運動參數(shù)也是需要比特數(shù)的。當(dāng)前塊的編碼總比特數(shù)Cbit等于編碼預(yù)測殘差所需的比特數(shù)加上編碼運動參數(shù)所需的比特數(shù)Cpp,當(dāng)預(yù)測的效果很好時,編碼預(yù)測殘差所需的比特數(shù)很少,經(jīng)常為0,這是編碼運動參數(shù)所需的比特數(shù)所占的比例就很大。因此,降低編碼運動參數(shù)所需的比特數(shù)很重要。本發(fā)明在原有的幀內(nèi)、前向、后向、對稱、雙向等預(yù)測模式基礎(chǔ)上,新增了一種新的預(yù)測模式。該預(yù)測模式充分利用已經(jīng)編碼的與當(dāng)前塊相鄰的塊的預(yù)測參數(shù),在保持只編碼一組預(yù)測參數(shù)的基礎(chǔ)上,可以實現(xiàn)效果更好的預(yù)測效果,從而提高了編碼效率。該預(yù)測模式可以用于對P幀和B幀的編碼。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種新的預(yù)測模式,其利用相鄰塊的預(yù)測參數(shù),不僅可以改善預(yù)測效果,而且沒有增加編碼預(yù)測參數(shù)的代價,從而有效地提高了壓縮率。為了解決上述技術(shù)問題本發(fā)明提供一種視頻編碼合并模式雙向補償方法,包括如下步驟步驟1、確定當(dāng)前塊的兩個相鄰塊;步驟2、根據(jù)兩相鄰塊的預(yù)測參數(shù)得出當(dāng)前塊的一個或兩個初步預(yù)測塊;步驟3、在所有可用的參考幀中,取得一個參考預(yù)測塊,將初步預(yù)測塊與參考預(yù)測塊的算術(shù)平均作為當(dāng)前塊的預(yù)測參考塊;搜索所有的預(yù)測參考塊,取代價最小的預(yù)測參考塊從而獲得最佳預(yù)測參數(shù);進一步地本發(fā)明的方法,還包括步驟4、用現(xiàn)有的方法編碼當(dāng)前塊,并獲得最小代價和原有預(yù)測參數(shù);步驟5、比較最佳預(yù)測參數(shù)與原有預(yù)測參數(shù),取代價小的作為最終的預(yù)測參數(shù)。
進一步地,所述的兩個相鄰塊分別為左相鄰塊和上相鄰塊由上述的技術(shù)方案可知,本發(fā)明的技術(shù)方案,是和原有任何一種預(yù)測模式不同的新的預(yù)測模式,它利用左相鄰塊或上相鄰塊的預(yù)測參數(shù)得出當(dāng)前塊的一個或兩個初步預(yù)測塊,具體地說就是如果左相鄰塊和上相鄰塊當(dāng)中有一個可用,那么就用那個可用的,可能是左相鄰塊,也可能是上相鄰塊,如果左相鄰塊和上相鄰塊都可用,那就同時用,得到兩個初步預(yù)測塊,然后在可用的參考幀中搜索另一個預(yù)測塊,將初步預(yù)測塊與該預(yù)測塊的算術(shù)平均作為當(dāng)前塊最終的預(yù)測塊。從而利用了更多的預(yù)測數(shù)據(jù),同時只需編碼一組預(yù)測參數(shù),有可能達到更高的壓縮效率。編碼器在編碼時,不是直接使用新的預(yù)測模式,而是將新的預(yù)測模式和原有的預(yù)測模式放在一起比較,從中選擇最優(yōu)的預(yù)測模式。這就保證了壓縮效率不會低于原有的技術(shù)方案。在最壞的情況下,也可以達到和原有技術(shù)方案一樣的壓縮效率。
圖1為數(shù)字視頻示例。圖2為塊基運動補償DCT變換視頻編碼器。圖3是P圖像中的運動補償。圖4是B圖像中的前向運動補償。圖5是B圖像中的后向運動補償。圖6是B圖像中的對稱運動補償。圖7是B圖像中的雙向運動補償。 圖8是P圖像中塊的合并補償。 圖9是B圖像中的前向合并補償。 圖10是B圖像中的后向合并補償。
具體實施例方式為了解決上述技術(shù)問題,本發(fā)明提供一種視頻編碼合并模式雙向補償方法,包括如下步驟,步驟1、確定當(dāng)前塊的左相鄰塊和上相鄰塊;步驟2、根據(jù)左相鄰塊或上相鄰塊的預(yù)測參數(shù)得出當(dāng)前塊的一個或兩個初步預(yù)測塊;步驟3、在所有可用的參考幀中,取得一個參考預(yù)測塊,將初步預(yù)測塊與參考預(yù)測塊的算術(shù)平均作為當(dāng)前塊的預(yù)測參考塊;搜索所有的預(yù)測參考塊,取代價最小的預(yù)測參考塊從而獲得最佳預(yù)測參數(shù);步驟4、用現(xiàn)有的方法編碼當(dāng)前塊,并獲得最小代價和原有預(yù)測參數(shù);步驟5、比較最佳預(yù)測參數(shù)與原有預(yù)測參數(shù),取代價小的作為最終的預(yù)測參數(shù)。為了更好地了解本發(fā)明的技術(shù)方案,下面結(jié)合一個最優(yōu)的實例對本發(fā)明的技術(shù)方案進行進一步的闡述一種視頻編碼合并模式雙向補償方法,包括如下步驟1、根據(jù)當(dāng)前塊的位置,判斷當(dāng)前塊的左相鄰塊和上相鄰塊是否存在。若當(dāng)前塊包含當(dāng)前幀的第一行像素,或者當(dāng)前塊包含當(dāng)前條帶(slice)的第一行像素,則上相鄰塊不存在;若當(dāng)前塊包含當(dāng)前幀的最左側(cè)第一列像素,或者當(dāng)前塊包含當(dāng)前條帶的最左側(cè)第一列像素,則左相鄰塊不存在;(注在現(xiàn)有的視頻編碼標(biāo)準如MPEG-2、H. 264, AVS等中,都把一幀劃分為若干獨立編碼和解碼的部分,稱為條帶或slice。條帶通常為矩形,屬于不同條帶的塊之間不能相互參考。當(dāng)條帶數(shù)為1時,就是整幀作為一個獨立編解碼的部分,相當(dāng)于沒有劃分條帶)2、根據(jù)當(dāng)前塊的位置確定左相鄰塊和上相鄰塊。如果左相鄰塊存在,則把左相鄰塊定義為包含當(dāng)前塊左上角像素左側(cè)那個像素的編碼塊;如果上相鄰塊存在,則把上相鄰塊定義為包含當(dāng)前塊左上角像素上側(cè)那個像素的編碼塊。左相鄰塊和上相鄰塊的大小和形狀可以和當(dāng)前塊不同。3、判斷左相鄰塊和上相鄰塊是否可用。如果左相鄰塊的預(yù)測模式是幀內(nèi)預(yù)測,則左相鄰塊不可用,否則可用;如果上相鄰塊的預(yù)測模式是幀內(nèi)預(yù)測,則上相鄰塊不可用,否則可用;4、獲取相鄰塊的預(yù)測參數(shù)。如果左相鄰塊可用,則讀取左相鄰塊的運動參數(shù),記為 PPL ;如果上相鄰塊可用,則讀取上相鄰塊的運動參數(shù),記為PPT。5、如果已獲得PPL,則將PPL用在當(dāng)前塊的預(yù)測上,得到的預(yù)測塊記為BLKL ;如果已獲得PPTJ^t PPT用在當(dāng)前塊的預(yù)測上,得到的預(yù)測塊記為BLKT ;6、在所有可用的參考幀中,搜索最佳預(yù)測參數(shù),使C = Cbit+X D達到最小。步驟如下6. 1 令 C = 10000,R = r = 0,X = x = 0,Y = y = 0,d = 0 ;其中 C 表示代價,R
和r表示參考幀索引,X和χ表示運動向量的水平分量,Y和y表示運動向量的垂直分量,d 表示相鄰塊,d = 0表示左,d = 1表示上。6. 2根據(jù)r、χ、y的值,取得預(yù)測塊BLK ;
N6. 3根據(jù)BLK,計算左合并代價Clrxy=Cbit+ λ D 刀如+汰)"-。,其中h表示預(yù)
1=1
測塊BLK中的第i個值,ai表示預(yù)測塊BLKL中的第i個值,Ci表示當(dāng)前塊的第i個值,N是當(dāng)前塊、BLK、BLKL所包含的像素數(shù)。如果Clny < C,則令C = Clrxy, R = r, X = x, Y = y, d =0
N6. 4根據(jù)BLK,計算上合并代價Ctrxy=Cbit+λ D 刀如+汰)"-。,其中bi表示預(yù)
1=1
測塊BLK中的第i個值,ai表示預(yù)測塊BLKT中的第i個值,Ci表示當(dāng)前塊的第i個值,N是當(dāng)前塊、BLK、BLKT所包含的像素數(shù)。如果Ctexy < C,則令C = Ctrxy, R = r, X = x, Y = y, d =16. 5如果r、χ、y的值已經(jīng)遍歷完,則輸出C、R、X、Y、d,搜索過程結(jié)束;如果r、χ、y 的值還沒有遍歷完,則取下一個可能的值,跳轉(zhuǎn)到步驟6. 2。7、用原有的方法編碼當(dāng)前塊,假設(shè)所得的最小代價和預(yù)測參數(shù)分別是CO和ΡΡ0, PPO表示某個原有預(yù)測模式(幀內(nèi)、前向、后向、雙向、對稱等)所需的全部預(yù)測參數(shù)。8、比較C和⑶,若C <⑶,則取R、X、Y、d作為最終的預(yù)測參數(shù),否則取PPO作為最終的預(yù)測參數(shù)。
上述實施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何本領(lǐng)域技術(shù)人員均可在不違背本發(fā)明的精神及范疇下,對上述實施例進行修飾與改變。因此,本發(fā)明的權(quán)利保護范圍,應(yīng)如權(quán)利要求書所列。
權(quán)利要求
1.一種視頻編碼合并模式雙向補償方法,其特征在于,包括如下步驟步驟1、確定當(dāng)前塊的兩相鄰塊;步驟2、根據(jù)兩相鄰塊的預(yù)測參數(shù)得出當(dāng)前塊的一個或兩個初步預(yù)測塊;步驟3、在所有可用的參考幀中,取得一個參考預(yù)測塊,將初步預(yù)測塊與參考預(yù)測塊的算術(shù)平均作為當(dāng)前塊的預(yù)測參考塊;搜索所有的預(yù)測參考塊,取代價最小的預(yù)測參考塊從而獲得最佳預(yù)測參數(shù)。
2.根據(jù)權(quán)利要求1所述的視頻編碼合并模式雙向補償方法,其特征在于,還包括步驟4、用現(xiàn)有的方法編碼當(dāng)前塊,并獲得最小代價和原有預(yù)測參數(shù);步驟5、比較最佳預(yù)測參數(shù)與原有預(yù)測參數(shù),取代價小的作為最終的預(yù)測參數(shù)。
3.根據(jù)權(quán)利要求1或2所述的視頻編碼合并模式雙向補償方法,其特征在于,所述的兩相鄰塊分別為左相鄰塊和上相鄰塊。
4.根據(jù)權(quán)利要求3所述的視頻編碼合并模式雙向補償方法,其特征在于,所述的步驟1 包括步驟11、根據(jù)當(dāng)前塊的位置,判斷當(dāng)前塊的左相鄰塊和上相鄰塊是否存在;若當(dāng)前塊包含當(dāng)前幀的第一行像素,或者當(dāng)前塊包含當(dāng)前條帶的第一行像素,則上相鄰塊不存在;若當(dāng)前塊包含當(dāng)前幀的最左側(cè)第一列像素,或者當(dāng)前塊包含當(dāng)前條帶的最左側(cè)第一列像素, 則左相鄰塊不存在;步驟12、根據(jù)當(dāng)前塊的位置確定左相鄰塊和上相鄰塊。如果左相鄰塊存在,則把左相鄰塊定義為包含當(dāng)前塊左上角像素左側(cè)那個像素的編碼塊;如果上相鄰塊存在,則把上相鄰塊定義為包含當(dāng)前塊左上角像素上側(cè)那個像素的編碼塊;步驟13、判斷左相鄰塊和上相鄰塊是否可用如果左相鄰塊的預(yù)測模式是幀內(nèi)預(yù)測, 則左相鄰塊不可用,否則可用;如果上相鄰塊的預(yù)測模式是幀內(nèi)預(yù)測,則上相鄰塊不可用, 否則可用。
5.根據(jù)權(quán)利要求4所述的視頻編碼合并模式雙向補償方法,其特征在于,所述的步驟2 包括步驟21、獲取相鄰塊的預(yù)測參數(shù)。如果左相鄰塊可用,則讀取左相鄰塊的運動參數(shù),記為PPL ;如果上相鄰塊可用,則讀取上相鄰塊的運動參數(shù),記為PPT ;步驟22、如果已獲得PPL,則將PPL用在當(dāng)前塊的預(yù)測上,得到的預(yù)測塊記為BLKL ;如果已獲得PPTJ^f PPT用在當(dāng)前塊的預(yù)測上,得到的預(yù)測塊記為BLKT。
6.根據(jù)權(quán)利要求5所述的視頻編碼合并模式雙向補償方法,其特征在于,所述的步驟3 中所述的搜索最佳預(yù)測參數(shù),使C = Cbit+ λ D達到最小,具體步驟如下·6. 1 令 C = 10000,R = r = 0,X = x = 0,Y = y = 0,d = 0 ;其中 C 表示代價,R 和 r 表示參考幀索引,X和χ表示運動向量的水平分量,Y和y表示運動向量的垂直分量,d表示相鄰塊,d = 0表示左,d = 1表示上;·6. 2根據(jù)r、χ、y的值,取得預(yù)測塊BLK ;·6. 3根據(jù)BLK,計算左合并代價
7.根據(jù)權(quán)利要求6所述的視頻編碼合并模式雙向補償方法,其特征在于,步驟4具體是用原有的方法編碼當(dāng)前塊,假設(shè)所得的最小代價和預(yù)測參數(shù)分別是CO和PPO,PPO表示某個原有預(yù)測模式所需的全部預(yù)測參數(shù)。
8.根據(jù)權(quán)利要求7所述的視頻編碼合并模式雙向補償方法,其特征在于,步驟5具體是比較C和⑶,若C < C0,則取R、X、Y、d作為最終的預(yù)測參數(shù),否則取PPO作為最終的預(yù)測參數(shù)。
全文摘要
本發(fā)明提供一種視頻編碼合并模式雙向補償方法,包括如下步驟步驟1、確定當(dāng)前塊的兩個相鄰塊;步驟2、根據(jù)兩相鄰塊的預(yù)測參數(shù)得出當(dāng)前塊的一個或兩個初步預(yù)測塊;步驟3、在所有可用的參考幀中,取得一個參考預(yù)測塊,將初步預(yù)測塊與參考預(yù)測塊的算術(shù)平均作為當(dāng)前塊的預(yù)測參考塊;搜索所有的預(yù)測參考塊,取代價最小的預(yù)測參考塊從而獲得最佳預(yù)測參數(shù);本發(fā)明提供一種新的預(yù)測模式,其利用相鄰塊的預(yù)測參數(shù),不僅可以改善預(yù)測效果,而且沒有增加編碼預(yù)測參數(shù)的代價,從而有效地提高了壓縮率。
文檔編號H04N7/50GK102364948SQ20111033548
公開日2012年2月29日 申請日期2011年10月28日 優(yōu)先權(quán)日2011年10月28日
發(fā)明者朱洪波, 李國平, 滕國偉, 王國中, 王小根, 趙海武 申請人:上海國茂數(shù)字技術(shù)有限公司