專利名稱:一種低復雜度的視頻碼率控制方法
技術領域:
本發(fā)明涉及一種碼率控制機制,更具體地說,本發(fā)明涉及一種基于原始視頻統(tǒng)計特征的低復雜度的視頻碼率控制方法。
背景技術:
碼率控制技術是視頻編碼和通信領域一個熱點問題,在視頻通信中起著十分重要的作用。碼率控制技術一般可以分為三種一是利用碼率一量化參數(shù)的解析模型,二是利用對編碼緩沖區(qū)的控制來調(diào)節(jié)碼率,三是綜合利用上述兩類方法。第一類方法的優(yōu)點是碼率調(diào)節(jié)可以用解析的方法得到優(yōu)化的解,但由于視頻內(nèi)容本身的隨機性,單一的解析模型并不能準確刻畫視頻本身的特性,所以,需要有較多的控制參數(shù)才能得到比較滿意的效果,復雜度很高。第二類方法操作簡單,但控制精度不夠。第三類方法綜合了解析模型和緩沖區(qū)控制,是目前碼率控制技術中最流行的一類。
近年來,隨著視頻編碼技術的發(fā)展,產(chǎn)生了新的編碼標準(H.264,VC1.0,AVS),相應地也有一系列碼率控制算法提出。但這些碼率控制算法通常都是上面所述的第三類算法,即基于解析模型和緩沖區(qū)控制的模型。這樣的模型雖然有效結合了解析模型和緩沖區(qū)控制模型,從碼率控制精度的來說,能夠滿足要求,但由于視頻序列本身很難通過解析模型精確預測(復雜度高),所以,現(xiàn)有的方法并不能準確按照視頻序列本身固有的率-失真(R-D)屬性來控制碼率,而是把視頻序列看作一個平穩(wěn)的隨機過程來控制碼率的。但視頻序列本身是一個非平穩(wěn)的隨機過程,這樣會使得現(xiàn)有的碼率控制方法的R-D性能不高。
如果要克服現(xiàn)有方法的不足,必須能夠及時準確得到視頻序列的變化,并根據(jù)這種變化來相應調(diào)整碼率。而視頻序列的變化可以通過視頻序列本身的一些統(tǒng)計量來得到。這些量一般包括有圖像方差,相鄰幀差分直方圖,剩余圖像方差以及剩余圖像直方圖等。其中相鄰幀差分直方圖(以下簡稱差分直方圖)能夠很好反映視頻幀內(nèi)相對于參考幀運動程度的強弱。
發(fā)明內(nèi)容本發(fā)明的目的是克服現(xiàn)有技術的不足,提供一種率-失真性能高的低復雜度碼率控制算法。
為實現(xiàn)上述發(fā)明目的,本發(fā)明提供的低復雜度的視頻碼率控制方法,包括比特率預分配過程和量化參數(shù)調(diào)節(jié)過程;其特征在于,所述比特率預分配過程是利用視頻序列特征進行碼率預分配;所述量化參數(shù)調(diào)節(jié)過程是根據(jù)視頻序列特征來預測編碼復雜度,進而進行量化參數(shù)估計;所述視頻序列特征是指代表視頻序列局部運動的差分直方圖。
上述技術方案中,所述碼率預分配包括如下步驟步驟1)設定目標碼率(視頻編碼中額定的標稱碼率)和目標緩沖區(qū)占用率(視頻編碼器緩沖區(qū)的額定占用率)及圖像組大??;根據(jù)第一個幀間幀各個編碼單元的差分直方圖,初始化求取當前幀的差分直方圖值,并將直方圖平均值初始化為該值;在同一圖像組內(nèi),后續(xù)圖像差分直方圖的平均值按照累加平均的方式得到;步驟2)對每一幀,初始化第一個編碼單元的編碼復雜度;步驟3)計算相鄰幀的差分并統(tǒng)計其直方圖,計算差分直方圖序列的均值;然后根據(jù)當前幀直方圖和均值之間的差異,結合目標碼率和目標緩沖區(qū)占用率,按照均值-比例模型來分配幀級碼率;步驟4)在幀一級碼率分配的基礎上,進一步根據(jù)各個碼率控制基本單元的差分直方圖,采用均值-比例模型來分配基本單元級的碼率。
上述技術方案中,所述量化參數(shù)估計包括如下步驟步驟5)按照一幀內(nèi)相鄰編碼單元直方圖分布,預測當前編碼單元的編碼復雜度;步驟6)得到當前編碼單元的編碼復雜度之后,根據(jù)預分配的碼率,計算出當前編碼單元的量化參數(shù);利用該量化參數(shù)對當前圖像進行編碼,并且用編碼后得到的碼率去修正下一幀的碼率分配。
上述技術方案中,所述碼率控制基本單元為宏塊行。
本發(fā)明的優(yōu)點在于1、可根據(jù)視頻內(nèi)容的變化及時調(diào)節(jié)碼率分配;2、量化參數(shù)計算簡單有效,具有內(nèi)容自適應性;3、碼率分配和調(diào)節(jié)貼近視頻內(nèi)容變化,具有好的率-失真(R-D)性能;4、采用累加更新統(tǒng)計量的方式,避免了延遲。
圖1為碼率分配過程示意圖;圖2為量化參數(shù)估計部分的流程圖;圖3為本發(fā)明的碼率控制方法整體過程的流程圖。
具體實施方式下面結合附圖對本發(fā)明作進一步的描述。
碼率分配過程主要涉及差分直方圖計算,幀級碼率分配和編碼單元級碼率分配。如圖1所示,圖中三個部分分別指直方圖計算,幀分配和單元分配。
量化參數(shù)估計如圖2所示。在碼率控制的方法中,為了提高控制精度,需要減少控制的粒度,所以把每幀劃分成若干個基本編碼單元,碼率控制過程在基本單元的基礎上進行。對每一個基本單元,通過其差分直方圖來預測編碼復雜度,之后根據(jù)預分配的碼率就可以得到該編碼單元應當采取的量化參數(shù)。
碼率控制的整體流程如圖3所示。碼率控制只針對一個圖像組(兩個I幀之間)。對一個圖像組而言,控制過程首先從初始化開始,根據(jù)目標比特率來給整個圖像組分配一定數(shù)量的比特。圖像組中一幀圖像通過碼率預分配得到目標碼率,通過量化參數(shù)估計得到量化參數(shù),之后編碼輸出比特流。根據(jù)輸出的比特和目標碼率之間的差異,修正圖像組整體比特率分配,進而修正下一幀的碼率預分配。
整體的碼率控制過程主要分為以下幾個步驟1、根據(jù)目標碼率要求,初始化當前圖像組的總體比特數(shù)R=bit_rate*L/F。這里bit_rate表示目標碼率要求,L為圖像組的大小(幀),F(xiàn)為幀率。初始化目標緩沖區(qū)大小,初始化差分直方圖均值hoda=hod(0)=Σi=0K=1hod(0,i),hod(0,i)=Σ|x|≥ahistogram(0,i,x)Np(0,i).]]>這里hod代表histogram of difference frame(差分幀直方圖),hod(m)代表當前圖像組第m個幀間幀的幀差分直方圖,對于初始幀間幀而言m=0,它同時也是當前的直方圖平均值hoda。這里假設每幀K個基本單元,hod(m,i)代表第m幀第i個基本單元差分直方圖。Histogram(m,i,x)代表第m幀第i編碼單元中差分值為x的直方圖統(tǒng)計值。α是一個閾值,取值在(0,20)之間,它反映了直方圖對于圖像差的靈敏度,α越小,靈敏度越高。Np(m,i)是當前編碼單元的像素個數(shù)。
2、對每一幀,初始化第一個編碼單元的編碼復雜度Xb(m,0)=1KmΣk=0m-1Σi=0K-1Xb(k,i),]]>m>0;Xb(m,0)=C,m=0。這里Xb(k,i)代表第k幀間幀第i編碼單元的編碼復雜度,Xb(k,i)=r(k,i)*Q(k,i),這里r(k,i)代表對應編碼單元編碼所用比特,Q(k,i)代表對應編碼單元所采用的量化參數(shù)。
3、計算當前幀的差分直方圖并根據(jù)累加平均的方式預分配碼率r(m)=(1+hod(m)-hodahoda)R-RuL-m-1,hoda=1m+1Σi=0mhod(i),]]>這里Ru表示到前m+1幀編碼已經(jīng)產(chǎn)生的碼率。進一步結合目標緩沖區(qū)占用率,對當前幀的最終碼率預分配為r(m)=λr(m)+(1-λ)(BL(m)-Tbl(m))。這里λ=0.5為權重系數(shù),BL(m)代表當前編碼緩沖區(qū)的占用率,Tbl(m)是根據(jù)目標緩沖區(qū)占用模型得到的目標緩沖區(qū)占用率。
4、根據(jù)當前編碼單元的差分直方圖給當前編碼單元分配碼率r(m,i)=(1+hod(m,i)-hodahoda)r(m)-ruK-i,]]>這里ru是當前幀已經(jīng)編碼的基本單元所產(chǎn)生的實際碼率。
5、預測當前編碼單元編碼復雜度。如果是當前幀第一個編碼單元,則直接用步驟2初始化編碼復雜度。否則,由于差分直方圖本身反映了圖像內(nèi)部的運動程度,也間接地代表了圖像本身編碼復雜度(運動越劇烈,編碼復雜度越大)。所以有Xb(m,i)Xb(m,i+1)=hod(m,i)hod(m,i+1)]]>這樣的假設。此外,對于視頻圖像而言,相鄰幀之間的特征呈現(xiàn)時間上的連貫性(即相鄰幀的特征有很大的相似性),為此,可以得到如下關系-ω≤hod(m,i)hod(m,i+1)-hod(m+1,i)hod(m+1,i+1)≤ω]]>基于上述這兩個關系,可以進一步給出如下的關系如果|hod(m,i)hod(m,i-1)-hod(m-1,i)hod(m-1,i-1)|≤ω]]>(條件1)成立,則Xb(m,i)=Xb(m,i-1)Xb(m-1,i)Xb(m-1,i-1)]]>(復雜度估計方法1)這里ω是一個閾值常量,取值在[0.05,0.1]之間。
如果|hod(m,i)hod(m,i-1)-hod(m-1,i)hod(m-1,i-1)|≤ω]]>不成立,則采用如下預測方法(復雜度估計方法2)如果|hod(m,i)-hod(m,i-1)|-|hod(m,i)-hod(m-1,i)|>0.1hoda那么Xb(m,i)=(2*Xb(m-1,i)+Xb(m,i-1))/3否則Xb(m,i)=(Xb(m-1,i)+2*Xb(m,i-1))/36、量化參數(shù)計算和調(diào)節(jié)。得到了當前編碼單元的編碼復雜度預測,通過編碼復雜度的定義得到預測的量化參數(shù)Q(m,i)=Xb(m,i)r(m,i).]]>由于當前編碼單元分配的碼率r(m,i)有可能小于0,但量化參數(shù)必須大于0且為了保證視頻畫面質(zhì)量的連貫性,要求相鄰編碼單元的量化參數(shù)不能相差太大,所以,得到的量化參數(shù)還要修正如下Q(m,i)=max(2,min(Qa+3,max(Qa-3,Qa)),m=0Q(m,i)=max(2,min(Q(m,i-1)+3,max(Q(m,i-1)-3,Q(m,i))),m>0,這里min(.)和max(.)分別表示在兩個數(shù)中取較小和較大值,Qa代表已經(jīng)編碼的基本單元量化參數(shù)的平均值。
權利要求
1.一種低復雜度的視頻碼率控制方法,包括比特率預分配過程和量化參數(shù)調(diào)節(jié)過程;其特征在于,所述比特率預分配過程是利用視頻序列特征進行碼率預分配;所述量化參數(shù)調(diào)節(jié)過程是根據(jù)視頻序列特征來預測編碼復雜度,進而進行量化參數(shù)估計;所述視頻序列特征是指代表視頻序列局部運動的差分直方圖。
2.按權利要求
1所述的低復雜度的視頻碼率控制方法,其特征在于,所述碼率預分配包括如下步驟步驟1)設定目標碼率和目標緩沖區(qū)占用率及圖像組大小;根據(jù)第一個幀間幀各個編碼單元的差分直方圖,初始化求取當前幀的差分直方圖值,并將直方圖平均值初始化為該值;在同一圖像組內(nèi),后續(xù)圖像差分直方圖的平均值按照累加平均的方式得到;步驟2)對每一幀,初始化第一個編碼單元的編碼復雜度;步驟3)計算相鄰幀的差分并統(tǒng)計其直方圖,計算差分直方圖序列的均值;然后根據(jù)當前幀直方圖和均值之間的差異,結合目標碼率和目標緩沖區(qū)占用率,按照均值—比例模型來分配幀級碼率;步驟4)在幀一級碼率分配的基礎上,進一步根據(jù)各個碼率控制基本單元的差分直方圖,采用均值一比例模型來分配基本單元級的碼率。
3.按權利要求
1所述的低復雜度的視頻碼率控制方法,其特征在于,所述量化參數(shù)估計包括如下步驟步驟5)按照一幀內(nèi)相鄰編碼單元直方圖分布,預測當前編碼單元的編碼復雜度;步驟6)得到當前編碼單元的編碼復雜度之后,根據(jù)預分配的碼率,計算出當前編碼單元的量化參數(shù);利用該量化參數(shù)對當前圖像進行編碼,并且用編碼后得到的碼率去修正下一幀的碼率分配。
4.按權利要求
2所述的低復雜度的視頻碼率控制方法,其特征在于,所述碼率控制基本單元為宏塊行。
專利摘要
本發(fā)明涉及一種低復雜度的視頻碼率控制方法,包括比特率預分配過程和量化參數(shù)調(diào)節(jié)過程;其特征在于,所述比特率預分配過程是利用視頻序列特征進行碼率預分配;所述量化參數(shù)調(diào)節(jié)過程是根據(jù)視頻序列特征來預測編碼復雜度,進而進行量化參數(shù)估計;所述視頻序列特征是指代表視頻序列局部運動的差分直方圖。本發(fā)明的優(yōu)點在于可根據(jù)視頻內(nèi)容的變化及時調(diào)節(jié)碼率分配;量化參數(shù)計算簡單有效,具有內(nèi)容自適應性;碼率分配和調(diào)節(jié)貼近視頻內(nèi)容變化,具有好的率-失真性能;采用累加更新統(tǒng)計量的方式,避免了延遲。
文檔編號H04N7/50GK1992898SQ200510135494
公開日2007年7月4日 申請日期2005年12月31日
發(fā)明者周樹民, 李錦濤, 張勇東 申請人:中國科學院計算技術研究所導出引文BiBTeX, EndNote, RefMan