H.264/AVC碼率控制中量化參數(shù)設(shè)置的改進(jìn)
快速增長(zhǎng)的視頻通信需求刺激著視頻壓縮技術(shù)的發(fā)展。與已有的其他視頻壓縮標(biāo)準(zhǔn)相比,最新的H.264/AVC標(biāo)準(zhǔn)因采用多參考幀、運(yùn)動(dòng)補(bǔ)償?shù)刃碌木幋a技術(shù),在編碼效率上提供了重要的改進(jìn)。目前,碼率控制(RC)作為視頻編碼的重要組成部分也變得越來(lái)越完善,并且得到了學(xué)者們的高度關(guān)注。
為了在碼率和失真之間實(shí)現(xiàn)最好的折中性能,在H.264標(biāo)準(zhǔn)中提出了率失真優(yōu)化(RDO)。然而,RDO使得H.264碼率控制更加復(fù)雜并且導(dǎo)致了蛋雞悖論[1],這就對(duì)H.264的碼率控制算法提出了新的挑戰(zhàn),也是一個(gè)非常熱門的研究課題。
為了解決蛋雞悖論的問(wèn)題,一些碼率控制算法已經(jīng)開(kāi)發(fā)出來(lái)[1-3]。LI等人提出了一次編碼碼率控制算法JVT-G012。鑒于其效率,它已在H.264/AVC的參考軟件中被采用。然而在此方案中仍然存在著一些不足之處:(1)不精確的初始QP估計(jì):在JVT-G012中,初始QP的估計(jì)僅僅取決于每像素的比特?cái)?shù)(bpp),然而,這種初始化方案沒(méi)有考慮幀的復(fù)雜度,不夠精確;(2)緩存控制能力不足:可以看到,緩存器有時(shí)會(huì)失控導(dǎo)致跳幀,尤其是在低比特率的情況下;(3)不精確的幀層比特控制:有時(shí),一幀的目標(biāo)比特和它實(shí)際產(chǎn)生的編碼比特偏差相當(dāng)大。
所有這些不足都可能引起跳幀、平均PSNR值下降及不良的PSNR波動(dòng),特別是對(duì)于復(fù)雜的視頻序列和低目標(biāo)比特率的情況。本文主要針對(duì)第一個(gè)不足進(jìn)行改進(jìn)。
1 對(duì)初始QP設(shè)置的改進(jìn)
1.1 H.264中初始QP設(shè)置
在JVT-G012中,碼率控制開(kāi)始時(shí),第一個(gè)GOP的第一個(gè)I幀的初始QP值是根據(jù)經(jīng)驗(yàn)預(yù)先設(shè)定的,在沒(méi)預(yù)先設(shè)定時(shí)采用如下方法計(jì)算:
由bpp的表達(dá)式不難看出,對(duì)于不同的視頻序列,在已設(shè)定的目標(biāo)比特率、幀率及同一圖像格式的情況下,計(jì)算出來(lái)的bpp的值是一樣的,再通過(guò)式(1)計(jì)算就得到相同的初始QP值。即不同視頻序列的第一個(gè)I幀均采用相同的初始QP值編碼。但不同視頻序列的復(fù)雜度是不同的,其需求的目標(biāo)比特?cái)?shù)也不相同,若采用統(tǒng)一的初始QP值編碼,勢(shì)必會(huì)導(dǎo)致碼率控制不精確。
1.2 本文的改進(jìn)算法
目前已有很多針對(duì)QP初始化設(shè)置的算法研究[4-7],但為了減少算法及編碼的復(fù)雜度,本文采用基于bpp和I幀復(fù)雜度的算法來(lái)設(shè)置QP的初始值。參考文獻(xiàn)[6]提到采用梯度來(lái)衡量圖像復(fù)雜度的方法性能較好,因此本文采用基于梯度的方法來(lái)衡量I幀復(fù)雜度。梯度G的定義如下:
其中,W和H分別是一幀圖像的寬度和高度,Pi,j表示(i,j)處的像素值。
為了更好地看出每個(gè)視頻序列的第一個(gè)I幀復(fù)雜度與最佳初始QP的關(guān)系,選擇foreman、football、news、mobile等視頻序列進(jìn)行試驗(yàn)。使用H.264/AVC的參考軟件JM8.6,測(cè)試序列為標(biāo)準(zhǔn)QCIF格式,目標(biāo)碼率為64 kb/s,幀率為15 S/s,編碼50 S,采用IPPP編碼模式。實(shí)驗(yàn)結(jié)果如圖1所示。
圖中QP=25的直線是在上述給定的實(shí)驗(yàn)條件下通過(guò)式(1)計(jì)算出來(lái)的初始QP值,再次說(shuō)明了JVT-G012中不同視頻采用相同初始QP值。從圖中不難看出,在一定的條件下,復(fù)雜度低的圖像初始QP值應(yīng)較小,而復(fù)雜度高的圖像初始QP值應(yīng)較大。同時(shí)也發(fā)現(xiàn)G與最佳初始QP的關(guān)系比較難擬合。因此根據(jù)參考文獻(xiàn)[7]定義F(G)函數(shù)如下:
對(duì)QCIF 和CIF 格式的圖像編碼時(shí),e1、e2、e3的取值分別為{0.68,-7.21,12.29}和{-0.76,18.87,-91.42}。
本文算法是在式(1)計(jì)算出的qp的基礎(chǔ)上結(jié)合G對(duì)初始QP的影響,來(lái)確定最終的初始QP值,經(jīng)大量數(shù)據(jù)統(tǒng)計(jì),最終的算法如下:
3 實(shí)驗(yàn)結(jié)果
為了驗(yàn)證本文改進(jìn)算法的有效性,本文使用了H.264/AVC的參考軟件JM8.6并與其碼率控制算法進(jìn)行比較。實(shí)驗(yàn)條件:測(cè)試序列為標(biāo)準(zhǔn)QCIF格式,目標(biāo)碼率為64 kb/s,幀率為15幀/s,GOP長(zhǎng)度為25,編碼100幀, 采用IPPP編碼格式。結(jié)果如表1所示。
本文對(duì)JVT-G012算法中初始QP的設(shè)置進(jìn)行改進(jìn),盡管表達(dá)式(4)不夠精確,計(jì)算出的初始QP值可能不是最佳值,但相對(duì)于式(1)僅利用bpp計(jì)算得出的初始QP卻比較合理。從表1可以看出本文算法可以選擇較優(yōu)的初始QP值,使編碼效果在PSNR值及碼率控制準(zhǔn)確度兩方面均優(yōu)于原算法,尤其對(duì)于運(yùn)動(dòng)較劇烈的football、mobile序列效果明顯。而且從圖2和圖3中可以看到,本文算法得到的PSNR曲線的波動(dòng)范圍更小。此外,與目前很多相關(guān)算法相比,本文算法簡(jiǎn)單,相對(duì)于JVT-G012算法,引入的編碼復(fù)雜度也較小。
評(píng)論