本發(fā)明屬于視頻編碼技術(shù)領(lǐng)域,涉及幀內(nèi)(I幀)預(yù)測編碼技術(shù),尤其涉及一種視頻編碼中幀內(nèi)(I幀)的碼率估計方法,可用于快速高效地選擇出幀內(nèi)預(yù)測的最佳模式,減少幀內(nèi)編碼所需的時間。
背景技術(shù):
視頻編碼技術(shù)是指對視頻進行壓縮的技術(shù)。日常生活中的視頻數(shù)據(jù)包括信息和冗余數(shù)據(jù)兩部分內(nèi)容,視頻編碼旨在去除視頻數(shù)據(jù)的冗余部分,以減少視頻數(shù)據(jù)在存儲和傳輸過程中的壓力。當(dāng)前主流的視頻編碼平臺都采用基于圖像塊的混合編碼框架,圖像塊需要經(jīng)過預(yù)測、變換、量化、熵編碼等方法,最大限度地消除視頻數(shù)據(jù)中的統(tǒng)計冗余。
率失真優(yōu)化技術(shù)(Rate-Distortion Optimization,簡稱RDO)是保證在一定的視頻質(zhì)量條件下盡量減少編碼比特數(shù)的方法,或在一定碼率限制條件下盡量減少編碼的失真。率失真過程會通過率失真優(yōu)化函數(shù)來評估每種預(yù)測方式的優(yōu)劣,主要通過考察每種預(yù)測模式的失真和編碼比特數(shù)。在相同失真的情況下,編碼比特數(shù)越小的預(yù)測模式將會在RDO過程中被選擇。由此,在RDO過程中需要得到每種預(yù)測模式的失真以及編碼比特數(shù)。然而,要求得到某種預(yù)測模式的編碼比特數(shù),需要對該預(yù)測塊的變換量化后的結(jié)果做熵編碼,這卻是一個非常耗時的過程。
技術(shù)實現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種視頻編碼中幀內(nèi)(I幀)的碼率估計方法,主要通過預(yù)測塊的信息建模,并在相應(yīng)模型下利用信息熵理論估計出預(yù)測塊編碼比特數(shù),從而跳過了熵編碼的過程;本發(fā)明方法可用于快速高效地選擇出幀內(nèi)預(yù)測的最佳模式,減少幀內(nèi)編碼所需的時間。在視頻質(zhì)量損失較少(0.64%BD-rate損失)的情況下節(jié)約了較多的編碼時間(37.7%的RDO模塊時間)。
率失真優(yōu)化RDO過程首先選出每一種塊劃分下的最優(yōu)預(yù)測模式;再從各種塊劃分的最優(yōu)模式中選出最佳的塊劃分模式。本發(fā)明的關(guān)鍵創(chuàng)新點在于:本發(fā)明使用了廣義高斯分布和均勻分布相結(jié)合的新模型,新模型對視頻編碼中的殘差分布的擬合與實際結(jié)果更為接近,同時由于模型尾部是均勻分布,使得在整個碼率估計過程中,更新查找表環(huán)節(jié)的計算復(fù)雜度能夠大大降低。本發(fā)明方法增加了對估計編碼比特數(shù)修正的環(huán)節(jié),相當(dāng)于對上述混合模型的決策結(jié)果進行了一次修正,使得修正結(jié)果更加接近真實熵編碼的結(jié)果。
本發(fā)明提供的技術(shù)方案是:
一種視頻編碼中幀內(nèi)編碼的碼率估計方法,通過對預(yù)測塊的殘差信息進行建模,并在相應(yīng)模型下根據(jù)信息熵理論估計出預(yù)測塊的編碼比特數(shù),從而可以在RDO(率失真優(yōu)化,Rate-Distortion Optimization)過程中跳過熵編碼過程,有效地減少編碼時間;所述碼率估計方法主要包括:統(tǒng)計預(yù)測塊分布信息并建模過程、根據(jù)模型估計預(yù)測模式的編碼比特數(shù)的過程,和對估計的編碼比特數(shù)做出修正的過程;具體步驟如下:
1)統(tǒng)計預(yù)測塊分布信息并建模的流程如下:
11)以一幀為單位,統(tǒng)計不同的預(yù)測塊大小(RDO過程會將預(yù)測塊劃分為不同的大小,從4x4~64x64)中每個位置的殘差分布,并對預(yù)測塊中每個位置的殘差用廣義高斯分布模型和均勻分布模型的混合模型進行擬合,得到的概率密度函數(shù)作為用于預(yù)測塊中每個位置的概率分布情況的混合模型。(注:混合模型的更新頻率原則上每一幀更新一次,也就是說當(dāng)前幀的統(tǒng)計結(jié)果會用到下一幀的預(yù)測當(dāng)中。但如果在一幀結(jié)束以后沒有達到一定的樣本數(shù)量,則不會更新模型,統(tǒng)計樣本與下一幀樣本一同更新。)
12)用步驟11)得到的模型,計算出預(yù)測塊在每個位置上、量化結(jié)果為特定值的概率(即對某一預(yù)測塊上的某一位置,若經(jīng)過量化后這個位置的量化值為x,求出這種情況發(fā)生的概率),再根據(jù)概率求出信息熵。以算出的信息熵作為預(yù)測塊在這個位置這個量化值的估計編碼比特數(shù)。將估計得到的編碼比特數(shù)存放到一個數(shù)據(jù)表中,這樣在下一幀編碼的RDO過程中只需要查詢該數(shù)據(jù)表即可獲得相應(yīng)的編碼比特數(shù)。
2)根據(jù)模型估計RDO過程的每種預(yù)測模式的編碼比特數(shù):
在上述的建模過程在我們得到了預(yù)測塊在每個位置的每個量化值的估計編碼比特數(shù),我們在RDO的過程中,經(jīng)過預(yù)測、變換、量化步驟后,根據(jù)每個位置量化的結(jié)果從相應(yīng)數(shù)據(jù)表中查詢得到該位置的估計比特數(shù),并將這個預(yù)測塊的所有位置的編碼比特數(shù)相加即可得到該預(yù)測塊的估計編碼比特數(shù),從而跳過了熵編碼的過程。
3)估計的編碼比特數(shù)做出修正:
利用步驟2)的結(jié)果,我們可以跳過熵編碼的過程,選出每種塊大小(4x4~64x64)中的最佳預(yù)測模式(這在RDO過程中已經(jīng)實現(xiàn);我們的發(fā)明是利用步驟2)替代了RDO過程中計算復(fù)雜度較高的熵編碼過程)。RDO過程會緊接著在不同塊劃分的最優(yōu)模式中選出一個最佳模式作為最終的劃分結(jié)果。本發(fā)明中,當(dāng)我們得出每個塊大小的最優(yōu)模式后,對這些最優(yōu)模式做一個簡易的熵編碼,并用這個簡易的熵編碼結(jié)果作為最優(yōu)模式的預(yù)估編碼比特數(shù),用于我們在不同的塊大小之間選擇出最優(yōu)的劃分方式。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
本發(fā)明提供一種視頻編碼中幀內(nèi)(I幀)的碼率估計方法,主要通過預(yù)測塊的信息建模,并在相應(yīng)模型下利用信息熵理論估計出預(yù)測塊編碼比特數(shù),從而跳過了熵編碼的過程;本發(fā)明方法可用于快速高效地選擇出幀內(nèi)預(yù)測的最佳模式,減少幀內(nèi)編碼所需的時間。本發(fā)明具有以下優(yōu)點:
(一)廣義高斯分布和均勻分布的混合模型比較符合真實情況的殘差分布,在同一種塊大小中能夠很好地甄別出最優(yōu)的預(yù)測模式。
(二)對每一種塊大小中的最優(yōu)模式做了重新的熵編碼(簡易熵編碼),該過程與真實的熵編碼相比復(fù)雜度較低,但足夠用來決策出最好的塊劃分方式。視頻質(zhì)量損失較少(0.64%BD-rate損失)。
(三)一幀更新一次統(tǒng)計模型,而在RDO過程中只需要做簡單的查詢操作,時間復(fù)雜度較低。節(jié)約了較多的編碼時間(節(jié)省了37.7%的RDO模塊時間)
附圖說明
圖1是本發(fā)明提供的碼率估計方法的流程框圖。
圖2是現(xiàn)有的廣義高斯分布模型和本發(fā)明所提出的混合模型的概率密度函數(shù)圖;
其中,虛線形表示傳統(tǒng)的廣義高斯分布模型;實線形表示廣義高斯分布和均勻分布的混合模型;兩條豎線與橫軸的交點表示在混合模型中廣義高斯分布和均勻分布的分界點。
圖3是本發(fā)明計算預(yù)測塊中某一位置被量化為特定值的概率示意圖;
其中,曲線是針對預(yù)測塊中某一個位置的殘差分布;橫軸表示該位置量化前的值,縱軸表示該位置量化前取特定值的概率密度;對于該位置而言,當(dāng)量化后的結(jié)果時,從量化公式其中f為量化偏移,Qstep為量化步長,int(x)表示取整函數(shù),sgn(x)表示符號函數(shù))可知,對應(yīng)的量化前的值可能處于的區(qū)間是從而在這個區(qū)間對曲線求積分,即可得到該位置的值被量化為的概率,也就是圖3中黑色陰影部分的面積;對于量化后結(jié)果為可得量化前區(qū)間可能處于(-(1-f)·Qstep,(1-f)·Qstep),該區(qū)間即量化死區(qū)deadzone,圖3中部白色陰影部分的面積表示該位置量化后結(jié)果為的概率。
具體實施方式
下面結(jié)合附圖,通過實施例進一步描述本發(fā)明,但不以任何方式限制本發(fā)明的范圍。
本發(fā)明提供了一種在視頻編碼領(lǐng)域的I幀編碼中率失真優(yōu)化(Rate Distortion Optimization)模塊的快速碼率估計方法,用以估算RDO過程中每種預(yù)測模式的編碼碼率,以替代真實熵編碼過程的巨大的時間復(fù)雜度,在視頻質(zhì)量損失較少(0.64%BD-rate損失)的情況下節(jié)約了較多的編碼時間(37.7%的RDO模塊時間)。本發(fā)明適用于視頻編碼中I幀的碼率估計。
本發(fā)明通過對預(yù)測塊的殘差信息進行建模,并在相應(yīng)模型下根據(jù)信息熵理論估計出預(yù)測塊的編碼比特數(shù),從而可以在RDO過程中跳過熵編碼過程,有效地減少編碼時間;圖1是本發(fā)明提供的碼率估計方法的流程框圖,主要包括三個部分:統(tǒng)計預(yù)測塊分布信息并建模、根據(jù)模型估計預(yù)測模式的編碼比特數(shù)、并對估計的編碼比特數(shù)做出修正;具體包括如下步驟:
1)統(tǒng)計預(yù)測塊分布信息并建模,流程如下:
11)以一幀為單位,統(tǒng)計不同的預(yù)測塊大小(4x4~64x64)中每個位置的殘差分布,并對預(yù)測塊中每個位置的殘差用廣義高斯分布模型和均勻分布模型的混合模型進行擬合,得到預(yù)測塊中每個位置的概率分布情況。
其中:模型的更新頻率原則上每一幀更新一次,也就是說,當(dāng)前幀的統(tǒng)計結(jié)果會用到下一幀的預(yù)測當(dāng)中。但如果在一幀結(jié)束以后沒有達到一定的樣本數(shù)量,則不會更新模型,統(tǒng)計樣本與下一幀樣本一同更新。
12)計算出預(yù)測塊在每個位置上,當(dāng)量化結(jié)果為特定值的概率,再利用信息熵公式(f(P)=-log(P))根據(jù)概率求出信息熵。以算出的信息熵作為預(yù)測塊在這個位置這個量化值的估計編碼比特數(shù)。將估計得到的編碼比特數(shù)存放到一個數(shù)據(jù)表中,這樣在下一幀編碼的RDO過程中只需要查詢該數(shù)據(jù)表即可獲得相應(yīng)的編碼比特數(shù)。
2)根據(jù)模型估計預(yù)測模式的編碼比特數(shù)
在上述的建模過程在我們得到了預(yù)測塊在每個位置的每個量化值的估計編碼比特數(shù),我們在RDO的過程中,經(jīng)過預(yù)測、變換、量化步驟后,根據(jù)每個位置量化的結(jié)果從相應(yīng)數(shù)據(jù)表中查詢得到該位置的估計比特數(shù),并將結(jié)果相加即可得到該預(yù)測塊的估計編碼比特數(shù),從而跳過了熵編碼的過程。
3)估計的編碼比特數(shù)做出修正
在每一個塊大小(4x4~64x64)中我們用上述方式?jīng)Q策出當(dāng)前塊大小的最優(yōu)預(yù)測模式。當(dāng)我們得出每個塊大小的最優(yōu)模式后,對這些最優(yōu)模式做一個簡易的熵編碼,并用這個簡易的熵編碼結(jié)果作為最優(yōu)模式的預(yù)估編碼比特數(shù),用于我們在不同的塊大小之間選擇出最優(yōu)的劃分方式。
在統(tǒng)計預(yù)測塊分布信息并建模過程中,具體地,我們以一幀為單位,統(tǒng)計不同的預(yù)測塊大小中每個位置的殘差分布(每個位置有一個獨立的殘差分布模型),并對預(yù)測塊中每個位置的殘差用廣義高斯分布模型和均勻分布模型的混合模型進行擬合,得到預(yù)測塊中每個位置的概率分布情況。廣義高斯分布函數(shù)表達式如下:
其中,
表達式中,fuv(x)表示預(yù)測塊中每個位置的概率密度分布(u,v為預(yù)測塊中位置的坐標(biāo)),σuv表示在該位置的標(biāo)準(zhǔn)差,ηuv控制著概率密度函數(shù)的形狀(用表達式進行估算),Γ(·)表示伽馬函數(shù)。本發(fā)明將廣義高斯分布模型與均勻分布模型結(jié)合,混合模型表達式f′uv(x)如式3:
其中,θuv是一個調(diào)整因子,以保證概率密度函數(shù)在整個區(qū)間內(nèi)積分為1。buv是廣義高斯分布和均勻分布的邊界,muv表征量化后x能夠取的最大值,從而得到廣義高斯分布和均勻分布混合模型的表達式,如圖2所示。圖2是現(xiàn)有的廣義高斯分布模型和本發(fā)明所提出的混合模型的概率密度函數(shù)圖。
在根據(jù)模型估計預(yù)測模式的編碼比特數(shù)的過程中,具體地,我們首先根據(jù)混合模型的概率密度函數(shù)計算量化結(jié)果為某一特定值的概率圖3是本發(fā)明計算預(yù)測塊中某一位置被量化為特定值的概率示意圖。如圖3所示,對于模型中的廣義高斯分布的那部分,計算表達式如式4:
其中,f表示量化偏移,Qstep表示量化步長。對于的情況,我們?nèi)∽鳛橛嬎愕慕平Y(jié)果,而情況下的概率我們可以不必計算,正如下面所說的,我們會忽略當(dāng)量化結(jié)果為0的時候所帶來的編碼比特數(shù)。
對于模型中均勻分布的那部分,計算表達式如式5所示:
我們得到概率以后,可以利用信息熵理論,通過式6估計編碼比特數(shù):
這樣,通過式7我們就能夠得到每個預(yù)測塊的編碼比特數(shù):
rB=∑u∑vruv (式7)
需要注意的是,計算概率的公式具有比較高的計算復(fù)雜度,我們可以將計算結(jié)果存到一個查找表中,這樣就只需要在更新概率模型的時候計算一次,并緩存結(jié)果,在之后的RDO模塊中就可以直接查找結(jié)果,從而有效地提高RDO模塊的時間效率。
上述方式可以快速的估計出同一個塊大小中的最優(yōu)預(yù)測模式,但這個估計的編碼比特數(shù)在決策不同塊大小的時候效果并不理想,需要對估計的碼率做出修正。
在對估計的碼率做出修正的過程中,具體地,當(dāng)我們得出一個塊大小的最優(yōu)模式以后,我們可以對這個模式進行一次簡易的熵編碼,并用該結(jié)果用于不同塊大小之間的RDO決策依據(jù)。簡易熵編碼的思想比較簡單,我們只將完整的熵編碼過程進行到二值化的步驟,并用二值化產(chǎn)生的比特數(shù)作為最后的估計編碼比特數(shù)。
至此完成在RDO過程中的碼率估計的所有步驟。
需要注意的是,公布實施例的目的在于幫助進一步理解本發(fā)明,但是本領(lǐng)域的技術(shù)人員可以理解:在不脫離本發(fā)明及所附權(quán)利要求的精神和范圍內(nèi),各種替換和修改都是可能的。因此,本發(fā)明不應(yīng)局限于實施例所公開的內(nèi)容,本發(fā)明要求保護的范圍以權(quán)利要求書界定的范圍為準(zhǔn)。