《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計(jì)應(yīng)用 > 一種基于運(yùn)動(dòng)復(fù)雜度的H.264 JVT-H017碼率控制跳幀算法
一種基于運(yùn)動(dòng)復(fù)雜度的H.264 JVT-H017碼率控制跳幀算法
來源:微型機(jī)與應(yīng)用2010年第21期
張 英,魏忠義,石 娟
(西安工程大學(xué) 電子信息學(xué)院, 陜西 西安 710048)
摘要: 針對(duì)JVT-H017碼率控制算法中跳幀策略沒有很好地考慮圖像的運(yùn)動(dòng)復(fù)雜程度,仍采用類似于MPEG-4 Q2中的簡單方法的問題,提出了一種基于運(yùn)動(dòng)復(fù)雜度的跳幀算法。此方法充分利用了序列的運(yùn)動(dòng)程度,較好地緩解了由于物體劇烈運(yùn)動(dòng)所帶來的緩存上溢現(xiàn)象,優(yōu)化了圖像的質(zhì)量。
Abstract:
Key words :

摘  要: 針對(duì)JVT-H017碼率控制算法中跳幀策略沒有很好地考慮圖像的運(yùn)動(dòng)復(fù)雜程度,仍采用類似于MPEG-4 Q2中的簡單方法的問題,提出了一種基于運(yùn)動(dòng)復(fù)雜度的跳幀算法。此方法充分利用了序列的運(yùn)動(dòng)程度,較好地緩解了由于物體劇烈運(yùn)動(dòng)所帶來的緩存上溢現(xiàn)象,優(yōu)化了圖像的質(zhì)量。
關(guān)鍵詞: JTV-H017;碼率控制;運(yùn)動(dòng)復(fù)雜度;跳幀

    H.264[1]是最新的國際視頻編碼標(biāo)準(zhǔn),它不僅使視頻壓縮比以往標(biāo)準(zhǔn)有明顯提高,而且具有良好的網(wǎng)絡(luò)親和性,特別是對(duì) IP互聯(lián)網(wǎng)、無線移動(dòng)網(wǎng)等易誤碼、易阻塞、QoS不易保證的網(wǎng)絡(luò)視頻傳輸性能有明顯的改善。因此,H.264已成為現(xiàn)今圖像壓縮研究的一個(gè)熱點(diǎn)。同時(shí),碼率控制作為視頻壓縮算法的一個(gè)重要方面,也引起了研究者的很大重視。
    在H.264碼率控制經(jīng)典算法里,JVT-H017[2]因?qū)?shí)際碼率和PSNR的控制更加準(zhǔn)確,并能更好地逼近限制的碼率,而與JVT-G012[3]一起成為目前最常用的H.264碼率控制算法。但JVT-H017算法仍然存在明顯的不足[4]: 同時(shí)引用率失真(R-D)模型和MAD線性模型會(huì)增加編碼的計(jì)算量;算法中圖像組GOP(Group of Pictures)碼率的分配方法和HRD機(jī)制限制了前后質(zhì)量平緩度的進(jìn)一步提高;編碼后的跳幀策略仍然采用類似于MPEG-4 Q2中的簡單方法,嚴(yán)重影響了運(yùn)動(dòng)劇烈圖像的質(zhì)量。本文在介紹JVT-H017碼率控制算法的基礎(chǔ)上,提出了一種利用運(yùn)動(dòng)復(fù)雜度作為跳幀判別的算法,合理地分配緩存空間給運(yùn)動(dòng)劇烈的幀,較好地保留了圖像的細(xì)節(jié),進(jìn)一步提高了圖像的質(zhì)量。
1 JVT-H017碼率控制算法
    JVT-H017碼率控制策略包含3個(gè)層次:GOP層、幀層和基本單元層。其中基本單元層指的是同一幀中一組連續(xù)的宏塊,每個(gè)基本單元層至少包含一個(gè)宏塊。
1.1 GOP層碼率控制
    GOP層碼率控制主要任務(wù)是計(jì)算當(dāng)前GOP 中剩余圖像幀的比特?cái)?shù),初始化即時(shí)解碼刷新(IDR)和第一個(gè)存儲(chǔ)幀的量化參數(shù)。當(dāng)?shù)趇個(gè)GOP的第j幀被編碼時(shí),當(dāng)前GOP中剩余幀的比特?cái)?shù)計(jì)算如下:

