H.264中基于編碼模式的自適應(yīng)重疊塊運(yùn)動(dòng)補(bǔ)償
摘 要:為進(jìn)一步提高視頻壓縮效率,將重疊塊運(yùn)動(dòng)預(yù)測(cè)補(bǔ)償與H.264視頻編碼框架中的可變大小塊運(yùn)動(dòng)預(yù)測(cè)相結(jié)合,根據(jù)不同塊的編碼模式,自適應(yīng)調(diào)整重疊塊運(yùn)動(dòng)補(bǔ)償的加權(quán)系數(shù)。實(shí)驗(yàn)結(jié)果表明,所提出的基于編碼模式的自適應(yīng)重疊塊運(yùn)動(dòng)補(bǔ)償對(duì)于較復(fù)雜的序列,在較高目標(biāo)碼率下,最大編碼增益可達(dá)0.21 dB,顯著提高了H.264的編碼效率。
關(guān)鍵詞:視頻壓縮;重疊塊運(yùn)動(dòng)補(bǔ)償,編碼模式
隨著網(wǎng)絡(luò)和多媒體技術(shù)的發(fā)展,越來(lái)越多的數(shù)字視頻業(yè)務(wù)不斷涌現(xiàn)。H.264標(biāo)準(zhǔn)正是為適應(yīng)各種業(yè)務(wù)增長(zhǎng)對(duì)于運(yùn)動(dòng)圖像壓縮率的更高要求而制定的。在H.264中,引入了可變大小的塊運(yùn)動(dòng)預(yù)測(cè)、多幀預(yù)測(cè)、1/4像素插值等技術(shù),以進(jìn)一步提高運(yùn)動(dòng)預(yù)測(cè)的精度,提高了視頻壓縮效率。
在高壓縮效率下,基于塊運(yùn)動(dòng)預(yù)測(cè)和補(bǔ)償(block motion compensation,BMC)的視頻壓縮算法會(huì)產(chǎn)生塊效應(yīng),嚴(yán)重影響了重建視頻的主觀質(zhì)量。在H.264中,在運(yùn)動(dòng)預(yù)測(cè)/補(bǔ)償環(huán)路中引入去除塊效應(yīng)濾波器以降低塊效應(yīng)的影響。另一方面,文證明了重疊塊運(yùn)動(dòng)補(bǔ)償(overlapped blockmotion compensation,OBMC)也是降低塊效應(yīng)、提高預(yù)測(cè)精度的一種有效手段,并研究了最優(yōu)重疊塊匹配加權(quán)窗的系數(shù)設(shè)計(jì)方法。但以上算法尚未在重疊塊運(yùn)動(dòng)補(bǔ)償中有效利用H.264現(xiàn)有編碼框架中的多種預(yù)測(cè)模式,在H.264框架中引入重疊塊運(yùn)動(dòng)補(bǔ)償,可以進(jìn)一步提高其編碼效率。
本文提出了一種基于編碼模式的自適應(yīng)重疊塊運(yùn)動(dòng)補(bǔ)償算法。該算法根據(jù)周?chē)丫幋a塊的編碼模式,自適應(yīng)選擇加權(quán)系數(shù)提高當(dāng)前編碼塊的運(yùn)動(dòng)預(yù)測(cè)精度。實(shí)驗(yàn)結(jié)果表明,本算法在高碼率時(shí),最大編碼增益可達(dá)0.21 dB,提高了H.264的編碼效率。
1 基于編碼模式的自適應(yīng)重疊塊運(yùn)動(dòng)補(bǔ)償
文提出重疊塊運(yùn)動(dòng)補(bǔ)償提高了預(yù)測(cè)精度和編碼效率,并均衡了失真分布。在OBMC中,對(duì)于當(dāng)前編碼塊,可以擁有多個(gè)備選運(yùn)動(dòng)矢量,包括其自身的運(yùn)動(dòng)矢量和周?chē)丫幋a塊的運(yùn)動(dòng)矢量。通過(guò)引入一組加權(quán)系數(shù),對(duì)每個(gè)候選的運(yùn)動(dòng)預(yù)測(cè)塊加權(quán)得到最終的運(yùn)動(dòng)預(yù)測(cè)。
考慮到H.264中最基本的編碼單位是44,為了描述方便,本算法中的OBMC選擇的塊大小為44。在實(shí)際實(shí)現(xiàn)中,為了提高運(yùn)算速度,可以針對(duì)不同的編碼模式采取相應(yīng)的OBMC塊大小。對(duì)于當(dāng)前幀內(nèi)每個(gè)塊,如圖1所示,其備選運(yùn)動(dòng)矢量集由其自身的運(yùn)動(dòng)矢量和周?chē)鷫K的運(yùn)動(dòng)矢量組成。令Bc表示當(dāng)前編碼塊,Bi(i=1,2,3,4)表示其相鄰塊,相應(yīng)的運(yùn)動(dòng)矢量為vc、vi。
如圖2所示,假設(shè)p表示當(dāng)前編碼塊內(nèi)像素的坐標(biāo),表示該像素采用OBMC得到的運(yùn)動(dòng)預(yù)測(cè)值,則有
其中,fn-1(p)表示參考幀中位置p處的像素值,而ωc(p)、ωi(p),1≤i≤4分別表示OBMC的加權(quán)系數(shù),且應(yīng)滿足以下約束
在對(duì)Bc塊進(jìn)行編碼時(shí),B2和B4塊的運(yùn)動(dòng)矢量有可能還未進(jìn)行編碼(當(dāng)B2、B4塊與Bc塊不在同一個(gè)宏塊中時(shí))。此時(shí)為了保證編、解碼的同步,約定B2和B4的運(yùn)動(dòng)矢量設(shè)為vc。
由于塊Bi內(nèi)不同位置p的加權(quán)系數(shù)是不均勻的,它們的取值構(gòu)成加權(quán)矩陣Wi。Wi的設(shè)置在很大程度上影響了OBMC的編碼效率。文給出了若干Wi的選取方法,然而,它針對(duì)的是運(yùn)動(dòng)預(yù)測(cè)塊的劃分為固定的情況。
由于H.264中采取了可變大小塊運(yùn)動(dòng)預(yù)測(cè),從定性上來(lái)看,劃分較小的運(yùn)動(dòng)預(yù)測(cè)塊所對(duì)應(yīng)的運(yùn)動(dòng)矢量一般來(lái)說(shuō)更加精確,也更能夠反映相鄰塊的運(yùn)動(dòng)趨勢(shì)?;谠摷僭O(shè),屬于較小劃分的塊所對(duì)應(yīng)的運(yùn)動(dòng)矢量,在OBMC中應(yīng)被賦予更大的權(quán)重,以進(jìn)一步提高OBMC的運(yùn)動(dòng)預(yù)測(cè)精度,提高編碼效率。
根據(jù)這一推論,本算法采用了一種基于編碼模式的自適應(yīng)OBMC算法。對(duì)于當(dāng)前編碼塊Bc的每個(gè)鄰近塊Bi,定義一個(gè)加權(quán)矩陣集合si,根據(jù)Bc和Bi的編碼模式,選取合適的加權(quán)矩陣Wi∈Si。也就是說(shuō),加權(quán)矩陣的選取策略取決于2個(gè)塊各自對(duì)應(yīng)的編碼模式。例如,假設(shè)相鄰塊Bl對(duì)應(yīng)的運(yùn)動(dòng)預(yù)測(cè)塊大小為88,當(dāng)Bc的預(yù)測(cè)塊大小為1616,相應(yīng)于v1的加權(quán)系數(shù)矩陣為W161,當(dāng)Bc的預(yù)測(cè)塊大小為44時(shí),相應(yīng)于v1的加權(quán)系數(shù)矩陣為W41。加權(quán)矩陣的選擇策略應(yīng)該保證對(duì)于加權(quán)矩陣中每個(gè)位置(m,n)的系數(shù),都有。在實(shí)際實(shí)現(xiàn)中,可以采用查找表來(lái)存儲(chǔ)選擇策略。同時(shí),加權(quán)矩陣集合和相應(yīng)的選擇策略可以通過(guò)對(duì)若干測(cè)試序列進(jìn)行訓(xùn)練而獲得。
在采用OBMC后,相應(yīng)運(yùn)動(dòng)搜索的度量準(zhǔn)則應(yīng)進(jìn)行相應(yīng)的修正。在本文中,為了降低實(shí)現(xiàn)復(fù)雜度,對(duì)運(yùn)動(dòng)矢量的搜索不采取迭代的方法。此時(shí),在進(jìn)行運(yùn)動(dòng)搜索時(shí),當(dāng)前塊選取的運(yùn)動(dòng)矢量不僅決定了其自身的運(yùn)動(dòng)預(yù)測(cè)值,也會(huì)影響到其右邊及下邊塊的運(yùn)動(dòng)預(yù)測(cè)值(左邊及上邊塊的運(yùn)動(dòng)矢量已經(jīng)確定,不再進(jìn)行考慮)。為了反映這種影響,將運(yùn)動(dòng)搜索的準(zhǔn)則重新定義為
其中:第1項(xiàng)是當(dāng)前塊的預(yù)測(cè)誤差的絕對(duì)誤差和;第2、3項(xiàng)反映了對(duì)右邊和下邊塊的預(yù)測(cè)誤差影響;第4項(xiàng)中bv為對(duì)運(yùn)動(dòng)矢量的編碼所需的速率。
2 實(shí)驗(yàn)結(jié)果
本實(shí)驗(yàn)采用H.264參考代碼JMl0.1作為仿真平臺(tái),給出了各種CIF(common intermedia format)和QCIF(quarter common intermedia format)測(cè)試序列的測(cè)試結(jié)果。在本實(shí)驗(yàn)中,編碼器設(shè)置為:率失真打開(kāi),參考幀數(shù)為1,可選的編碼模式為7,采取內(nèi)容自適應(yīng)變長(zhǎng)熵編碼編碼,運(yùn)動(dòng)搜索范圍為1616,每個(gè)幀組包括1個(gè)I幀和49個(gè)P幀,所有幀均采用相同的量化參數(shù)。
表1給出了各測(cè)試序列的QP設(shè)置分別為20、24、28、32時(shí),峰值信噪比(peek signal noise ratio,PSNR)和碼率的對(duì)比。按照文提出的PSNR和碼率的插值算法,表2給出了對(duì)于不同測(cè)試序列本算法和標(biāo)準(zhǔn)的H.264壓縮效率的對(duì)比。從這些結(jié)果可以看出:采用OBMC的編碼增益隨著編碼速率的增加而提高。在高碼率時(shí),最高編碼效率可提高0.21 dB。當(dāng)編碼序列的運(yùn)動(dòng)比較復(fù)雜時(shí),如Coastguard和Tempete序列,編碼增益也比較明顯。這種現(xiàn)象也符合上述對(duì)OBMC優(yōu)越性的分析。
表3給出了對(duì)Foreman序列進(jìn)行QP=24編碼時(shí),P幀各部分信息所占用比特?cái)?shù)的對(duì)比。可以看到,采用OBMC算法明顯降低了編碼運(yùn)動(dòng)矢量信息和亮度殘差信息的速率。為了簡(jiǎn)潔起見(jiàn),沒(méi)有對(duì)色度信號(hào)的運(yùn)動(dòng)補(bǔ)償采用重疊塊模式,因此,表示色度殘差信號(hào)所需的碼率與原算法相當(dāng)。
3 結(jié) 論
為了將OBMC與標(biāo)準(zhǔn)中的可變塊大小運(yùn)動(dòng)補(bǔ)償結(jié)合起來(lái),提出了根據(jù)相鄰塊編碼模式選擇OBMC加權(quán)矩陣的算法。仿真試驗(yàn)表明,OBMC的采用可帶來(lái)平均0.1 dB以上的編碼增益。對(duì)于高復(fù)雜度序列在高速率下的編碼,最高增益可達(dá)0.2 dB.
下一步將對(duì)加權(quán)系數(shù)矩陣的自適應(yīng)進(jìn)行研究,以進(jìn)一步提高編碼效率。另外,并不是每個(gè)宏塊采用OBMC都可以帶來(lái)編碼增益??梢匝芯吭诤陦K級(jí)別引入一個(gè)標(biāo)志,指示該宏塊是否采取OBMC。這種靈活性將進(jìn)一步提高編碼效率。
評(píng)論