專利名稱::一種對(duì)b幀進(jìn)行碼率控制的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及視頻編碼
技術(shù)領(lǐng)域:
,具體來(lái)講,涉及視頻圖像組中,對(duì)B幀進(jìn)行碼率控制的方法。
背景技術(shù):
:視頻源由視頻圖像序列構(gòu)成,視頻序列被劃分為不同的GOP,即視頻圖像組。在視頻圖像組里,可以由三種不同的視頻圖像幀構(gòu)成,分別為I幀、P幀和B幀。I幀為幀內(nèi)預(yù)測(cè)幀,其視頻圖像通過(guò)本幀內(nèi)的圖像信息進(jìn)行壓縮編碼,這種模式的編碼效率往往不高。P幀為幀間預(yù)測(cè)幀,其采用了幀間運(yùn)動(dòng)補(bǔ)償技術(shù),即通過(guò)前面已編碼幀的信息來(lái)預(yù)測(cè)當(dāng)前幀。B幀為雙向幀間預(yù)測(cè)幀,它可以利用前面已編碼幀或者后續(xù)幀,或者同時(shí)使用前面和后續(xù)重建幀的信息來(lái)進(jìn)行幀間預(yù)觀U,這種編碼方法,需用先對(duì)B幀兩邊的P幀進(jìn)行編碼,然后才能編碼B幀,這意味著,對(duì)P幀和B幀的編碼順序和顯示順序是不同的。P幀和B幀相比I幀,只需要很少的編碼比特來(lái)存儲(chǔ)圖像信息,這些信息主要是幀間預(yù)測(cè)的殘差。B幀和P幀相比,用相同QP,即量化參數(shù)對(duì)P幀和B幀進(jìn)行編碼,B幀往往可以獲得更好的視頻質(zhì)量和較少的編碼比特。碼率控制的最終目的是為了在有限的緩存容量和信道帶寬下傳輸高質(zhì)量的視頻序列。對(duì)一些實(shí)時(shí)的視頻通信服務(wù),如視頻會(huì)議、視頻手機(jī),這些環(huán)境下的資源常常很有限,這就要求高精度的碼率控制方案。一個(gè)GOP,往往是按照根據(jù)I幀位子來(lái)劃分的,即將兩個(gè)I幀之間的P幀和B幀劃分到一個(gè)GOP里。在H.264標(biāo)準(zhǔn)中,主要采用了LIZHENGGUO提出的JVT-G012碼率控制方法。一個(gè)GOP中,第一個(gè)I幀和第一個(gè)P幀的QP大小等于上一個(gè)GOP中編碼P幀平均QP值;后續(xù)P幀QP值利用線形預(yù)測(cè)來(lái)計(jì)算當(dāng)前幀的MAD值,然后再使用R-D二次模型來(lái)計(jì)算出QP值;對(duì)于B幀,它的QP值是根據(jù)相鄰兩個(gè)P幀的QP值大小來(lái)設(shè)定,由于B幀的編碼順序和顯示順序的不同,使得對(duì)B幀顯示的質(zhì)量的控制與編碼時(shí)對(duì)緩沖區(qū)內(nèi)數(shù)據(jù)容量的控制具有更大的難度,此外B幀的編碼比特和失真曲線,即RD曲線與P幀的RD曲線偏離較大。通常在相同的QP下,用B幀進(jìn)行編碼,其編碼比特比P幀的編碼比特低,而B(niǎo)幀的峰值信噪比PSNR卻高于P幀的視頻質(zhì)量,這樣對(duì)B碼率控制帶來(lái)很大的難度。在JVT-G012碼率控制方法中,B幀的QP值是根據(jù)B幀兩邊已編碼P幀的QP的平均值,當(dāng)兩個(gè)P幀間的B幀數(shù)目較大時(shí),此時(shí)在編碼端B幀的碼率控制方法很難同時(shí)滿足緩沖區(qū)的約束和視頻質(zhì)量平緩的要求,尤其是在視頻變化激烈時(shí),由于其碼率控制的實(shí)時(shí)控制能力較弱,常常出現(xiàn)緩存容量的上溢或下溢和視頻質(zhì)量的大幅度波動(dòng)。
發(fā)明內(nèi)容本發(fā)明的目的在于克服現(xiàn)有碼率控制方法的不足,提供一種解碼端視頻質(zhì)量平緩、編碼端緩沖區(qū)數(shù)據(jù)容量平緩的對(duì)B幀碼率進(jìn)行控制的方法。為達(dá)到上述發(fā)明目的,本發(fā)明的對(duì)B幀碼率進(jìn)行控制的方法,包括以下步驟(1)、在視頻編碼過(guò)程中,在對(duì)視頻圖像組中B幀進(jìn)行編碼時(shí),首先設(shè)定一個(gè)量化參數(shù)閾值r2/3,并計(jì)算用于該B幀編碼的I幀與P幀或者連續(xù)兩個(gè)P幀的量化參數(shù)之差i^F;(2)、然后比較量化參數(shù)之差D2P的絕對(duì)值與設(shè)定的量化參數(shù)閾值7P尸的大小,若小于量化參數(shù)閾值reP,則采用保證視頻質(zhì)量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)^2尸;若大于量化參數(shù)閾值7^P,則采用保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)B2尸;(3)、最后,根據(jù)步驟(2)計(jì)算得到的量化參數(shù)S0P對(duì)該B幀進(jìn)行編碼。在本發(fā)明中,保證視頻質(zhì)量平緩的QP計(jì)算方法可以使B幀的QP值在解碼端與兩邊的I幀、P幀或兩邊的P幀QP實(shí)現(xiàn)平緩的過(guò)度,從而保證了視頻質(zhì)量的平緩;而保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法可以使得B幀的QP值在編碼器端根據(jù)I幀與P幀或幀連續(xù)兩個(gè)P幀的QP變化趨勢(shì)而變化,從而實(shí)現(xiàn)較好的緩沖區(qū)數(shù)據(jù)容量的平緩。因此,本發(fā)明將這兩個(gè)算法結(jié)合起來(lái),在P幀QP變化平緩,即量化參數(shù)之差D2尸的絕對(duì)值小于設(shè)定的量化參數(shù)閾值7^P時(shí),采用保證視頻質(zhì)量平緩的QP計(jì)算方法,而在P幀QP變化激烈時(shí),即量化參數(shù)之差i^尸的絕對(duì)值大于設(shè)定的量化參數(shù)閾值PP時(shí),采用保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法,使得在解碼端視頻質(zhì)量的平緩和編碼端緩沖區(qū)數(shù)據(jù)容量的平緩之間實(shí)現(xiàn)了較好的折中。圖1是現(xiàn)有技術(shù)的視頻編碼系統(tǒng)框圖2是圖1所示視頻編碼系統(tǒng)的碼率控制流程圖3是視頻圖像幀在解碼端的顯示順序示意圖4是視頻圖像幀在編碼端的編碼順序示意圖5是本發(fā)明對(duì)B幀碼率進(jìn)行控制的一種具體實(shí)施方式流程圖。具體實(shí)施例方式為更好地理解本發(fā)明,下面結(jié)合具體實(shí)施方式對(duì)本發(fā)明進(jìn)行更為詳細(xì)描述。在以下的描述中,當(dāng)已有的現(xiàn)有技術(shù)的詳細(xì)描述也許會(huì)淡化本發(fā)明的主題內(nèi)容時(shí),這些描述在這兒將被忽略。圖1是現(xiàn)有技術(shù)的視頻編碼系統(tǒng)框圖。圖中,編碼器1對(duì)輸入的視頻信號(hào)進(jìn)行壓縮編碼,產(chǎn)生的編碼信息送入緩沖區(qū)2,并將編碼視頻信號(hào)的編碼比特大小以及平均絕對(duì)誤差,即MAD值反饋給碼率控制器3;緩沖區(qū)2中存儲(chǔ)輸入的編碼信息,將編碼信息以恒定碼率輸出到信道中,并將緩沖區(qū)2內(nèi)容數(shù)據(jù)容量的大小反饋給碼率控制器3;碼率控制器3根據(jù)緩沖區(qū)2反饋的數(shù)據(jù)容量信息,計(jì)算編碼視頻幀的QP值,以使得編碼器產(chǎn)生高質(zhì)量的視頻壓縮信號(hào)的同時(shí)滿足緩沖區(qū)內(nèi)數(shù)據(jù)容量的平緩。圖2是圖1所示視頻編碼系統(tǒng)的碼率控制流程圖。圖中,碼率控制流程包括步驟ST1:計(jì)算GOP的第一幀I幀的QP值,其值為上一個(gè)GOP中P幀的平均QP值或者是初始化所設(shè)定的QP值;步驟ST2:編碼一個(gè)I幀;步驟ST3:計(jì)算下一個(gè)P幀的QP值,其主要方法是利用線形預(yù)測(cè)來(lái)計(jì)算當(dāng)前幀的MAD值,然后再使用R-D二次模型來(lái)計(jì)算下一個(gè)P幀的量化參數(shù);步驟ST4:編碼一個(gè)P幀;步驟ST5:計(jì)算I幀與P幀或兩個(gè)P幀間的B幀QP值;步驟ST6:編碼一個(gè)B幀;步驟ST7:判斷I幀與P幀或兩個(gè)P幀間的B幀是否編碼完?否,轉(zhuǎn)到步驟ST5;步驟ST8:判斷GOP是否編碼完?否,轉(zhuǎn)到步驟ST4;步驟ST9:判斷視頻序列是否編碼完?否,轉(zhuǎn)步驟ST1;步驟ST10:視頻編碼結(jié)束。圖3是視頻圖像幀在解碼端的顯示順序示意圖、圖4是視頻圖像幀在編碼端的編碼順序示意圖。圖中,兩個(gè)p幀之間的B幀數(shù)目為M。在編碼過(guò)程中,B幀的編碼需要先對(duì)兩邊的P幀進(jìn)行編碼,然后才能編碼該B幀。在解碼端,視頻幀的顯示順序?yàn)镻^、Bn>1、、Bn.m、Pn、Bn+1,t......Bn+1,M、Pn+1,在編碼端視頻幀的編碼順序?yàn)镻^、h……、Bn.j,M、Pn、Bn.i……Bn,M、Pn+1,其中,Pn表示第n個(gè)P幀、Bn,m表示第n組B幀的第M個(gè)B幀,顯然B幀在編碼器端的編碼順序與在解碼器端的顯示順序是不同的。圖5是本發(fā)明對(duì)B幀碼率進(jìn)行控制的一種具體實(shí)施方式流程圖。在本實(shí)施例中,對(duì)B幀碼率進(jìn)行控制的流程對(duì)應(yīng)圖2所示碼率控制流程的步驟ST5、步驟ST6,具體來(lái)講,包括步驟ST501:在視頻編碼過(guò)程中,在對(duì)視頻圖像組中B幀進(jìn)行編碼時(shí),首先設(shè)定一個(gè)量化參數(shù)閾值re尸,并計(jì)算用于該B幀編碼的I幀與P幀或者連續(xù)兩個(gè)P幀的量化參數(shù)之差Z)gP(");設(shè)I幀的QP為/2P,第"個(gè)P幀對(duì)應(yīng)的QP值分別為/^尸W,當(dāng)"=1時(shí),D2尸(1)的值等于P2P(1)-/^P,當(dāng)"〉1時(shí),"e尸(")的值等于尸g尸(")-尸Q尸("-1)步驟ST502:比較量化參數(shù)之差Z^戶(w)的絕對(duì)值IZ^P(")1與設(shè)定的量化參數(shù)閾值7P尸的大小,若小于量化參數(shù)閾值rg尸,即Id^(")1<t^P,則轉(zhuǎn)到步驟ST503;若大于量化參數(shù)閾值r2尸,即lZ^尸(")l〉rg尸,則轉(zhuǎn)到步驟ST504;步驟ST503:采用保證視頻質(zhì)量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)B^5,然后轉(zhuǎn)到步驟ST6;步驟ST504:采用保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)Sg尸;(3)、最后,根據(jù)步驟2計(jì)算得到的量化參數(shù)^gP對(duì)該B幀進(jìn)行編碼,然后轉(zhuǎn)到步驟ST6;步驟ST6:編碼一個(gè)B幀;在本實(shí)施例中,采用保證視頻質(zhì)量平緩的QP計(jì)算方法為在第"-l禾B"的P幀間的第/個(gè)B幀的QP值S2尸("力的QP值為0=/",[q,(/D2尸(")+(M_1)/2)/M]Z)0尸(")20~1cvn"r)o,-'、—n/")o"、——1、/,、/"innp"、zn(1、公式(1)中,/4.]表示取數(shù)的整數(shù)部分,M表示兩個(gè)P幀間的B幀數(shù)目,1</SM,w,為固定加權(quán)值,其常用取值范圍為0<^24,其值愈大,^e尸("力的波動(dòng)也會(huì)越大,這樣視頻質(zhì)量波動(dòng)也會(huì)越大,反之^Q尸(w,/)的波動(dòng)也會(huì)變小,這樣視頻質(zhì)量變得平緩。C,為QP固定偏移量,其常用取值范圍為-5SC^5。保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法在第"-l和W的P幀間的第/個(gè)B幀的QP值^QP("力的QP值為公式(2)中,/W[.]表示取數(shù)的整數(shù)部分,M表示兩個(gè)P幀間的B幀數(shù)目,1<WM,^為固定加權(quán)值,其常用取值范圍為0<2^4,其值愈大,S^P(",/)的波動(dòng)也會(huì)越大,這樣視頻質(zhì)量波動(dòng)也會(huì)越大,反之^2P(",/)的波動(dòng)也會(huì)變小,這樣視頻質(zhì)量變得平緩。q為QP固定偏移量,其常用取值范圍為-5《(72^5。具體實(shí)例本部分主要針對(duì)連續(xù)兩個(gè)P幀,第W-1和W的P幀不同的QP值,以及不同的m取值和不同的閾值得到的^ep(w,0情況進(jìn)行說(shuō)明。在碼率控制過(guò)程中,為了避免視頻質(zhì)量的劇烈波動(dòng),一般將連續(xù)兩個(gè)P幀的QP值變化限制在士2之間,因此Z)g尸(")的變化范圍限制在-2SZ^尸(")^2之間,在本具體實(shí)例中將列舉不同D2PW取值情況下的S2尸("力的值。并且實(shí)例中C1=C2=0,并假設(shè)尸e尸W值固定為30。1、保證視頻質(zhì)量平緩的QP計(jì)算方法rg尸-2,M=2,"1=2=1時(shí),依據(jù)公式(1)來(lái)計(jì)算B幀的QP值情況1:在編碼端QP值變化情況<table>tableseeoriginaldocumentpage9</column></row><table>在解碼端QP值變化情況<table>tableseeoriginaldocumentpage9</column></row><table>情況2:在編碼端QP值變化情況<table>tableseeoriginaldocumentpage9</column></row><table>在解碼端QP值變化情況:2QP=29Bn,2QP=30PnQP=30Bn+1,2從這兩組實(shí)例中,可以看出在解碼端,B幀的QP處于兩邊P幀的QP值之間,并實(shí)現(xiàn)了視頻幀QP從高到低或從低到高的逐漸過(guò)渡,這樣可以保證解碼端視頻質(zhì)量的平緩。但在編碼端,B幀QP的變化沒(méi)有順從了P幀QP變化的趨勢(shì),使得緩沖區(qū)內(nèi)的數(shù)據(jù)容量不能很好地保持平緩。2、采用保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法rg/^0,M=2,w,=w2=l時(shí),依據(jù)公式(2)來(lái)計(jì)算B幀的QP值情況1在編碼端QP值變化情況:Pn—1QP=32QP=30Bn,,QP=29Bn,2碎碼端QP值變化情況:QP=29Bn,2QP=28QP=30Bn+1,2瞎況2:在編碼端QP值變化情況:BnBn-1,2QP=30Bn,iQP=31Bn,2QP=32在解碼端QP值變化情況:10<table>tableseeoriginaldocumentpage11</column></row><table>從這兩組實(shí)例中,可以看出在編碼器端,B幀的QP變化在編碼器端順從了P幀QP變化的趨勢(shì),這樣在視頻變化激烈時(shí),B幀QP能適應(yīng)視頻的變化,可以保證緩沖區(qū)內(nèi)數(shù)據(jù)的平緩。但在解碼端,視頻幀QP變化使得質(zhì)量變化變得不平緩,這就是在編碼端,為了保證緩沖區(qū)內(nèi)數(shù)據(jù)容量的平緩付出的代價(jià)。從這四組實(shí)例中可以看出,對(duì)B幀的碼率控制上,視頻質(zhì)量的平緩和緩沖區(qū)內(nèi)數(shù)據(jù)容量的平緩是一對(duì)矛盾的問(wèn)題,為了保證緩沖區(qū)內(nèi)數(shù)據(jù)容量的平緩,就會(huì)在一定程度上犧牲視頻質(zhì)量,反之也亦然。在視頻變化激烈時(shí),這時(shí)編碼幀的編碼比特會(huì)突然增加很多或者降低很多,因此很可能導(dǎo)致緩沖區(qū)內(nèi)書記容量的上溢或下溢,這是在編碼端需要避免的情況,因此本發(fā)明采用保證緩沖區(qū)的碼率控制方法可以在一定程度上緩解視頻變化給緩沖區(qū)帶來(lái)的影響。同時(shí),在視頻變化比較平緩時(shí),此時(shí)采用保證質(zhì)量的算法可以保證視頻顯示質(zhì)量的平緩的同時(shí)又不會(huì)導(dǎo)致緩沖區(qū)內(nèi)數(shù)據(jù)容量的上溢或下溢。盡管上面對(duì)本發(fā)明說(shuō)明性的具體實(shí)施方式進(jìn)行了描述,但應(yīng)當(dāng)清楚,本發(fā)明不限于具體實(shí)施方式的范圍,對(duì)本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來(lái)講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見(jiàn)的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護(hù)之列。權(quán)利要求1、一種對(duì)B幀碼率進(jìn)行控制的方法,其特征在于,包括以下步驟(1)、在視頻編碼過(guò)程中,在對(duì)視頻圖像組中B幀進(jìn)行編碼時(shí),首先設(shè)定一個(gè)量化參數(shù)閾值TQP,并計(jì)算用于該B幀編碼的I幀與P幀或者連續(xù)兩個(gè)P幀的量化參數(shù)之差DQP;(2)、然后比較量化參數(shù)之差DQP的絕對(duì)值與設(shè)定的量化參數(shù)閾值TQP的大小,若小于量化參數(shù)閾值TQP,則采用保證視頻質(zhì)量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)BQP;若大于量化參數(shù)閾值TQP,則采用保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)BQP;(3)、最后,根據(jù)步驟(2)計(jì)算得到的量化參數(shù)BQP對(duì)該B幀進(jìn)行編碼。保證視頻質(zhì)量平緩的QP計(jì)算方法為使B幀的QP值在解碼端與兩邊的I幀、P幀或兩邊的P幀QP實(shí)現(xiàn)平緩的過(guò)度;保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法為使B幀的QP值在編碼器端根據(jù)I幀與P幀或幀連續(xù)兩個(gè)P幀的QP變化趨勢(shì)而變化。2、根據(jù)權(quán)利要求1所述的對(duì)B幀碼率進(jìn)行控制的方法,其特征在于,步驟(2)所述的采用保證視頻質(zhì)量平緩的QP計(jì)算方法為在第"-l和"的P幀間的第/個(gè)B幀的QP值S2/VU)的QP值為其中,/W[.]表示取數(shù)的整數(shù)部分,M表示兩個(gè)P幀間的B幀數(shù)目,1<^M,T^P(w)為第w個(gè)P幀對(duì)應(yīng)的QP值,為固定加權(quán)值,C,為B幀QP固定偏移量。3、根據(jù)權(quán)利要求1所述的對(duì)B幀碼率進(jìn)行控制的方法,其特征在于,步驟(2)所述的保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法為在第W-l和"的P幀間的第/個(gè)B幀的QP值5e尸(w力的QP值為<formula>formulaseeoriginaldocumentpage3</formula>其中,/w[.]表示取數(shù)的整數(shù)部分,M表示兩個(gè)P幀間的B幀數(shù)目,1</《M,尸2尸(")為第"個(gè)P幀對(duì)應(yīng)的QP值,^為固定加權(quán)值,C2為B幀QP固定偏移全文摘要本發(fā)明公開(kāi)了一種對(duì)B幀碼率進(jìn)行控制的方法,通過(guò)在視頻編碼過(guò)程中,在對(duì)視頻圖像組中B幀進(jìn)行編碼時(shí),首先設(shè)定一個(gè)量化參數(shù)閾值TQP,并計(jì)算用于該B幀編碼的I幀與P幀或者連續(xù)兩個(gè)P幀的量化參數(shù)之差DQP,然后比較,若量化參數(shù)之差DQP的絕對(duì)值小于量化參數(shù)閾值TQP,則采用保證視頻質(zhì)量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)BQP;若大于,則采用保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法計(jì)算該B幀的量化參數(shù)BQP。這樣在P幀QP變化平緩,采用保證視頻質(zhì)量平緩的QP計(jì)算方法,而在P幀QP變化激烈時(shí),采用保證緩沖區(qū)數(shù)據(jù)容量平緩的QP計(jì)算方法,使得在解碼端視頻質(zhì)量的平緩和編碼端緩沖區(qū)數(shù)據(jù)容量的平緩之間實(shí)現(xiàn)了較好的折中。文檔編號(hào)H04N7/26GK101478676SQ200810147789公開(kāi)日2009年7月8日申請(qǐng)日期2008年12月8日優(yōu)先權(quán)日2008年12月8日發(fā)明者春方,魯國(guó)寧申請(qǐng)人:四川虹微技術(shù)有限公司