1.2 幀層碼率控制
    幀層的碼率控制包括編碼前和編碼后兩個(gè)階段。
1.2.1 編碼前階段
    編碼階段是計(jì)算每一幀的量化參數(shù)。對(duì)于存儲(chǔ)幀和非存儲(chǔ)幀,方法是不一樣的。本文介紹的是只有存儲(chǔ)幀的情況。這一過程分兩個(gè)步驟完成:
    (1)確定每個(gè)幀的目標(biāo)碼率
    ①確定當(dāng)前GOP中每個(gè)存儲(chǔ)幀的目標(biāo)碼率
    每一個(gè)存儲(chǔ)幀的目標(biāo)緩沖由第一個(gè)IDR或存儲(chǔ)幀的編碼比特和平均復(fù)雜度得到。在編碼完第i個(gè)GOP的第1個(gè)存儲(chǔ)幀后,目標(biāo)緩沖的初始值為:

(2)計(jì)算量化參數(shù)和執(zhí)行率失真優(yōu)化(RDO)
    首先采用式(9)計(jì)算與目標(biāo)比特關(guān)聯(lián)的量化步長,相應(yīng)的量化參數(shù)QPi(j)由量化步長和高級(jí)視頻編碼(AVC)的量化參數(shù)計(jì)算得到:

1.2.2 編碼后階段
    編碼一幀以后,系數(shù)a1、a2及c1、c2采用類似MPEG-4 Q2部分的線性回歸模型進(jìn)行更新。在此過程中,實(shí)際編碼產(chǎn)生的比特加入到緩存中。為保證更新后的緩存占用率不要過高,采用類似MPEG-4 Q2部分的跳幀策略進(jìn)行調(diào)整。
1.3 基本單元碼率控制
    基本單元碼率控制和幀層碼率控制的方法類似,為每個(gè)基本單元預(yù)測(cè)MAD,計(jì)算目標(biāo)比特,用二次R-D 模型計(jì)算基本單元層的QP時(shí)需考慮:(1)對(duì)當(dāng)前幀的第一個(gè)基本單元,QP需設(shè)為前一幀所有基本單元量化參數(shù)的平均值;(2)當(dāng)前幀中還有未編碼的基本單元,而分配給它們的剩余比特?cái)?shù)卻小于零。這時(shí),當(dāng)前基本單元的QP應(yīng)相應(yīng)地增大;(3)其他情況下,通過二次R-D模型來獲得QP。
2 改進(jìn)的跳幀算法
    在實(shí)際的編碼中,如果每個(gè)GOP都超過了預(yù)先分配給它的比特?cái)?shù),這時(shí)緩沖就會(huì)溢出,從而導(dǎo)致跳幀現(xiàn)象,使得圖像的質(zhì)量下降[4]。JVT-H017碼率控制算法采用的跳幀方法仍是MPEG-4 Q2中的簡單方法,即只是簡單地設(shè)置緩存區(qū)占有度上限達(dá)到80%時(shí),就執(zhí)行跳幀。(同樣在以往的跳幀控制算法中[5],一般都只是將緩存的上限定為80%來作為跳幀的依據(jù),當(dāng)緩存容量超過80%時(shí),將此幀定為跳幀)。相反,當(dāng)緩存容量低于25%時(shí),也將此幀定為跳幀,但是這樣處理沒有充分考慮到簡單的跳幀會(huì)影響運(yùn)動(dòng)劇烈的圖像的細(xì)節(jié)表現(xiàn),導(dǎo)致圖像質(zhì)量嚴(yán)重下降。于是參考文獻(xiàn)[6]根據(jù)高運(yùn)動(dòng)復(fù)雜度對(duì)應(yīng)高比特?cái)?shù)、低運(yùn)動(dòng)復(fù)雜度對(duì)應(yīng)低比特?cái)?shù)這一比特分配法則,利用過濾掉運(yùn)動(dòng)平穩(wěn)的幀而保存運(yùn)動(dòng)劇烈的幀,并為運(yùn)動(dòng)劇烈的幀分配更多緩存空間的思想,提出了用前一幀預(yù)測(cè)得到的比特?cái)?shù)與前面已編碼幀的實(shí)際比特?cái)?shù)的平均值的比值作為衡量跳幀的標(biāo)準(zhǔn)。但參考文獻(xiàn)[5]并未考慮到出現(xiàn)比特?cái)?shù)較多和比特?cái)?shù)較少的幀交錯(cuò)的幀序列這一情況。若前一幀比特?cái)?shù)較少,當(dāng)前幀比特?cái)?shù)較多,則得到的比值偏??;反之,得到的比值偏大。可見用此方法作為跳幀的判斷方法,準(zhǔn)確率并不高。所以本文算法從圖像復(fù)雜度算法本身入手,并考慮到相鄰幀之間具有很強(qiáng)的相關(guān)性,重新定義一個(gè)跳幀判別方法,力求得到的跳幀判別方法能較準(zhǔn)確地優(yōu)化圖像質(zhì)量。
    為了更好地適應(yīng)AVS編碼器的實(shí)時(shí)應(yīng)用,減少B幀延時(shí)帶來的影響,本文只考慮有I幀、P幀的圖像格式。由于I幀編碼需要較多的比特?cái)?shù),它將占據(jù)多個(gè)幀間間隔傳輸,因此,本文為了減小緩沖延時(shí),緊鄰I幀的前兩個(gè)P幀仍按原算法進(jìn)行跳幀。即從第3個(gè)P幀開始定義當(dāng)前P幀的運(yùn)動(dòng)復(fù)雜度因子ci:

