專利名稱:一種低復(fù)雜度的積分碼率控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種低復(fù)雜度的積分碼率控制方法,特別涉及一種適用于最新標準編碼器的低復(fù)雜度的碼率控制方法,屬于數(shù)字視頻壓縮、數(shù)字視頻通訊技術(shù)領(lǐng)域。
背景技術(shù):
視頻壓縮是一種有損壓縮,在消除視頻序列中的空間冗余和時間冗余的同時,通過去除掉視頻信息中的部分高頻分量,來達到很高的壓縮率。其中,調(diào)整壓縮率的主要手段是通過調(diào)整量化步長的大小,對殘差圖像進行量化,產(chǎn)生不同的比特數(shù)。視頻編碼器中的碼率控制部分正是通過為編碼器選擇合適的量化步長來控制比特數(shù)的輸出。可見,碼率控制是視頻編碼器重要組成部分。在編碼過程中,碼率控制需根據(jù)網(wǎng)絡(luò)帶寬的要求,在控制輸出比特數(shù)變化的同時,盡量保證輸出視頻的質(zhì)量。
到現(xiàn)在為止,出現(xiàn)了許多碼率控制方法,其中比較有名的有MPEG-2的TM5(Test Model 5)碼率控制方法、H.263的TMN 8(Test Model Near 8)碼率控制方法,MPEG-4的VM8(Verification Model version 8)碼率控制方法等。
現(xiàn)在國際上最新的視頻壓縮標準是H.264/MPEG-4AVC。國內(nèi)最新的標準是正在制定中的AVS視頻壓縮標準。這兩個標準采用了近幾年來最新的技術(shù)。兩者在有些方面有所不同,但大多數(shù)技術(shù)非常相近。其中,兩者都采用了一項重要的技術(shù)——率失真優(yōu)化技術(shù)。這項技術(shù)在輸出碼率和視頻質(zhì)量失真率之間取得了一個非常好的折衷。但是這項技術(shù)與傳統(tǒng)的碼率控制方法又有所矛盾。這個矛盾是傳統(tǒng)的碼率控制方法在計算編碼當前宏塊所需的量化參數(shù)之前,需知道當前宏塊的殘差;而率失真優(yōu)化技術(shù)在計算出當前宏塊的殘差之前,需要知道編碼當前宏塊所需的量化參數(shù)。H.264參考軟件中的碼率控制方法,成功的解決了這個矛盾。但代價是帶來了很高的復(fù)雜度。
發(fā)明內(nèi)容
本發(fā)明的主要目的是提供一種簡單而有效的碼率控制方法——積分碼率控制方法。這種碼率控制方法不僅適用于傳統(tǒng)的MPEG-2、MPEG-4、H.263編碼器,而且同樣適用于最新的H.264、AVS編碼器。對于符合最新標準的編碼器。這種方法可以有效的避免上述與率失真優(yōu)化技術(shù)之間的矛盾,更準確地控制輸出碼率的變化、取得較高質(zhì)量的視頻輸出;同時,其實現(xiàn)復(fù)雜度非常低,大大降低了對資源的需求。
本發(fā)明的目的是這樣實現(xiàn)一種低復(fù)雜度的積分碼率控制方法,至少包括如下步驟步驟1為當前圖象組(Group of Picture,簡稱GOP)分配一定的比特數(shù);步驟2為GOP的P、B幀分配相應(yīng)的比特數(shù),為GOP的I幀指定一量化參數(shù);步驟3針對各宏塊,采用積分碼率控制的方法,計算出碼率控制的量化參數(shù)。
上述步驟1的具體實現(xiàn)如下在編碼第i個GOP的第j幀之前,第i個GOP中剩余的未分配的比特數(shù)Bi(j)=Ri(j)f×Nf-Vi(j),j=1,Bi(j-1)+Ri(j)-Ri(j-1)f×Ni-j+1)-bi(j-1),j=2,3,...,Ni.---(1)]]>這里Bi(j)為開始編碼第i個GOP第j幀時剩余待分配比特數(shù);Ri(j)為在編碼第j幀時的瞬時碼率;Ni為第i個GOP中的幀數(shù);f為編碼幀率;Vi(j)為虛擬緩沖區(qū)的滿度(actual buffer fullness);bi(j-1)為第j-1幀所產(chǎn)生的實際比特數(shù)。
實際上,在恒定碼率(Constant Bit Rate,簡稱CBR)的情況下,Ri(j)等于Ri(j-1)。此時式(1)可以簡化為Bi(j)=Ri(j)f×Ni-Vi(j),j=1,Bi(j-1)-bi(j-1),j=2,3,...,Ni.---(2)]]>式(1)中Vi(j)的更新公式為Vi(j)=0,i=1,j=1,Vi-1(Ni-1),i≠1,j=1,Vi(j-1)+bi(j-1)-Ri(j-1)f,j=2,3,...,Ni.---(3)]]>對于每一個GOP開始時的I幀,為其指定一個量化參數(shù)。
(1)對第一個GOP的第一幀(I幀),需結(jié)合著圖像大小和帶寬的情況,從外部為其指定一合理的量化參數(shù)QP1(1)。默認情況下(對應(yīng)H.264的編碼器)QP1(1)=40,bpp≤l130,l1<bpp≤l2,20,l2<bpp≤l3,10,bpp>l3.---(4)]]>這里bpp(bppbits per pixel)是每個像素所用的比特數(shù),bpp=R1(1)f×Npixel,]]>Npixel是一幀圖像中像素的點數(shù)。在QCIF/CIF情況時,這里指定l1=0.15,l2=0.45,l3=0.9,當大于上面的圖像尺寸時指定l1=0.6,l2=1.4,l3=2.4。
(2)對于第i個GOP的第一幀(I幀),其量化參數(shù)的取值如下QPi(1)=max{QPi-1(1)-2,min{QPi-1(1)+2,SumQP(i-1)Np(i-1)-1}}---(5)]]>確定,其中Np(i-1)第i-1GOP的P幀的幀數(shù);SumQP(i-1)第i-1GOP的P幀的平均量化參數(shù)之和,對于第一個GOP的I幀的量化參數(shù)由用戶根據(jù)帶寬,圖像尺寸來設(shè)定一個初始值。
上式結(jié)果進一步被調(diào)整為QPi(1)=QPi(1)-1,if QPi(1)>QPi-1(Ni-1-L)-2(6)
QPi-1(Ni-1-L)是上一個GOP中最后一P幀的量化參數(shù);L是兩個P幀間B幀的幀數(shù)所述步驟2具體實現(xiàn)為按照幀類型的不同為各幀分配比特數(shù)(1)計算在當前GOP中對應(yīng)于每個P幀或B幀的虛擬緩沖區(qū)目標滿度(target buffer level)Si(j)在編碼完當前GOP的第一個I幀后,編碼第一個P幀之前,虛擬緩沖區(qū)初始目標滿度為Si(2)=Vi(2)(7)對于后續(xù)的幀,虛擬緩沖區(qū)目標滿度計算公式為Si(j+1)=Si(j)-Si(2)Ni-2---(8)]]>綜合以上兩式,虛擬緩沖區(qū)目標滿度由下述公式計算Si(j)=Vi(2),j=2,Si(j-1)-Si(2)N(i)-2,j>2.---(9)]]>(2)為當前P幀或B幀分配比特數(shù)首先,按照虛擬緩沖區(qū)目標滿度、虛擬緩沖區(qū)滿度、幀率、當前信道帶寬,計算出第j幀的目標比特數(shù),如下式T~i(j)=Ri(j)f+γ×(Si(j)-Vi(j))---(10)]]>這里γ是一個常數(shù),為0.5。
再根據(jù)當前GOP剩余的目標比特數(shù),為當前幀分配比特數(shù)Tt,i(j)=Wt,i(j-1)×Bi(j)Wp,i(j-1)×Np,r+Wb,i(j-1)×Nb,r11---]]>其中t代表P幀或B幀;Np,r和Nb,r分別為當前GOP中剩余待編碼P幀和B幀的幀數(shù)。這里Wp,i(j)為P幀的平均復(fù)雜度,Wb,i(j)為B幀的平均復(fù)雜度。它們的計算公式為Wp,i(j)=bi(j)×QPp,i(j)Kp]]>
Wb,i(j)=bi(j)×QPb,i(j)Kb]]>這里Kp、Kb是與量化機制有關(guān)的常數(shù),當編碼器為MPEG-2編碼器時,Kp=1.0、Kb=1.4;當編碼器為H.264的編碼器時,Kp=1.0、Kb=1.3636。
綜合考慮式(10)、(11),求出當前P幀或B幀的目標碼率Ti(j)=β×T^i(j)+(1-β)×T~i(j)---(12)]]>其中β為一常數(shù),為0.5。
最后,考慮到HRD(對應(yīng)于H.263、H.264,在MPEG系列中為VBV,在AVS中為BBV),將目標比特數(shù)限定在一定范圍內(nèi)。
編碼完一幀,所產(chǎn)生的實際比特被加到緩沖區(qū)中,為保證更新后的緩沖區(qū)占用度不至于太高,采用一定的跳幀策略。
所述步驟3具體實現(xiàn)為應(yīng)用積分控制方法為一幀中各宏塊分配碼率并計算相應(yīng)的量化參數(shù)對于I幀,一幀中所有宏塊的量化參數(shù)都是相等的。因此這里所述的宏塊級碼率控制方法是針對P幀和B幀的。
宏塊級碼率控制方法在編碼器編碼過程中為一幀中的每一個宏塊選擇合適的量化參數(shù),這樣使得整幀產(chǎn)生的比特數(shù)與為當前幀分配的碼率比特數(shù)相近。
下面是宏塊級積分控制方法的詳細描述(1)采用積分控制方法計算出當前宏塊的量化步長Qstept+=error_bitst/kiconst (13)這里的t代表P幀或B幀。error_bitst是編碼上一個同一類型宏塊所得的真實比特數(shù)與目標比特數(shù)的差值;kiconst為積分常數(shù);Qstept即為編碼當前宏塊所需的量化步長,其初始值為10。根據(jù)編碼器的映射規(guī)則把量化步長Qstept轉(zhuǎn)化成相應(yīng)的量化參數(shù)QPl,i(j)。為不影響視頻質(zhì)量,同一幀中連續(xù)宏塊量化參數(shù)的變化應(yīng)緩慢,對QPl,i(j)的變化范圍做出如下限制QPl,i(j)=max{QPl-1,i(j)-DQuant,min{QPl,i(j),QPl-1,i(j)+DQuant}} (14)這里,DQuant是量化參數(shù)增量。由于不同編碼系統(tǒng)的量化機制是不同的,因而,DQuant的取值一般也是不同,這里取1。
另外,在當前幀已產(chǎn)生的比特數(shù)大于或等于當前幀的目標比特數(shù)時,當前宏塊的量化參數(shù)按下式取值QPl,i(j)=QPl-1,i(j)+DQuant (15)最后,為保證視頻畫面視覺質(zhì)量上的平滑,對上面求得的QPl,i(j)做如下限定QPl,i(j)=max{QPMIN,QPt,i(j)-DQP,min{QPMAX,QPt,i(j)+DQP,QPl,i(j)}}(16)這里QPMIN為最小量化參數(shù),QPMAX為最大量化參數(shù);QPt,i(j)為同一類型上一幀的平均量化參數(shù)值;DQP為當前宏塊量化參數(shù)可以與同類型上一幀的平均量化參數(shù)值的最大差值;(2)對當前宏塊進行編碼(在H.264、AVS的編碼器中,此時對當前宏塊進行率失真優(yōu)化并編碼)(3)更新當前幀剩余目標比特數(shù),更新當前宏塊的比特差error_bitst=bl,i(j)-Ti(j)/mb_cn (17)bl,i(j)為編碼當前塊所產(chǎn)生的比特數(shù);Ti(j)/mb_cn當前宏塊的目標比特數(shù);Ti(j)為當前幀的目標碼率;mb_cn為當前視頻序列一幀圖像所包含的宏塊數(shù)。
圖1是視頻編碼系統(tǒng)框圖;圖2是視頻編碼系統(tǒng)主程序流程圖;圖3是本發(fā)明方法實現(xiàn)過程的主要步驟流程圖。
具體實施例方式本發(fā)明的目的在于在保證輸出視頻的質(zhì)量的情況下,通過為數(shù)字視頻編碼器選擇合適的量化步長來控制比特數(shù)的輸出,以適應(yīng)網(wǎng)絡(luò)帶寬和的要求。在圖1中所示的視頻編碼系統(tǒng)框圖中,視頻序列表示通過其他設(shè)備獲得的沒有進行壓縮的原始視頻序列,它作為視頻編碼系統(tǒng)的輸入。在圖1中所示的視頻編碼器可以是視頻編碼芯片或視頻編碼程序,由它對原始視頻序列進行壓縮編碼,壓縮的結(jié)果生成碼流文件。該碼流文件的數(shù)據(jù)量遠小于原始視頻序列,因而達到了壓縮視頻信息的目的。
圖2所示是視頻編碼系統(tǒng)的主程序流程圖。除碼率控制這一部分外,本發(fā)明采用了國際視頻編碼標準H.264JM86的基本編碼框架。
圖3所示是碼率控制部分的實現(xiàn)流程圖。碼率控制方法是本發(fā)明的核心,它不僅適用于傳統(tǒng)的MPEG-2、MPEG-4、H.263編碼器,而且同樣適用于最新的H.264、AVS編碼器。
為了驗證本發(fā)明的實際性能和編碼效率,進行了以下對比實驗。對相同的視頻序列、采用相同的編碼參數(shù),分別執(zhí)行本發(fā)明的碼率控制程序和H.264JM86碼率控制程序。表1、2分別為在不同的目標碼率情況下平均PSNR值的比較。從表中可以看出,改進算法在低碼率情況下,要比原算法好,其他情況下,其平均PSNR值與原算法的平均PSNR值基本持平。改進算法輸出的實際碼率和目標碼率很接近,并能隨目標碼率的變化而變化。同時本發(fā)明提出碼率控制方法能夠把虛擬緩沖區(qū)的滿度維持在一個適度的水平,保證緩沖區(qū)既不上溢也不下溢。
表1低碼率時改進前后各個序列平均PSNR值
表2中碼率時改進前后各個序列平均PSNR值
權(quán)利要求
1.一種低復(fù)雜度的積分碼率控制方法,其特征在于,至少包括如下步驟步驟1為當前圖象組GOP分配一定的比特數(shù);步驟2為GOP的P、B幀分配相應(yīng)的比特數(shù),為GOP的I幀指定一量化參數(shù);步驟3針對各宏塊,采用積分碼率控制的方法,計算出碼率控制的量化參數(shù)。
2.根據(jù)權(quán)利要求1所述的積分碼率控制方法,其特征在于,所述步驟
1)當前GOP的目標比特數(shù)是有下式確定的Bi(j)=Ri(j)f×Ni-Vi(j),j=1,Bi(j-1)+Ri(j)-Ri(j-1)f×Ni-j+1)-bi(j-1)j=2,3,...,Ni.]]>其中Bi(j)開始編碼第i個GOP第j幀時剩余待分配比特數(shù);Ri(j)在編碼第j幀時的瞬時碼率;Ni為第i個GOP中的幀數(shù);f編碼幀率;Vi(j)虛擬緩沖區(qū)的滿度;bi(j-1)第j-1幀所產(chǎn)生的實際比特數(shù)。
3.根據(jù)權(quán)利要求2所述的積分碼率控制方法,其特征在于,Vi(j)的更新公式為Vi(j)=0,i=1,j=1,Vi-1(Ni-1),i≠1,j=1,Vi(j-1)+bi(j-1)-Ri(j-1)f,j=2,3,...,Ni.]]>
4.根據(jù)權(quán)利要求1所述的積分碼率控制方法,其特征在于,所述步驟2)中的為P幀或B幀的指定的相應(yīng)的比特數(shù)由式Ti(j)=β×T^i(j)+(1-β)×T^i(j)]]>確定,其中β為一常數(shù),取值為0.5。
5.根據(jù)權(quán)利要求4所述的積分碼率控制方法,其特征在于, 由式T^t,i(j)=Wt,i(j-1)×Bi(j)Wp,i(j-1)×Np,r+Wb,i(j-1)×Nb,r]]>確定,其中t代表P幀或B幀;Np,r當前GOP中剩余待編碼P幀的幀數(shù);Nb,r當前GOP中剩余待編碼B幀的幀數(shù);Wp,i(j)P幀的平均復(fù)雜度;Wb,i(j)B幀的平均復(fù)雜度。
6.根據(jù)權(quán)利要求5所述的積分碼率控制方法,其特征在于,P幀的平均復(fù)雜度Wp,i(j)和B幀的平均復(fù)雜度Wb,i(j)分別由式Wp,i(j)=bi(j)×QPp,i(j)Kp]]>和Wb,i(j)=bi(j)×QPb,i(j)Kb,]]>其中Kp、Kb與量化機制有關(guān)的常數(shù),當編碼器為MPEG-2編碼器時,Kp=1.0、Kb=1.4;當編碼器為H.264的編碼器時,Kp=1.0、Kb=1.3636。
7.根據(jù)權(quán)利要求4所述的積分碼率控制方法,其特征在于, 由式T~i(j)=Ri(j)f+γ×(Si(j)-Vi(j))]]>確定,其中γ為一個常數(shù),取值為0.5。
8.根據(jù)權(quán)利要求7所述的積分碼率控制方法,其特征在于,Si(j)由式Si(j)=Vi(2),j=2,Si(j-1)-Si(2)N(i)-2,j>2.]]>確定。
9.根據(jù)權(quán)利要求1所述的積分碼率控制方法,其特征在于,所述步驟
2)中的GOP的I幀的量化參數(shù)由式QPi(1)=max{QPi-1(1)-2,min{QPi-1(1)+2,SumQP(i-1)Np(i-1)-1}}]]>確定,其中Np(i-1)第i-1GOP的P幀的幀數(shù);SumQP(i-1)第i-1GOP的P幀的平均量化參數(shù)之和,對于第一個GOP的I幀的量化參數(shù)由用戶根據(jù)帶寬,圖像尺寸來設(shè)定一個初始值。
10.根據(jù)權(quán)利要求1所述的積分碼率控制方法,其特征在于,對于第一個GOP的I幀的量化參數(shù)即初始值,默認情況下(對應(yīng)H.264的編碼器),使用下式確定QP1(1)=40,bpp≤l1,30,l1<bpp≤l2,20,l2<bpp≤l3,10,bpp>l3.]]>這里bpp=R1(1)f×Npixel,]]>Npixel是一幀圖像中像素的點數(shù),在QCIF/CIF情況時,這里指定l1=0.15,l2=0.45,l3=0.9,當編碼圖像的尺寸大于上面的圖像尺寸時指定l1=0.6,l2=1.4,l3=2.4。
11.根據(jù)權(quán)利要求1所述的積分碼率控制方法,其特征在于,所述步驟3)中的量化參數(shù)對應(yīng)的量化步長由式Qstept+=error_bitst/kiconst確定,其中t代表P幀或B幀,error_bitst上一個同一類型宏塊實際產(chǎn)生的比特數(shù)與目標比特數(shù)的差值;kiconst積分常數(shù);Qstept編碼當前宏塊所需的量化步長,其初始值為10,根據(jù)編碼器的映射規(guī)則把量化步長Qstept轉(zhuǎn)化成相應(yīng)的量化參數(shù)QPl,i(j)。
12.根據(jù)權(quán)利要求10所述的積分碼率控制方法,其特征在于,一幀中連續(xù)宏塊量化參數(shù)QPl,i(j)的變化范圍由式QPl,i(j)=max{QPl-1,i(j)-DQuant,min{QPl,i(j),QPl-1,i(j)+DQuant}}確定,其中DQuant是量化參數(shù)增量,不同編碼系統(tǒng)的量化機制是不同的,DQuant的取值一般也是不同,這里取1。
13.根據(jù)權(quán)利要求1所述的積分碼率控制方法,其特征在于,所述步驟3)中的各宏塊的量化參數(shù)在當前幀已產(chǎn)生的比特數(shù)大于或等于當前幀的目標比特數(shù)時,由QPl,i(j)=QPl-1,i(j)+DQuant確定。
14.根據(jù)權(quán)利要求10、11、12所述的積分碼率控制方法,其特征在于,最終的量化參數(shù)QPl,i(j)由式QPl,i(j)=max{QPMIN,QPt,i(j)-DQP,min{QPMAX,QPt,i(j)+DQP,QPl,i(j)}}確定,其中QPMIN最小量化參數(shù);QPMAX最大量化參數(shù);QPt,i(j)同一類型上一幀的平均量化參數(shù)值;DQP當前宏塊量化參數(shù)可以與同類型上一幀的平均量化參數(shù)值的最大差值。
15.根據(jù)權(quán)利要求10所述的積分碼率控制方法,其特征在于,在編碼完一個宏塊之后,實際產(chǎn)生的比特數(shù)與目標比特數(shù)的差值由式error_bitst=bl,i(j)-Ti(j)/mb_cn確定,其中bl,i(j)編碼當前宏塊所產(chǎn)生的比特數(shù);Ti(j)/mb_cn當前宏塊的目標比特數(shù);Ti(j)當前幀的目標碼率;mb_cn當前視頻序列一幀圖像所包含的宏塊數(shù)。
全文摘要
一種低復(fù)雜度的積分碼率控制的方法。這種方法在適用于傳統(tǒng)編碼器的同時特別適用于采用率失真技術(shù)的編碼器。首先,為GOP中各幀分配相應(yīng)的比特數(shù);然后,根據(jù)圖像的復(fù)雜度為當前GOP內(nèi)的當前幀分配比特數(shù);再根據(jù)積分碼率控制技術(shù),求出當前需編碼宏塊的量化參數(shù)。在做相應(yīng)調(diào)整之后,把求得的量化參數(shù)返回給率失真優(yōu)化技術(shù)和其他編碼部分。其中應(yīng)用了許多模型,包括全局復(fù)雜性估計模型、流體流量阻塞模型、積分碼率控制模型等。通過采用這些這些技術(shù),準確的控制了碼率的變化,保證了解碼圖像的視覺質(zhì)量,同時,取得了非常低的復(fù)雜度。
文檔編號H04N7/26GK1870753SQ20051007398
公開日2006年11月29日 申請日期2005年5月27日 優(yōu)先權(quán)日2005年5月27日
發(fā)明者杜清秀, 尚書林, 盧漢清 申請人:中國科學(xué)院自動化研究所