引言:本文在H.264碼率控制機(jī)制的基礎(chǔ)上,提出了一種基于平均絕對差(MAD)比率的跳幀算法。該算法將圖像的MAD比率和緩沖器占用量作為跳幀判別標(biāo)準(zhǔn),為運(yùn)動劇烈的圖像保留緩沖器空間。實(shí)驗(yàn)結(jié)果表明,本算法一方面可以有效地降低緩沖器的占用量和節(jié)省編碼時間,從而在硬件方面表現(xiàn)為降低對緩沖器大小等方面的要求,達(dá)到降低成本的目的;另一方面,可以保證圖像序列連續(xù)性和提高圖像質(zhì)量。
大多數(shù)視頻壓縮技術(shù)和標(biāo)準(zhǔn)產(chǎn)生的比特率都是可變的,為了能夠在恒定比特率的通信信道和網(wǎng)絡(luò)中傳輸,需要在碼率控制中引入一個緩沖區(qū)機(jī)制,先將壓縮后的碼流存入緩沖區(qū),然后以恒定碼率輸出。因此,碼率控制的任務(wù)就是在保證緩沖器不產(chǎn)生上溢和下溢的前提下,通過調(diào)整一些編碼參數(shù)(如量化參數(shù))來使編碼比特率達(dá)到期望值。
跳幀策略是碼率控制算法中防止緩沖器上溢的手段。以往的跳幀算法往往確定某一個固定的限值(通常為80%)[1],當(dāng)緩沖器的占用量到達(dá)這個限值時,不考慮下一幀的任何情況就把它跳過。這種跳幀算法的缺陷有兩點(diǎn):當(dāng)緩沖器占用量達(dá)到80%時盲目地跳過下一幀,有可能錯過運(yùn)動劇烈的圖像而導(dǎo)致譯碼后圖像序列質(zhì)量的下降;當(dāng)緩沖器占用量未達(dá)到80%,但卻很接近80%時,如果下一幀圖像運(yùn)動比較劇烈的話,較多的編碼比特數(shù)就會導(dǎo)致緩沖器發(fā)生嚴(yán)重的上溢。
本文提出了基于MAD比率的跳幀判斷準(zhǔn)則,將當(dāng)前緩沖器的占用量與每一幀圖像的運(yùn)動劇烈程度結(jié)合起來,對緩沖器的占用量設(shè)定幾個閾值,并且用MAD比率來對每幅圖像的運(yùn)動劇烈程度進(jìn)行標(biāo)識。對于某個MAD比率的圖像來說,當(dāng)緩沖器占用量達(dá)到跳幀判別準(zhǔn)則中規(guī)定的閾值時,即將該幀跳過。這樣就可以通過跳過一些運(yùn)動平緩的圖像,而為運(yùn)動劇烈的圖像保留緩沖器空間,從而保證圖像序列的連續(xù)性,提高圖像質(zhì)量。
碼率控制算法
幀層的碼率控制算法
幀層的碼率控制分為兩個階段:第一階段為每一個P幀計算一個目標(biāo)比特數(shù),第二階段持續(xù)地更新率失真模型的各個參數(shù)并且進(jìn)行跳幀控制。
假設(shè)只有一組圖像(GOP),并且圖像序列的編碼順序是第一幀為I幀,后面為連續(xù)的P幀。假設(shè)N表示組圖中所有幀的數(shù)目,nj表示組圖中的第j幀,Bc(nj)表示編碼第j幀圖像后緩沖器實(shí)際的占用量,A(nj)表示編碼第j幀時實(shí)際產(chǎn)生的比特數(shù),Bs表示緩沖器大小,Tbl(nj)表示第j幀被編碼后緩沖器的目標(biāo)值,Rr表示剩余比特數(shù),Nr表示組圖中剩余的幀數(shù)。因此,第j+1幀圖像被編碼后緩沖器的實(shí)際占用量Bc(nj+1)可以表示為[2][3]:
假設(shè)第一個P幀的量化參數(shù)等于組圖的量化參數(shù),所以有:
其它P幀被編碼后緩沖器的目標(biāo)值由下式給出:
因此,考慮緩沖器占用量而得到的目標(biāo)比特數(shù)Tbuff可以表示為:
其中g(shù)ama是個常量,它的值通常為0.75。
考慮剩余比特數(shù)而得到的目標(biāo)比特數(shù)Tr可以表示為:
所以,最后的目標(biāo)比特數(shù)T可以通過Tbuff和Tr的加權(quán)和得到:
試驗(yàn)中β=0.5[2]。
宏塊層的碼率控制
在宏塊層,根據(jù)每一個宏塊的MAD來給每一個宏塊分配比特數(shù)并且求出量化參數(shù)。宏塊層的碼率控制分為三個步驟:首先為每一個宏塊分配比特數(shù);其次根據(jù)目標(biāo)比特數(shù)計算出量化參數(shù);最后在對每一個宏塊編碼后,進(jìn)行參數(shù)的預(yù)測。
a.比特數(shù)的分配
假設(shè)Nm表示一幀中宏塊的個數(shù),Ave_MAD表示一幀圖像中各個宏塊的MAD的平均值,MAD[i][j]表示第i幀中第j個宏塊的MAD。因此第i幀中第j個宏塊所分配的目標(biāo)比特數(shù)b[i][j]可表示為:
b.計算各個宏塊的量化參數(shù)
率失真函數(shù)是許多碼率控制算法的核心,它將量化參數(shù)Q與編碼比特數(shù)R聯(lián)系起來,其關(guān)系式為:
其中S表示宏塊的編碼復(fù)雜度,X1和X2是率失真模型參數(shù)。Q值較小時,分配較多的編碼比特數(shù);Q值較大時,則分配較少的編碼比特數(shù)。
c.模型參數(shù)的預(yù)測
在對每一個幀進(jìn)行編碼后,都要根據(jù)前面n幀的編碼結(jié)果對模型參數(shù)(X1、X2)進(jìn)行更新。由上式可以得出:
最小均方誤差可以表示為:
該等式成立的條件是:(a)n>1,(b)所有的n個Q值不完全相同。
基于MAD比率的跳幀算法
在恒定比特率應(yīng)用中,編碼器和傳輸信道間的緩沖器起了十分重要的作用。編碼器應(yīng)該使緩沖器的占用量保持在50%左右。如果緩沖器發(fā)生上溢,則會損失一些數(shù)據(jù)。相反,如果緩沖器的占用量過低就會浪費(fèi)帶寬。當(dāng)緩沖器的值很高時,避免上溢的方法就是跳過一個完整的幀。
由以往的經(jīng)驗(yàn)可以知道,大多數(shù)的跳幀過程都是由于緩沖器上溢引起的。與緩沖器的目標(biāo)值即緩沖器大小的一半相比較,實(shí)際中緩沖器發(fā)生上溢的可能性遠(yuǎn)遠(yuǎn)大于發(fā)生下溢的可能性。緩沖器的占用量低于緩沖器大小25%的情況是非常少見的。因此,有必要把緩沖器的占用量控制在50%左右,以保證緩沖器的占用量有足夠的上升空間。
下面詳細(xì)介紹一下基于MAD比率的跳幀算法:
假設(shè)圖像序列的編碼順序?yàn)榈谝粠瑸镮幀,后面是連續(xù)的P幀,ω1、ω2、ω3表示緩沖器占用百分比;ξ1、ξ2、ξ3表示圖像的運(yùn)動劇烈程度,它等于當(dāng)前幀圖像的MAD預(yù)測值與整個組圖中所有已編碼P幀圖像的平均MAD的比值(見下面的公式)。
基于MAD比率的跳幀算法的思想是盡量跳過運(yùn)動平緩的幀而保存運(yùn)動劇烈的幀。對于運(yùn)動平緩的圖像而言,緩沖器的占用量不用達(dá)到80%,而只要達(dá)到一個預(yù)先設(shè)定的限值時就將它跳過。運(yùn)動越劇烈,對應(yīng)的限值就越高。運(yùn)動的劇烈程度ξ(i)用下式表示:
其中,MADPi表示第i幀圖像的MAD預(yù)測值,MADAi表示第i幀圖像的MAD實(shí)際值。
當(dāng)ξ(i)小于ξ1時,只要緩沖器的占用量達(dá)到ω1,就將該幀跳過;當(dāng)ξ(i)小于ξ2時,只要緩沖器的占用量達(dá)到ω2,就將該幀跳過;當(dāng)ξ(i)小于ξ3時,只要緩沖器的占用量達(dá)到ω3,就將該幀跳過;當(dāng)緩沖器的占用量達(dá)到80%時,無論下一幀圖像運(yùn)動劇烈與否,都將它跳過。
由于I幀和前面幾個P幀對于運(yùn)動補(bǔ)償?shù)墓烙嫳容^重要,跳過這些幀容易影響到后面的幀,因此,本文的跳幀算法從第三個P幀,即第四幀開始;而對前三幀的處理方法是:對I幀不采取跳幀,對第一和第二個P幀只有當(dāng)緩沖器的占用量達(dá)到80%時才跳過。
對于需要跳過的幀將不進(jìn)行編碼,而是用上一幀圖像來代替。
圖1為基于MAD比率的跳幀算法流程圖。其中Q表示量化參數(shù);N表示幀編號。
試驗(yàn)結(jié)果
本節(jié)根據(jù)第三部分基于MAD比率跳幀算法的思路,將該新型跳幀算法的實(shí)驗(yàn)結(jié)果與傳統(tǒng)跳幀算法的試驗(yàn)結(jié)果相比較。
實(shí)驗(yàn)采用JM9.6的實(shí)驗(yàn)平臺,實(shí)驗(yàn)環(huán)境是MicosoftVisualC++6.0。官方網(wǎng)站
http://iphome.hhi.de/suehring.tml中下載到JM的各個版本的程序。實(shí)驗(yàn)中所使用的計算機(jī)的CPU為Pentium41.5G;內(nèi)存大小為256M。
采用的圖像序列為Mobile和Tempete,二者均為CIF格式。圖像序列的編碼順序?yàn)镮PP...IPP...,每隔30個P幀有一個I幀。
下面從緩沖器占用量、編碼時間、運(yùn)動估計時間和SNR四個方面給出本文的跳幀算法與以往算法的對比實(shí)驗(yàn)結(jié)果。
緩沖器占用量的比較
圖2和圖3表示對Tempete序列和Mobile序列每一幀進(jìn)行編碼后緩沖器中的比特數(shù)。圖中,橫坐標(biāo)表示編碼幀數(shù)目,縱坐標(biāo)表示緩沖器占用量;實(shí)線表示的是使用原始的跳幀算法時緩沖器占用量的曲線圖,*線表示的是采用基于MAD比率的跳幀算法后緩沖器占用量的曲線圖。從圖2和圖3可以看出,在第0、30、60和90幀處,緩沖器占用量急劇
上升,這是由于在這四處均為I幀,編碼比特數(shù)比較大,緩沖器的輸入遠(yuǎn)遠(yuǎn)大于輸出。對于每個I幀后的P幀,由于編碼比特數(shù)比較小,緩沖器的輸入小于輸出,所以緩沖器的占用量逐漸減少。圖2和圖3均表明:基于MAD比率的跳幀算法可以降低緩沖器的占用量、避免了緩沖器發(fā)生上溢。
編碼時間、運(yùn)動估計時間和SNR的比較
表1和表2給出對Tempete序列和Mobile序列編碼,傳統(tǒng)跳幀算法與基于MAD比率的跳幀算法在編碼時間、運(yùn)動估計時間和SNR三個方面性能的比較。
從表1和表2可以看出,基于MAD比率的跳幀算法可以較大幅度地縮短編碼時間和運(yùn)動估計時間。在Tempete序列中,編碼時間的改進(jìn)量高達(dá)12.73%。在Mobile序列中,運(yùn)動估計時間的改進(jìn)量達(dá)到了8.58%。
此外,基于MAD比率的跳幀算法使得Y、U和V三個分量的SNR值均有所提高。由于在解碼過程中是用前面一個已經(jīng)編碼的幀來代替跳過的幀,所以對于一個運(yùn)動比較劇烈的幀而言,若按照傳統(tǒng)跳幀算法將其跳過的話,將會影響到解碼端圖像恢復(fù)的連續(xù)性,從而造成圖像質(zhì)量的下降。而本文提出的跳幀算法其實(shí)質(zhì)就是通過放棄運(yùn)動平緩的幀,為運(yùn)動劇烈的幀保留緩存空間。從而提高了整個圖像序列的SNR值。
參考文獻(xiàn):
[1]MinqiangJiang,NamLing.OnEnhancingH.264/AVCVideoRateControlbyPSNR-BasedFramecomplexityEstimation.IEEETransactionsonConsumerElectronics,V.51,No.1,February
2005:P281-286.
[2]NamryeSon,YoonjeongShin,GueesangLee.ANovelRateControlSchemeforH.264VideoCodingusingAdaptiveQuantizationParameter.ProceddingsofSPIE.2004,V.5600:P70-77.
[3]景華,何蕓.一種低復(fù)雜度碼率控制究.計算機(jī)工程與應(yīng)用.2003,V(02):P116-122.
[4]ThomasMeierandKingN.Ngan.ImprovedsingleVOratecontrolforconstantbit-rateapplicationsusingMPEG-4.ProcessingofSPIE.2000,V.4067:P64-75.
[5]MingiangJiang,XiaoquanYi,NamLing.Improve-
dFrame-LayerRateControlforH.264usingMADratio.Proceedingsofthe2004InternationalSymposium.
May2004,V.3:P813-816.
:
-
緩沖器
+關(guān)注
關(guān)注
6文章
2034瀏覽量
46463 -
Mobile
+關(guān)注
關(guān)注
0文章
518瀏覽量
26738 -
SNR
+關(guān)注
關(guān)注
3文章
197瀏覽量
24824
發(fā)布評論請先 登錄
74HC4050緩沖器規(guī)格書

高度ADC輸入緩沖器作用是什么?
利用位反轉(zhuǎn)尋址實(shí)現(xiàn)循環(huán)緩沖器

RC緩沖器的工作過程介紹

緩沖器電路設(shè)計的分類與比較
請問電壓跟隨器與緩沖器有什么區(qū)別?
CDCVF2310時鐘緩沖器數(shù)據(jù)表

CDCVF310時鐘緩沖器數(shù)據(jù)表

CDCM1802時鐘緩沖器數(shù)據(jù)表

三態(tài)緩沖器在計算機(jī)中的應(yīng)用
BUF602閉環(huán)緩沖器數(shù)據(jù)表

緩沖器是干嘛的
電源瞬態(tài)緩沖器的作用是什么
rc緩沖器的原理和作用

緩沖器電路設(shè)計分類有哪些

評論