3 實(shí)驗(yàn)結(jié)果與分析
    為了對(duì)算法進(jìn)行分析,在JM8.6上對(duì)本跳幀算法進(jìn)行仿真。實(shí)驗(yàn)中分別使用QCIF序列foreman和CIF序列mobile,共編碼100幀,GOP的結(jié)構(gòu)是 IPPP…IPPP…,幀內(nèi)編碼刷新周期為20幀,第一幀的量化步長為28,a= 0.6,b=0.8,w1=60%,w2=70%,a1=3/2,a2=1/2。在JM8.6現(xiàn)有的碼率控制算法的基礎(chǔ)上,分別對(duì)跳幀策略與參考文獻(xiàn)[2]和參考文獻(xiàn)[5]中的跳幀策略進(jìn)行測(cè)試,截取其中的20~40幀進(jìn)行顯示。比較3種算法的PSNR。在相同的條件下,本文提出的跳幀算法相對(duì)其他兩個(gè)跳幀算法有所改進(jìn),更加準(zhǔn)確地做到了跳過平穩(wěn)運(yùn)動(dòng)的圖像,保留運(yùn)動(dòng)劇烈的圖像這準(zhǔn)則。從表1、表2可以看出,本文提出的跳幀算法,使信噪比有所提高,優(yōu)化了圖像的質(zhì)量。

    本文針對(duì)JVT-H017碼率控制算法中跳幀策略仍然采用類似MPEG-4 Q2的簡單方法這一缺點(diǎn),提出的跳幀算法合理地利用了圖像運(yùn)動(dòng)復(fù)雜度這一尺度來作為判別標(biāo)準(zhǔn),與參考文獻(xiàn)[2]的(JVT-H017)相比,使得圖像信噪比有所提升,優(yōu)化了圖像質(zhì)量。但是,本算法并沒有考慮到出現(xiàn)場(chǎng)景切換和B幀存在的圖像序列的跳幀問題,所以將來的工作將是在此算法的基礎(chǔ)上,提出一種更好的優(yōu)化算法,使其能提高不同圖像序列的圖像質(zhì)量。
參考文獻(xiàn)
[1] 余兆明,查日勇,黃磊,等.圖像編碼標(biāo)準(zhǔn)H.264技術(shù)[M].北京:人民郵電出版社,2005.
[2] MA Si Wei, LI Zheng Guo, WU Feng, et al. JVT-H017-2003 proposed draft of adaptive rate control[S]. 2003.
[3] MA Si Wei, LI Zheng Guo, WU  Feng, et al. JVT-G012 -2003 proposed draft of adaptive rate control[S]. 2003.
[4] 李記苗,劉彥明,高峰.H.264碼率控制及其改進(jìn)策略[J].計(jì)算機(jī)與數(shù)學(xué)工程,2006(6):52-54.
[5] 鄭從卓,李均利,陳剛,等.AVS實(shí)時(shí)編碼的VBR碼率控制[J].計(jì)算機(jī)程,2009(35):240-242.
[6] 周駿華,石旭剛,宋瑋.一種基于運(yùn)動(dòng)復(fù)雜度的新的H.264碼率控制算法[J].浙江工業(yè)大學(xué)學(xué)報(bào),2006(6):672-675.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。