欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種h.264碼率控制方法

文檔序號(hào):7698650閱讀:144來源:國(guó)知局

專利名稱::一種h.264碼率控制方法
技術(shù)領(lǐng)域
:本發(fā)明涉及視頻壓縮技術(shù),特別涉及視頻壓縮技術(shù)中的一種H.264碼率控制方法。
背景技術(shù)
:碼率控制在視頻壓縮技術(shù)中起著至關(guān)重要的作用,它的最終目的是在給定的目標(biāo)比特率及緩存容量的條件下,能夠有效地抑制視頻序列的質(zhì)量波動(dòng)并減少跳幀次數(shù),從而使得傳輸?shù)囊曨l質(zhì)量最優(yōu)化。H.264是由聯(lián)合視頻組(JVT)近年來致力開發(fā)研究的最新視頻壓縮國(guó)際標(biāo)準(zhǔn),在采用H.264的^L頻壓縮標(biāo)準(zhǔn)進(jìn)行碼率控制的時(shí)候,由于壓縮過程中產(chǎn)生的量化參數(shù)(QP)既用于碼率控制過程,又用于率失真優(yōu)化過程,因此會(huì)產(chǎn)生"蛋雞悖論"的問題為了計(jì)算當(dāng)前宏塊的率失真優(yōu)化(RDO),需要利用當(dāng)前宏塊的QP,而當(dāng)前宏塊的QP需要通過計(jì)算該宏塊的平均絕對(duì)差(MAD)來揭示其編碼復(fù)雜度,每個(gè)當(dāng)前宏塊的MAD只有在得知其RDO后才能計(jì)算出。因此,如何解決"蛋雞悖論"成了H.264碼率控制過程中的當(dāng)務(wù)之急。目前,H.264采用了JVT-G012碼率控制算法,該算法通過使用MPEG-2中的二次碼率一量化步長(zhǎng)(R-Q)模型來計(jì)算量化步長(zhǎng)(Q),從而得到最后的QP。在計(jì)算Q之前,還需要計(jì)算二次R-Q模型中的各個(gè)參數(shù),算法的具體實(shí)現(xiàn)過程如下1、采用線性MAD預(yù)測(cè)^^莫型對(duì)當(dāng)前宏塊的MAD進(jìn)行線性預(yù)測(cè),得到當(dāng)前宏塊的MAD預(yù)測(cè)值。2、采用光柵掃描的方式來選擇二次R-Q模型系數(shù)更新時(shí)的歷史數(shù)據(jù)點(diǎn),在選取好歷史數(shù)據(jù)點(diǎn)之后,即可采用線性回歸方法對(duì)二次R-Q模型的系數(shù)進(jìn)行更新,從而得到新的二次R-Q模型。3、將前一幀的平均頭信息比特?cái)?shù)和當(dāng)前幀中已編碼宏塊的平均頭信息比特?cái)?shù)進(jìn)行加權(quán)平均,并將加權(quán)平均后的結(jié)果作為當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值。4、采用如下公式對(duì)當(dāng)前宏塊的預(yù)分配碼率進(jìn)行預(yù)測(cè),其中,i為當(dāng)前宏塊在當(dāng)前幀中的序號(hào);Num為當(dāng)前幀中總的宏塊數(shù);《為當(dāng)前宏塊的預(yù)分配碼率預(yù)測(cè)值;R為當(dāng)前幀的預(yù)分配碼率;似JZ^(/)為當(dāng)前宏塊的MAD預(yù)測(cè)值;M」Z^(A:)為當(dāng)前幀中第k個(gè)宏塊的MAD預(yù)測(cè)4直。5、將通過上述4個(gè)步驟中得到的各參數(shù)代入如下所示的二次R-Q模型中,即可得到當(dāng)前宏塊的Q,其中,W^D,為當(dāng)前宏塊的MAD預(yù)測(cè)值;al和a2為由線性回歸方法得到的更新后的系數(shù),在每次完成對(duì)一個(gè)宏塊的編碼后,都需要通過線性回歸方法對(duì)它們的值進(jìn)行更新;H,為對(duì)當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值;《為對(duì)當(dāng)前宏塊的預(yù)分配碼率預(yù)測(cè)值;g,.為由計(jì)算得到的當(dāng)前宏塊的Q。將計(jì)算得到的g,.轉(zhuǎn)化為gf,即得到了當(dāng)前宏塊的QP。為了進(jìn)一步減少編碼過程中的出現(xiàn)的塊效應(yīng),還需要對(duì)2f進(jìn)行調(diào)整,并將調(diào)整后的QP作為當(dāng)前宏塊的QP。由上述分析看出,應(yīng)用JVT-GO12碼率控制算法可以解決H.264碼率控制過程中產(chǎn)生的"蛋雞悖論"問題,但該算法又存在著不足對(duì)于MAD預(yù)測(cè)模型來說,MAD預(yù)測(cè)時(shí)所使用的線性預(yù)測(cè)才莫型只利用了時(shí)域相關(guān)性,空域相關(guān)性沒有得到利用;同時(shí),MAD預(yù)測(cè)模型的系數(shù)在7=7x7更新時(shí)歷史數(shù)據(jù)點(diǎn)選取采用的是光柵掃描的方式,也沒能充分并且正確地使用空時(shí)域相關(guān)性;對(duì)于二次R-Q模型的系數(shù)來說,系數(shù)更新時(shí)歷史數(shù)據(jù)點(diǎn)的選取采用的是光柵掃描的方式,不僅沒有應(yīng)用時(shí)域相關(guān)性,空域相關(guān)性也應(yīng)用得不準(zhǔn)確;對(duì)于當(dāng)前宏塊頭信息比特?cái)?shù)來說,頭信息比特?cái)?shù)預(yù)測(cè)值采用的是前一幀的平均頭信息比特?cái)?shù)和當(dāng)前幀已編碼宏塊的平均頭信息比特?cái)?shù)的加權(quán)平均,對(duì)于H.264來說,由于編碼的結(jié)構(gòu)變得更復(fù)雜,頭信息比特?cái)?shù)增多,并且不同宏塊之間的頭信息比特?cái)?shù)波動(dòng)很大,所以原有的頭信息比特殊預(yù)測(cè)方法并不適用于H.264;對(duì)當(dāng)前宏塊預(yù)分配碼率來說,由于MAD預(yù)測(cè)的局限性,導(dǎo)致了在對(duì)預(yù)分配碼率進(jìn)行預(yù)測(cè)時(shí),也不能很好地利用空域相關(guān)性。由于目前的JVT-G012碼率控制算法在上述方面的不足,因而導(dǎo)致了計(jì)算得到的QP不合理,使得最終碼率控制不準(zhǔn)確以及編碼視頻質(zhì)量的下降。為了提高JVT-G012碼率控制算法的性能,采用的改進(jìn)的算法有對(duì)于MAD預(yù)測(cè)模型,可以在MAD預(yù)測(cè)才莫型的系數(shù)更新時(shí)更好地利用空域關(guān)系,但由于MAD預(yù)測(cè)模型本身并沒有很好地利用空域相關(guān)性,因此,算法性能提高不大;也可以在MAD預(yù)測(cè)時(shí)采用時(shí)域和空域上的已編碼相鄰宏塊,但由于已編碼相鄰宏塊的選取不能很好地反映視頻內(nèi)容,算法性能受到很大的限制;還可以在使用JVT-G012線性MAD預(yù)測(cè)模型的同時(shí)引入空域線性MAD預(yù)測(cè)才莫型,雖然空^4線性MAD預(yù)測(cè)才莫型的引入充分利用了空域的相關(guān)性,但兩種模型的更新過程使得計(jì)算復(fù)雜度更高。對(duì)于R-Q模型系數(shù),可以根據(jù)距離遠(yuǎn)近選取系數(shù)更新時(shí)所需的歷史數(shù)據(jù)點(diǎn),但僅僅根據(jù)距離判斷相關(guān)性的大小并不能很好地反映視頻內(nèi)容特性,所以算法性能還有提高的空間。對(duì)于當(dāng)前宏塊頭信息比特?cái)?shù),可以對(duì)頭信息比特?cái)?shù)采用前一幀相同位置上的宏塊的頭信息比特?cái)?shù)來預(yù)測(cè),但由于空域相關(guān)性沒有得到很好的利用,所以準(zhǔn)確性有待提高。因此,目前的JVT-G012碼率控制算法及其改進(jìn)算法在性能或計(jì)算復(fù)雜度上都存在缺陷,以至于算法性能不佳或者實(shí)際應(yīng)用困難。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種H.264碼率控制方法,能夠克服JVT-G012碼率控制算法及其改進(jìn)算法在性能或計(jì)算復(fù)雜度上存在的缺陷,實(shí)現(xiàn)最有效的碼率控制。為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種H.264碼率控制方法,用于依次對(duì)當(dāng)前P幀中的每個(gè)當(dāng)前宏塊進(jìn)行碼率控制,包括A、判斷當(dāng)前宏塊是否是當(dāng)前P幀中的第一個(gè)宏塊,如果是,將前一幀的平均QP作為當(dāng)前宏塊的QP,并執(zhí)行步驟D,否則,執(zhí)行步驟B;B、計(jì)算當(dāng)前宏塊的邊緣方向,并利用所述邊緣方向預(yù)測(cè)當(dāng)前宏塊的平均絕對(duì)誤差MAD、根據(jù)已編碼宏塊的歷史信息更新二次碼率一量化步長(zhǎng)R-Q模型系數(shù)、確定當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率;C、根據(jù)所述當(dāng)前宏塊的MAD預(yù)測(cè)值、頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率,利用更新系數(shù)后的二次R-Q模型,確定當(dāng)前宏塊的QP;D、纟艮據(jù)當(dāng)前宏塊的QP對(duì)當(dāng)前宏塊進(jìn)行編碼,并更新所述編碼后的當(dāng)前宏塊的歷史信息,用于當(dāng)前宏塊之后的其它宏塊的二次R-Q模型系數(shù)更新,所述歷史信息包括碼率R、頭信息比特?cái)?shù)H、實(shí)際MAD值和量化步長(zhǎng)Q。由上述的技術(shù)方案可見,本發(fā)明碼率控制方法在對(duì)當(dāng)前宏塊進(jìn)行碼率控制時(shí)首先計(jì)算當(dāng)前宏塊的邊緣方向,再利用計(jì)算出的邊緣方向?qū)Ξ?dāng)前宏塊的MAD值進(jìn)行預(yù)測(cè),相對(duì)于現(xiàn)有的MAD預(yù)測(cè);漠型,可以更有效地利用時(shí)域和空域上的相關(guān)性,克服了JVT-G012碼率控制算法及其改進(jìn)算法在性能上存在的缺陷,實(shí)現(xiàn)了更有效的碼率控制。圖1為本發(fā)明所采用的碼率控制方法的流程圖。圖2為本實(shí)施例二次R-Q模型系數(shù)更新時(shí)歷史數(shù)據(jù)點(diǎn)的選擇示意圖。.圖3為本實(shí)施例當(dāng)前宏塊及根據(jù)其邊緣方向所選擇的相鄰宏塊示意圖。圖4為對(duì)"akiyo"序列采用本實(shí)施例方法與JVT-G012算法仿真后的逐幀PSNR比較示意圖。圖5為對(duì)"Mot&Dau"序列采用本實(shí)施例方法與JVT-G012算法仿真后的逐幀PSNR比較示意圖。圖6為對(duì)"akiyo"序列采用本實(shí)施例方法與JVT-G012算法仿真后的逐幀緩沖區(qū)狀態(tài)比較示意圖。圖7為對(duì)"Mot&Dau"序列采用本實(shí)施例方法與JVT-G012算法仿真后的逐幀緩沖區(qū)狀態(tài)比較示意圖。具體實(shí)施例方式為解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明提出一種全新的H.264碼率控制方法,即利用當(dāng)前宏塊的邊緣方向來對(duì)當(dāng)前宏塊進(jìn)行碼率控制的方法。在視頻圖像的處理中,可以確定當(dāng)前宏塊的邊緣方向,并且與當(dāng)前宏塊相鄰的宏塊中,相同邊緣方向上的宏塊在空域上有較強(qiáng)的相關(guān)性,通過確定當(dāng)前宏塊的邊緣方向就可以確定與當(dāng)前宏塊空域相關(guān)性較強(qiáng)的宏塊,利用這些相關(guān)性較強(qiáng)的宏塊對(duì)當(dāng)前宏塊進(jìn)行預(yù)測(cè),從而相對(duì)于現(xiàn)有JVT-G012算法,使得對(duì)當(dāng)前宏塊的預(yù)測(cè)更加準(zhǔn)確、碼率控制更加有效。基于上述介紹,本發(fā)明所述方案的具體實(shí)現(xiàn)包括A、判斷當(dāng)前宏塊是否是當(dāng)前P幀中的第一個(gè)宏塊,如果是,將前一幀的平均QP作為當(dāng)前宏塊的QP,并執(zhí)行步驟D,否則,執(zhí)行步驟B;B、計(jì)算當(dāng)前宏塊的邊緣方向,并利用所述邊緣方向預(yù)測(cè)當(dāng)前宏塊的平均絕對(duì)誤差MAD、根據(jù)已編碼宏塊的歷史信息更新二次碼率一量化步長(zhǎng)R-Q模型系數(shù)、確定當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率;C、根據(jù)所述當(dāng)前宏塊的MAD預(yù)測(cè)值、頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率,利用更新系數(shù)后的二次R-Q模型,確定當(dāng)前宏塊的QP;D、根據(jù)當(dāng)前宏塊的QP對(duì)當(dāng)前宏塊進(jìn)行編碼,并更新所述編碼后的當(dāng)前宏塊的歷史信息,用于當(dāng)前宏塊之后的其它宏塊的二次R-Q模型系數(shù)更新,所述歷史信息包括碼率R、頭信息比特?cái)?shù)H、實(shí)際MAD值和量化步長(zhǎng)Q。為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)il明。需要說明的是本發(fā)明所提供的碼率控制方法適用于宏塊層的碼率控制,且除第一個(gè)圖像組(GOP)層的第一個(gè)P幀外的其他P幀,均可以采用本發(fā)明的碼率控制方法進(jìn)行處理。其中,對(duì)于第一個(gè)GOP層的第一個(gè)P幀,可以采用現(xiàn)有的碼率控制方法(如JVT-G012算法中關(guān)于該幀的碼率控制方法)進(jìn)行處理。圖1為本發(fā)明所采用的碼率控制方法的流程圖。在圖l所示的碼率控制方法中,對(duì)除第一個(gè)GOP層的第一個(gè)P幀外的其他所有P幀,每幀的碼率控制過程均相同,在下面的實(shí)施例中,僅以其中任一當(dāng)前幀為例,對(duì)本發(fā)明的碼率控制方法進(jìn)行描述。如圖l所示,該方法包括以下步驟步驟100:將當(dāng)前幀的第一個(gè)宏塊作為當(dāng)前宏塊。步驟101:判斷當(dāng)前宏塊是否是當(dāng)前幀中的第一個(gè)宏塊,如果是,則執(zhí)行步驟102;否則,執(zhí)行步驟103。對(duì)于當(dāng)前幀中的第一個(gè)宏塊,由于本幀中不存在已編碼完成的其他宏塊,因此如果采用與其他宏塊相同的確定QP的方法,則在更新R-Q模型系數(shù)時(shí)所利用的歷史數(shù)據(jù)點(diǎn)僅為時(shí)域相關(guān)的歷史數(shù)據(jù)點(diǎn),而不存在空域相關(guān)的歷史數(shù)據(jù)點(diǎn),這樣對(duì)于R-Q模型系數(shù)的更新是不準(zhǔn)確的,從而依據(jù)該模型系數(shù)確定的QP也是不準(zhǔn)確的。因此,本發(fā)明中,對(duì)于當(dāng)前幀中的第一個(gè)宏塊和其他宏塊,計(jì)算QP的方式有所不同。步驟102:將前一幀的平均QP作為當(dāng)前宏塊的QP,并執(zhí)行步驟109。在當(dāng)前宏塊為當(dāng)前幀中的第一個(gè)宏塊時(shí),將前一幀的平均QP作為當(dāng)前宏塊的QP,利用該平均QP對(duì)當(dāng)前宏塊進(jìn)行步驟109中的宏塊編碼。步驟103:使用Sobel算子計(jì)算當(dāng)前宏塊的邊緣方向。由于空域距離上相近的宏塊中,相同邊緣方向上的宏塊在空域上具有較強(qiáng)的相關(guān)性,因此可以通過確定當(dāng)前宏塊的邊緣方向,較為準(zhǔn)確地確定與當(dāng)前宏塊相關(guān)性4交強(qiáng)的宏塊,從而準(zhǔn)確地應(yīng)用空域相關(guān)性,可以解決JVT-G012算法及其改進(jìn)算法中存在的不足。通過本步驟計(jì)算當(dāng)前宏塊的邊緣方向,進(jìn)而在后續(xù)步驟中可以利用該確定的邊緣方向確定與當(dāng)前宏塊相關(guān)性較強(qiáng)的其他宏塊位置。在視頻圖像處理中,可以利用多種方式計(jì)算當(dāng)前宏塊的邊緣方向,本實(shí)施例中,以利用蘇泊爾Sobel算子計(jì)算邊緣方向?yàn)槔M(jìn)行說明,其具體計(jì)算過程如下(一)計(jì)算當(dāng)前宏塊中指定像素的亮度分量;^.對(duì)應(yīng)的邊緣向量、以及該邊緣向量對(duì)應(yīng)的幅度值爿m」D(。,.y)和方向);其中,指定像素是指當(dāng)前宏塊中除去邊緣一圈像素之外的其他像素,假定當(dāng)前宏塊尺寸為N*M,則指定像素為水平方向上的第二個(gè)到第M-l個(gè)、且垂直方向上第二個(gè)到第N-l個(gè)像素,共(N-2"(M-2)個(gè)像素。具體地,將當(dāng)前宏塊中任一指定像素的亮度分量p。.對(duì)應(yīng)的邊緣向量A,—0?!苟x為<=+2xp,.J+I+_一2x_p叫w少w=+2x+A化川-A-,."_2xP,.—,j_'其中,i=l,......,N-2,......,M-2,iVxM是宏塊的尺寸,所述^c,乂表示邊緣向量Aj的水平分量,所述辦".表示邊緣向量力".的垂直分量。則任一指定像素的邊緣向量對(duì)應(yīng)的幅度值爿wp(A」和方向Jwg(A」分別為(二)根據(jù)當(dāng)前宏塊指定像素的邊緣向量對(duì)應(yīng)的幅度值和方向,計(jì)算當(dāng)前宏塊的邊緣方向;具體地,當(dāng)前宏塊的邊緣方向直方圖公式為在本實(shí)施例中,當(dāng)宏塊中像素的邊緣向量對(duì)應(yīng)的方向在a。范圍內(nèi)時(shí),定義該像素的邊緣方向?yàn)?0。;當(dāng)宏塊中像素的邊緣向量對(duì)應(yīng)的方向在^范圍內(nèi)時(shí),定義該像素的邊緣方向?yàn)?。;當(dāng)宏塊中像素的邊緣向量對(duì)應(yīng)的方向在cv范圍內(nèi)時(shí),定義該像素的邊緣方向?yàn)?5。;當(dāng)宏塊中像素的邊緣向量對(duì)應(yīng)的方向在"3范圍內(nèi)時(shí),定義該像素的邊緣方向?yàn)?45°。由邊緣方向直方圖公式即可得到當(dāng)前宏塊中相同邊緣方向上的像素的邊緣向量對(duì)應(yīng)的幅度值之和,則直方圖中具有最大幅度值的邊緣方向即為當(dāng)前宏塊的邊多彖方向。本實(shí)施例中,采用的當(dāng)前宏塊大小為16x16。這里所提到的直方圖,是指以二維圖形的形式表示出當(dāng)前宏塊中具有不同邊緣方向的像素點(diǎn)的邊緣向量的幅度和在不同取值上的分布情況。筒單說,直方圖中的橫軸用于表示各像素點(diǎn)的邊緣方向可能的取值90。、0°、45°和-45。,縱軸用于表示不同的取值分別對(duì)應(yīng)的像素點(diǎn)的邊緣向量的幅度之和。如何建立直方圖為現(xiàn)有技術(shù),這里不再贅述。至此,即可以得到當(dāng)前宏塊的邊緣方向。需要說明的是,本發(fā)明在確定邊緣方向時(shí),并不僅限于采用Sobel來計(jì)釘(A)e{fc小"g(A,,)"p"0,1,2,3},<(—90。,—67.5。]U(67.5。,90(-22.5。,22.5。](22.50,67.5。](-67.50,-22.5。]算當(dāng)前宏塊的邊緣方向,也可采用其它的方式來計(jì)算當(dāng)前宏塊的邊緣方向,同樣能夠?qū)崿F(xiàn)本發(fā)明提高碼率控制準(zhǔn)確性的目的。步驟104:對(duì)二次R-Q模型的系數(shù)進(jìn)行更新。本實(shí)施例采用了與現(xiàn)有技術(shù)相同的二次R-Q模型,且二次R-Q模型的系數(shù)默認(rèn)值是O和l,在對(duì)二次R-Q模型系數(shù)進(jìn)行更新時(shí),需要選取合適的歷史數(shù)據(jù)點(diǎn),進(jìn)而采用線性回歸方法對(duì)系數(shù)進(jìn)行更新。這里歷史數(shù)據(jù)點(diǎn)的信息包括了已編碼宏塊的碼率,已編碼宏塊的頭信息比特?cái)?shù),已編碼宏塊的實(shí)際MAD值以及已編碼宏塊實(shí)際的Q。具體對(duì)二次R-Q模型系數(shù)進(jìn)行更新時(shí),可以采用JVT-G012算法中按照光柵掃描順序來選擇更新時(shí)所需的歷史數(shù)據(jù)點(diǎn)。進(jìn)一步地,為了能獲得更精確的R-Q模型系數(shù),優(yōu)選地,在選取用于更新R-Q模型系數(shù)的歷史數(shù)據(jù)點(diǎn)時(shí),也可以考慮宏塊間的相關(guān)性,即根據(jù)當(dāng)前宏塊的邊緣方向?qū)v史數(shù)據(jù)點(diǎn)進(jìn)行選擇,具體地,沿步驟103確定的當(dāng)前宏塊的邊緣方向,確定與當(dāng)前宏塊相關(guān)性最強(qiáng)的多個(gè)已編碼宏塊,將這些已編碼宏塊作為歷史數(shù)據(jù)點(diǎn),將這些已編碼宏塊的實(shí)際碼率R、頭信息比特?cái)?shù)H和實(shí)際MAD值以及量化步長(zhǎng)Q代入R-Q模型,從而確定R-Q模型的系數(shù)。在具體按照邊緣方向選擇相關(guān)性最強(qiáng)的多個(gè)歷史數(shù)據(jù)點(diǎn)(即已編碼宏塊)時(shí),選擇的歷史數(shù)據(jù)點(diǎn)的個(gè)數(shù),一方面要考慮對(duì)于R-Q模型系數(shù)更新的準(zhǔn)確性,另一方面要考慮計(jì)算復(fù)雜度,從而折衷確定一個(gè)合適的歷史數(shù)據(jù)點(diǎn)個(gè)數(shù),既保證R-Q模型系數(shù)的準(zhǔn)確性,又將計(jì)算復(fù)雜度控制在系統(tǒng)可接受的范圍內(nèi)。本實(shí)施例中,給出一個(gè)優(yōu)選的歷史數(shù)據(jù)點(diǎn)的選擇方案。在該歷史數(shù)據(jù)點(diǎn)的選擇中,優(yōu)選地選擇15個(gè)歷史數(shù)據(jù)點(diǎn),具體地假設(shè)在當(dāng)前幀已編碼宏塊以及前一幀中始于當(dāng)前宏塊相同位置的宏塊,止于光柵掃描順序最后一個(gè)宏塊間的所有宏塊組成一個(gè)平面,以當(dāng)前宏塊為原點(diǎn),一個(gè)宏塊為基本單位,則當(dāng)邊緣方向?yàn)檫吘壏较驗(yàn)?0。時(shí),所選取的歷史數(shù)據(jù)點(diǎn)為x軸坐標(biāo)屬于集合義={-2,-1,0,1,2},y軸坐標(biāo)屬于集合14少={-1,0,1}內(nèi)的所有宏塊;當(dāng)邊緣方向?yàn)?。時(shí),所選取的歷史數(shù)據(jù)點(diǎn)為x軸坐標(biāo)屬于集合義={-1,0,1},y軸坐標(biāo)屬于集合_y={-2,-1,0,1,2}內(nèi)的所有宏塊;當(dāng)邊緣方向?yàn)?5。時(shí),所選取的歷史數(shù)據(jù)點(diǎn)為x軸坐標(biāo)屬于集合x={-1,0,1},y軸坐標(biāo)屬于集合>;={-1,0,1}內(nèi)的所有宏塊,以及坐標(biāo)集合(xj)"(-2,-l),(-2,-2),(-l,-2),(l,2),(2,2),(2,l》內(nèi)的所有宏塊;當(dāng)邊緣方向?yàn)?45°時(shí),所選取的歷史數(shù)據(jù)點(diǎn)為x軸坐標(biāo)屬于集合義={-1,0,1},y軸坐標(biāo)屬于集合少={-1,0,1}內(nèi)的所有宏塊,以及坐標(biāo)集合{(—2,1),(-2,2),(_1,2),(1,—2),(2,—2),(2,—1)}內(nèi)的所有宏塊。圖2為本實(shí)施例二次R-Q模型系數(shù)更新時(shí)歷史數(shù)椐點(diǎn)的選擇示意圖。如圖2所示,空白的方格代表了當(dāng)前幀中的宏塊,畫斜線的方格代表了前一幀中的宏塊,歷史數(shù)據(jù)點(diǎn)的個(gè)數(shù)為15,數(shù)字0-14代表了歷史數(shù)據(jù)點(diǎn)的選擇順序,且數(shù)字0所在的宏塊為當(dāng)前宏塊,其中a0、al、a2和a3分別示出了當(dāng)前宏塊的邊緣方向是90°、0°、45°和-45°時(shí)歷史數(shù)據(jù)點(diǎn)的選擇。在根據(jù)邊緣方向選取好歷史數(shù)據(jù)點(diǎn)之后,即可采用線性回歸方法對(duì)二次R-Q模型的系數(shù)進(jìn)行更新,如何應(yīng)用線性回歸方法進(jìn)行更新為現(xiàn)有技術(shù),這里不再贅述。需要說明的是,在圖像的邊界區(qū)域,可供選擇的歷史數(shù)據(jù)點(diǎn)的個(gè)數(shù)會(huì)減少,由此,歷史數(shù)據(jù)點(diǎn)的選取個(gè)數(shù)也相應(yīng)地減少,為了保證二次R-Q模型有足夠用于更新的歷史數(shù)據(jù)點(diǎn),本實(shí)施例中歷史數(shù)據(jù)點(diǎn)選擇方案的最小值為12個(gè),當(dāng)依據(jù)上述選擇方案選擇出的歷史數(shù)據(jù)點(diǎn)個(gè)數(shù)不能滿足所需的最小值時(shí),還需選取空域上與當(dāng)前宏塊距離最近的宏塊,所選取的宏塊個(gè)數(shù)以滿足經(jīng)驗(yàn)最小值為準(zhǔn)。相比于現(xiàn)有的光柵掃描選擇歷史數(shù)據(jù)點(diǎn)的方式,上述根據(jù)邊緣方向選擇歷史數(shù)據(jù)點(diǎn)的方式,很好地考慮了由邊緣方向確定的宏塊在空域上的相關(guān)性以及在不同時(shí)域上的不同位置間的宏塊之間的相關(guān)性,因此,能夠獲得更準(zhǔn)確的R-Q模型系數(shù),繼而,使得最終的碼率控制結(jié)果也更加準(zhǔn)確。步驟105:根據(jù)步驟103確定的當(dāng)前宏塊的邊緣方向,對(duì)當(dāng)前宏塊的MAD進(jìn)行預(yù)測(cè),并保存當(dāng)前宏塊的空域預(yù)測(cè)MAD值、時(shí)域預(yù)測(cè)MAD值和最終的預(yù)測(cè)MAD值。本實(shí)施例中采用了基于當(dāng)前宏塊的邊緣方向來分別對(duì)當(dāng)前宏塊的時(shí)域MAD和空域MAD進(jìn)行預(yù)測(cè),進(jìn)而將時(shí)域預(yù)測(cè)MAD值和空域預(yù)測(cè)MAD值進(jìn)行加權(quán)平均的方法,由于邊緣方向反映了相鄰宏塊間的相關(guān)性,因此,相對(duì)于目前的MAD預(yù)測(cè)模型,本實(shí)施例中通過邊緣方向來選取宏塊的預(yù)測(cè)才莫型能更好地對(duì)當(dāng)前宏塊的MAD值進(jìn)行預(yù)測(cè)。圖3為本實(shí)施例當(dāng)前宏塊及根據(jù)其邊緣方向所選擇的相鄰宏塊示意圖。如圖3所示,(a)為當(dāng)前宏塊及根據(jù)其邊緣方向所選擇的空域相鄰宏塊示意圖。其中,sO是當(dāng)前幀中當(dāng)前宏塊,sl,s2,s3和s4為由當(dāng)前宏塊根據(jù)當(dāng)前宏塊的邊緣方向所選擇的空域相鄰宏塊,根據(jù)當(dāng)前宏塊的邊緣方向不同,又有aO,al,a2和a3四種不同的情況,當(dāng)邊緣方向?yàn)?0。時(shí),當(dāng)前宏塊sO所選擇的是a0中的空域相鄰宏塊sl,s2,s3和s4,同樣地,當(dāng)邊緣方向分別為0°,45°或-45°時(shí),當(dāng)前宏塊分別選"l爭(zhēng)al,a2或a3中的空域相鄰宏塊sl,s2,s3和s4。通過邊緣方向得到了當(dāng)前宏塊的空域相鄰宏塊之后,即可以在空域中對(duì)當(dāng)前宏塊的MAD值進(jìn)行預(yù)測(cè)。i殳在圖3(a)中所選擇的空域相鄰宏塊sl,s2,s3和s4的實(shí)際MAD值分別為MAD^,^WI\i2,M4L^和M4D^,則當(dāng)前宏塊的空域預(yù)測(cè)MAD值M^D:,.為M^D二.=(尸1M4化h+尸2^4/^2+尸3M4D^+尸4M4i^i4)/(尸1+尸2+尸3+7M),其中,Pl、P2、P3、P4為大于零的實(shí)數(shù),它們的大小反映了當(dāng)前宏塊與所選擇的空域相鄰宏塊相關(guān)性的大小,值越大,表示與該空域相鄰宏塊的相關(guān)性越大,反之,則相關(guān)性越小。根據(jù)大量仿真結(jié)果,得到了一組較佳的P值,即當(dāng)P^3,P2=l,P3=l,P4-l時(shí),可以使對(duì)MAD值進(jìn)行預(yù)測(cè)后得到更精確的碼率控制結(jié)果。圖3(b)為本實(shí)施例當(dāng)前宏塊及根據(jù)其邊緣方向所選擇的時(shí)域相鄰宏塊示意圖。在圖3(b)中,t0是前一幀中與當(dāng)前幀中當(dāng)前宏塊同一空域位置上的宏塊,tl和t2是當(dāng)前宏塊根據(jù)所述邊緣方向在前一幀中所選擇的時(shí)域相鄰宏塊,同空域相鄰宏塊的選擇一樣,纟艮據(jù)當(dāng)前宏塊的邊緣方向不同,也有a0,al,a2和a3四種不同的情況,即當(dāng)邊緣方向?yàn)?0。,0°,45?;?45。時(shí),分別選擇了a0,al,a2或a3中的tl和t2作為當(dāng)前宏塊所選擇的時(shí)域相鄰宏塊。通過邊緣方向得到了當(dāng)前宏塊的時(shí)域相鄰宏塊之后,即可以在時(shí)域中對(duì)當(dāng)前宏塊的MAD值進(jìn)行預(yù)測(cè)。設(shè)M^4ZVi,。,A^A,和^4"卜^分別是前一幀圖像中t0,tl和t2的實(shí)際MAD值,則當(dāng)前幀中與前一幀中的t0相同位置的當(dāng)前宏塊的時(shí)域預(yù)測(cè)MAD值A(chǔ)"",為M4《=fel羅w。+22磨h"+,L,2)/fel+22+0),同空域預(yù)測(cè)時(shí)一樣,Ql、Q2、Q3為大于零的實(shí)數(shù),它們的大小反映了當(dāng)前宏塊與所選擇的時(shí)域相鄰宏塊相關(guān)性的大小,值越大,表示與該時(shí)域相鄰宏塊的相關(guān)性越大,反之,則相關(guān)性越小。根據(jù)大量仿真結(jié)果,得到了一組較佳的Q值,即當(dāng)Ql=4,Q2=l,Q3=l時(shí),可以使對(duì)MAD值進(jìn)行預(yù)測(cè)后得到更精確的碼率控制結(jié)果。由此,當(dāng)前宏塊的預(yù)測(cè)MAD值M4i)/"即為空域預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值M4Z):,.的加權(quán)平均,計(jì)算公式為M4《=rxM4Z)〔,.+(1-a)xM4Z),.,其中,a是自適應(yīng)權(quán)重,它用于比較當(dāng)前宏塊在空蜂預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值相關(guān)性的大小,若a大,則代表了空域相關(guān)性大,反之,時(shí)域相關(guān)性大,它的詳細(xì)計(jì)算流程如下設(shè)bl、b2、b3和b4分別為當(dāng)前幀中當(dāng)前宏塊的左邊,左上,上方以及17右上的相鄰宏塊,它們的實(shí)際MAD值分別為MJZ^M、^^i\ft2、A^Z\M和M4Z\M,空域預(yù)測(cè)MAD值分別為MAD:、M^D:i2、M4Z):,m和A"""4,時(shí)域預(yù)測(cè)MAD值分別為M^D:61、Af^D"2、71"£>"3和71""力4,時(shí)域_空域比重參數(shù)分別為KJw、X^和X^,則有如下形式的偽代碼M4A力,—?dú)w"M4A"—細(xì)L>2MIfThen^w=1Elseif|雄A,w-I-—A,w-雄《wI<_Then=-lE1se1=0其中,i=l,2,3,4;Thd的經(jīng)驗(yàn)值為1.5,是通過多次仿真得到的結(jié)果。進(jìn)一步地,自適應(yīng)權(quán)重"由;i^,.決定,公式為1/3,當(dāng)HU2時(shí)a^2/3,當(dāng)Z:,;^,.<—2時(shí),其中,"的初始值為1.5。1/2,其它需要說明的是,本實(shí)施例中,給出了一種計(jì)算a的方法,也可采用其它的計(jì)算方法,以能反映出空時(shí)域相關(guān)性大小為準(zhǔn)。另外,在上述計(jì)算當(dāng)前宏塊的空域預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值時(shí),分別采用了4個(gè)空域相鄰宏塊和3個(gè)時(shí)域相鄰宏塊的實(shí)際MAD值進(jìn)4亍計(jì)算。這是在均衡考慮實(shí)現(xiàn)復(fù)雜度和MAD值預(yù)測(cè)準(zhǔn)確性后,折衷得到的相鄰宏塊數(shù)目。當(dāng)然,根據(jù)不同的系統(tǒng)設(shè)計(jì)要求,還可以采用其他數(shù)量的相關(guān)牲最強(qiáng)的空域或時(shí)域相鄰宏塊,對(duì)這些空i或或時(shí)域相鄰宏塊的實(shí)際MAD值耳又加一又平均,得到空域或時(shí)域預(yù)測(cè)MAD值。具體根據(jù)邊緣方向選擇不同數(shù)目的相關(guān)性最強(qiáng)的空域相鄰或時(shí)域相鄰宏塊的方式,可以參考上述介紹的方式進(jìn)行擴(kuò)展,本領(lǐng)域技術(shù)人員均可以實(shí)現(xiàn),這里就不再贅述。上述即為本發(fā)明中進(jìn)行MAD預(yù)測(cè)的具體方式,其中,對(duì)MAD預(yù)測(cè)模型進(jìn)行了修訂,利用空域預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值的加權(quán)平均作為最終的預(yù)測(cè)mad值,其中空域預(yù)測(cè)mad值和時(shí)域預(yù)測(cè)mad值分別為才艮據(jù)邊緣方向選擇的空域和時(shí)域相關(guān)性最強(qiáng)的多個(gè)相鄰宏塊的實(shí)際mad值的加權(quán)平均。可見,上述mad預(yù)測(cè)模型簡(jiǎn)單,同時(shí)也充分準(zhǔn)確地利用了空域和時(shí)域上的相關(guān)性,相對(duì)于
背景技術(shù)
中描述的jvt-g012碼率控制算法的改進(jìn)算法中引入的新空域mad預(yù)測(cè)模型,大大降低了計(jì)算復(fù)雜度,并且同樣保證了碼率控制性能的提高。步驟106:對(duì)當(dāng)前宏塊的頭信息比特?cái)?shù)進(jìn)行預(yù)測(cè)。對(duì)當(dāng)前宏塊進(jìn)行碼率控制時(shí),需要知道當(dāng)前宏塊的頭信息比特?cái)?shù),本實(shí)施例中采用了由當(dāng)前宏塊的邊緣方向?qū)陦K的頭信息比特?cái)?shù)進(jìn)行預(yù)測(cè)的方法,公式計(jì)算如下其中,i是當(dāng)前宏塊在當(dāng)前幀中的宏塊序號(hào),//,是當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值,//廠是前一幀中與當(dāng)前宏塊相同位置上的宏塊的實(shí)際頭信息比特?cái)?shù),///是根據(jù)當(dāng)前宏塊的邊緣方向所選取的相關(guān)性最強(qiáng)的空域相鄰宏塊的實(shí)際頭信息比特?cái)?shù),a是自適應(yīng)權(quán)重,它的意義在前面已進(jìn)行了詳細(xì)介紹,在此不再贅述。在本實(shí)施例中,也可釆用與jvt-g012算法相同的頭信息比特?cái)?shù)預(yù)測(cè)方法。同樣地,由于jvt-g012算法中并沒有考慮宏塊間的相關(guān)性,因此,碼率控制的效果不如根據(jù)邊緣方向進(jìn)行頭信息比特?cái)?shù)預(yù)測(cè)時(shí)準(zhǔn)確。步驟107:計(jì)算當(dāng)前宏塊的預(yù)分配碼率。為了對(duì)宏塊進(jìn)行碼率控制,同樣需要知道當(dāng)前宏塊的預(yù)分配碼率,它的計(jì)算公式為w,其中,Num是當(dāng)前幀中總的宏塊個(gè)數(shù);所述^,.是當(dāng)前幀中第i個(gè)宏塊的預(yù)分配碼率;所述71£41^7/是當(dāng)前幀中第i個(gè)宏塊的mad預(yù)測(cè)值;所述197l"£>4—^是前一幀中第j個(gè)宏塊的MAD實(shí)際值;所述T是當(dāng)前幀中第i-l個(gè)宏塊編碼后剩余的可供分配碼率;所述7^。""'是當(dāng)前幀中第i個(gè)宏塊按照邊緣方向選取的相關(guān)性最強(qiáng)的已編碼空域相鄰宏塊的實(shí)際碼率;所述a是自適應(yīng)權(quán)重,它的定義同上。同樣,本實(shí)施例中也可采用與JVT-G012算法相同的預(yù)分配碼率預(yù)測(cè)方法。由于在JVT-G012算法中預(yù)測(cè)碼率時(shí)并沒有考慮空域上的預(yù)分配碼率,也沒有考慮宏塊間的空時(shí)域相關(guān)性,因此,碼率控制的效果不如根據(jù)邊緣方向進(jìn)行預(yù)分配碼率預(yù)測(cè)時(shí)準(zhǔn)確。步驟108:計(jì)算當(dāng)前宏塊的QP并對(duì)其進(jìn)行調(diào)整。將步驟104、105、106、107中的結(jié)果代入二次R-Q模型中,得到量化步長(zhǎng)2,并進(jìn)一步地將G轉(zhuǎn)化為Q《,即為當(dāng)前宏塊的QP。同現(xiàn)有技術(shù)一樣,為了減少編碼過程中的塊效應(yīng),也需要對(duì)gf進(jìn)行調(diào)整,調(diào)整后的值即為當(dāng)前宏塊的QP。步驟109:對(duì)得到QP的當(dāng)前宏塊進(jìn)行編碼。在得到了當(dāng)前宏塊的QP后,即可以根據(jù)所述QP對(duì)當(dāng)前宏塊進(jìn)行率失真優(yōu)化,從而使得當(dāng)前宏塊在眾多編碼方式中選擇一種進(jìn)行編碼,可以使得代價(jià)函數(shù)計(jì)算結(jié)果最小。需要說明的是,率失真優(yōu)化為現(xiàn)有技術(shù),在此不再贅述。步驟110:對(duì)當(dāng)前宏塊的歷史信息進(jìn)行更新。在完成對(duì)一個(gè)宏塊的編碼后,保存該宏塊的Q,利用該宏塊的實(shí)際頭信息比特?cái)?shù)更新步驟106中預(yù)測(cè)得到的頭信息比特?cái)?shù),利用該宏塊的實(shí)際碼率更新步驟107中預(yù)測(cè)得到的碼率,利用該宏塊實(shí)際的MAD值更新步驟105中預(yù)測(cè)得到的最終的MAD預(yù)測(cè)值,其余的該宏塊的空域預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值等信息不變。在本實(shí)施例中,對(duì)編碼后宏塊的歷史信息進(jìn)行更新的目的是為了在對(duì)二次R-Q模型系數(shù)進(jìn)行更新時(shí)選取合適的歷史數(shù)據(jù)點(diǎn),從而使得對(duì)每個(gè)宏塊進(jìn)行碼率控制時(shí)所采用的R-Q模型是不同的,進(jìn)一步地可以得到更精確的碼率控制結(jié)果。步驟lll:判斷本幀編碼是否結(jié)束。在對(duì)編碼后宏塊的歷史信息進(jìn)行更新后,還需要進(jìn)一步判斷該幀是否編碼結(jié)束,也即該幀中的宏塊是否都被編碼,如果是,則結(jié)束本流程;否則,將當(dāng)前宏塊的下一個(gè)宏塊作為當(dāng)前宏塊,返回步驟101。至此,即完成了本發(fā)明所述的宏塊層碼率控制方法的過程。需要進(jìn)一步說明的是,本實(shí)施例中所述的碼率控制方法只適用于H.264編碼標(biāo)準(zhǔn)中宏塊層的碼率控制,GOP層與幀層的碼率控制方法與JVT-G012算法一致,這里不再贅述。以H,264相關(guān)軟件JM9.4作為平臺(tái),分別采用本實(shí)施例中的宏塊層碼率控制方法與JVT-G012算法對(duì)序列進(jìn)行仿真,表1示出了本發(fā)明碼率控制方法與JVT-G012算法的仿真結(jié)果。其中,測(cè)試序列為QCTF格式,只有第一幀設(shè)為I幀,且不考慮跳幀,運(yùn)動(dòng)估計(jì)的精度為l/4像素,參考幀的數(shù)目為1,搜索范圍為16,開啟RDO和CABAC,每個(gè)序列測(cè)試150幀,幀率為15&s,表l中的測(cè)試序列"Akiyo"、"Mot&Dau"、"Container"、"Carphone"、"News"、"Claire"^乂及"Foreman"分別代表了內(nèi)容不同的圖像。從表l中可以看出,采用本實(shí)施例方法時(shí)所有測(cè)試序列的平均PSNR都比采用JVT-G012算法時(shí)高,并且碼率控制的結(jié)杲也更力口準(zhǔn)確。圖4為對(duì)"akiyo"序列采用本實(shí)施例方法與JVT-G012算法仿真后的逐幀PSNR比較示意圖。圖5為對(duì)"Mot&Dau"序列采用本實(shí)施例方法與JVT-G012算法仿真后的逐幀PSNR比較示意圖。從圖4及圖5中可以得出與表l同樣的結(jié)論,即采用本實(shí)施例方法時(shí)的PSNR要明顯高于采用JVT-G012算法時(shí)的PSNR。圖6為對(duì)"akiyo"序列采用本實(shí)施例方法與JVT-G012算法仿真后的逐表1本發(fā)明碼率控制方法與JVT-G012算法的仿真結(jié)果<table>tableseeoriginaldocumentpage22</column></row><table>幀緩沖區(qū)狀態(tài)比較示意圖。圖7為對(duì)"Mot&Dau"序列釆用本實(shí)施例方法與JVT-G012算法仿真后的逐幀緩沖區(qū)狀態(tài)比較示意圖。從圖6與圖7中可以看出,采用本實(shí)施例方法時(shí)的緩沖區(qū)占用量要比采用JVT-G012算法時(shí)更接近目標(biāo)占用量,從而采用本實(shí)施例方法可以更精確地控制碼率。總之,本發(fā)明碼率控制方法在對(duì)不是當(dāng)前幀中第一個(gè)宏塊的當(dāng)前宏塊進(jìn)行碼率控制時(shí),首先應(yīng)用Sobel邊緣算子計(jì)算當(dāng)前宏塊的邊緣方向,再根據(jù)所述邊緣方向?qū)Ξ?dāng)前宏塊的MAD進(jìn)行預(yù)測(cè),將預(yù)測(cè)后的MAD值與對(duì)當(dāng)前宏塊采用的二次碼率—量化步長(zhǎng)R-Q模型的進(jìn)行更新后的系數(shù)、對(duì)當(dāng)前宏塊進(jìn)行預(yù)測(cè)后的頭信息比特?cái)?shù)以及對(duì)當(dāng)前宏塊進(jìn)行計(jì)算后的預(yù)分配碼率一并代入二次R-Q模型,得到當(dāng)前宏塊的QP。采用本發(fā)明所述的方法,相對(duì)于現(xiàn)有的碼率控制方法,可以更有效地利用時(shí)域和空域上的相關(guān)性,克服了JVT-G012碼率控制算法在性能上存在的缺陷,實(shí)現(xiàn)最有效的碼率控制。同時(shí),在利用邊緣方向進(jìn)行當(dāng)前宏塊的MAD預(yù)測(cè)時(shí),該預(yù)測(cè)才莫型簡(jiǎn)單,使得整個(gè)MAD預(yù)測(cè)過程,相對(duì)于JVT-G012碼率控制算法的改進(jìn)算法,計(jì)算復(fù)雜度大為降低,并同樣準(zhǔn)確地利用了空域相關(guān)性,保證性能上的提高。更進(jìn)一步地,在進(jìn)行R-Q模型系數(shù)更新中歷史數(shù)據(jù)點(diǎn)的選擇、當(dāng)前宏塊頭信息的預(yù)測(cè)和碼率的預(yù)分配,同樣可以根據(jù)邊緣方向進(jìn)行,從而提高了R-Q模型系數(shù)、頭信息預(yù)測(cè)和碼率預(yù)分配的準(zhǔn)確性,進(jìn)一步提高了碼率控制的準(zhǔn)確性。綜上所述,以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。權(quán)利要求1、一種H.264碼率控制方法,用于依次對(duì)當(dāng)前P幀中的每個(gè)當(dāng)前宏塊進(jìn)行碼率控制,其特征在于,該方法包括A、判斷當(dāng)前宏塊是否是當(dāng)前P幀中的第一個(gè)宏塊,如果是,將前一幀的平均QP作為當(dāng)前宏塊的QP,并執(zhí)行步驟D,否則,執(zhí)行步驟B;B、計(jì)算當(dāng)前宏塊的邊緣方向,并利用所述邊緣方向預(yù)測(cè)當(dāng)前宏塊的平均絕對(duì)誤差MAD、根據(jù)已編碼宏塊的歷史信息更新二次碼率-量化步長(zhǎng)R-Q模型系數(shù)、確定當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率;C、根據(jù)所述當(dāng)前宏塊的MAD預(yù)測(cè)值、頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率,利用更新系數(shù)后的二次R-Q模型,確定當(dāng)前宏塊的QP;D、根據(jù)當(dāng)前宏塊的QP對(duì)當(dāng)前宏塊進(jìn)行編碼,并更新所述編碼后的當(dāng)前宏塊的歷史信息,用于當(dāng)前宏塊之后的其它宏塊的二次R-Q模型系數(shù)更新,所述歷史信息包括碼率R、頭信息比特?cái)?shù)H、實(shí)際MAD值和量化步長(zhǎng)Q。2、如權(quán)利要求1所述的方法,其特征在于,步驟B中所述當(dāng)前宏塊的邊緣方向是通過蘇泊爾Sobel算子來進(jìn)行計(jì)算的。3、如權(quán)利要求2所述的方法,其特征在于,所述利用所述邊緣方向預(yù)測(cè)當(dāng)前宏塊的MAD包括根據(jù)所述當(dāng)前宏塊的邊緣方向選擇與當(dāng)前宏塊相關(guān)性最強(qiáng)的Nl個(gè)已編碼的空域相鄰宏塊Sl,S2,S3…,Sn"將所述N1個(gè)已編碼的空域相鄰宏塊的實(shí)際MAD值的加權(quán)平均作為當(dāng)前宏塊的空域預(yù)測(cè)MAD值M^D二;根據(jù)所述當(dāng)前宏塊的邊緣方向選擇與當(dāng)前宏塊的相關(guān)性最強(qiáng)的N2個(gè)已編碼的時(shí)域相鄰宏塊tG,、,...,tNw,將所述N2個(gè)已編碼的時(shí)域相鄰宏塊的實(shí)際MAD值的加權(quán)平均作為當(dāng)前宏塊的時(shí)域預(yù)測(cè)MAD值MJ",.;將當(dāng)前宏塊的空域預(yù)測(cè)MAD值MviD:,.和時(shí)域預(yù)測(cè)MAD值MJ",.進(jìn)行加權(quán)平均,得到當(dāng)前宏塊的預(yù)測(cè)MAD值M4Df,M4《=axM4Z):,.+(1-a)xM4Z)二,,其中,所述i表示當(dāng)前宏塊在當(dāng)前幀中的序號(hào);所述a是自適應(yīng)權(quán)重,用于表示當(dāng)前宏塊的空域預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值在MAD預(yù)測(cè)中所占比例的大小。4、才艮據(jù)權(quán)利要求3所述的方法,其特征在于,Nl=4,N2=3;M4D"=(尸lil^Z)^+尸2M^4Z^2+P3M^DM3+尸4^^^0^4)/(尸1+尸2+i33+尸4),其中,M^C^,A£4i^2,M^C^和M^D^分別為sl,s2,s3和s4的實(shí)際MAD值,Pl、P2、P3、P4分別為sl,s2,s3和s4的加權(quán)系數(shù)、且為大于零的實(shí)數(shù);闊i=++,碼—U2)/fel+22+23)'其中,M4"M,。,M^A力,和^4A一,"分別為t0,tl和t2的實(shí)際MAD值,Ql、Q2、Q3分別為t0,tl和t2的加權(quán)系數(shù)、且為大于零的實(shí)數(shù)。5、如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)已編碼宏塊的歷史信息更新二次R-Q模型系數(shù)包括根據(jù)所述當(dāng)前宏塊的邊緣方向選擇與當(dāng)前宏塊相關(guān)性最強(qiáng)的N個(gè)已編碼宏塊,利用所述N個(gè)宏塊的歷史信息更新二次R-Q模型系數(shù),所述N為預(yù)設(shè)的歷史數(shù)據(jù)點(diǎn)選擇個(gè)數(shù)。6、如權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述當(dāng)前宏塊的邊緣方向選擇與當(dāng)前宏塊相關(guān)性最強(qiáng)的N個(gè)已編碼宏塊包括在當(dāng)前幀已編碼宏塊以及前一幀中始于當(dāng)前宏塊相同位置的宏塊、止于光柵掃描順序最后一個(gè)宏塊間的所有宏塊組成一個(gè)平面,以當(dāng)前宏塊為原點(diǎn),一個(gè)宏塊為基本單位,在當(dāng)前宏塊的邊緣方向?yàn)?0°時(shí),選擇x軸坐標(biāo)屬于集合;c={-2,-1,0,1,2},y軸坐標(biāo)屬于集合少={-1,0,1}內(nèi)的所有宏塊;在當(dāng)前宏塊的邊緣方向?yàn)?。時(shí),選擇x軸坐標(biāo)屬于集合^={-1,0,1},y軸坐標(biāo)屬于集合y={-2,-1,0,1,2}內(nèi)的所有宏塊;在當(dāng)前宏塊的邊緣方向?yàn)?5。時(shí),選擇乂軸坐標(biāo)屬于集合:\:={-1,0,1},y軸坐標(biāo)屬于集合_y={-l,0,l}內(nèi)的所有宏塊,以及坐標(biāo)集合{(-2廣1),(-2,-2),(—1廠2),(1,2),(2,2),(2,1)}內(nèi)的所有宏塊;在當(dāng)前宏塊的邊緣方向?yàn)?45°時(shí),選擇x軸坐標(biāo)屬于集合1={-1,0,1},y軸坐標(biāo)屬于集合_y={-1,0,1}內(nèi)的所有宏塊,以及坐標(biāo)集合(x,_y)={(—2,1),(—2,2),(-1,2),(1,-2),(2,-2),(2,—1)}內(nèi)的所有宏塊。7、如權(quán)利要求6所述的方法,其特征在于,當(dāng)選擇的所有宏塊數(shù)目N'<12時(shí),進(jìn)一步選擇空域上與當(dāng)前宏塊距離最近的(12-N')個(gè)已編碼宏塊。8、如權(quán)利要求2所述的方法,其特征在于,所述確定當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值//,.包括=ax//frev+(l-a)x/i7,其中,i是當(dāng)前宏塊在當(dāng)前幀中的宏塊序號(hào);//;"是前一幀中與當(dāng)前宏塊相同位置上的宏塊的實(shí)際頭信息比特?cái)?shù);巧是根據(jù)當(dāng)前宏塊的邊緣方向所選取的相關(guān)性最強(qiáng)的空域相鄰宏塊的實(shí)際頭信息比特?cái)?shù);a是自適應(yīng)權(quán)重,用于表示當(dāng)前宏塊的空域預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值在MAD預(yù)測(cè)中所占比例的大小。9、如權(quán)利要求2所述的方法,其特征在于,所述確定當(dāng)前宏塊的預(yù)分配碼其中,i是當(dāng)前宏塊在當(dāng)前幀中的宏塊序號(hào);Num是當(dāng)前幀中總的宏塊個(gè)數(shù);M^Df;"是所述當(dāng)前宏塊的MAD預(yù)測(cè)值;MvlC^y是前一幀中第j個(gè)宏塊的MAD實(shí)際值;T是當(dāng)前幀中第i-l個(gè)宏塊編碼后剩余的可供分配碼率;《,"'是按照所述當(dāng)前宏塊的邊緣方向選擇的與當(dāng)前宏塊相關(guān)性最強(qiáng)的已編碼空域相鄰宏塊的實(shí)際碼率;a是自適應(yīng)權(quán)重,用于表示當(dāng)前宏塊的空域預(yù)測(cè)MAD值和時(shí)域預(yù)測(cè)MAD值在MAD預(yù)測(cè)中所占比例的大小。10、根據(jù)權(quán)利要求3、8或9所述的方法,其特征在于,所述a的確定方式包括■/v"m,、確定當(dāng)前宏塊的左邊,左上,上方以及右上的相鄰宏塊,得到它們的實(shí)際MAD值分別為M^DW1、M^i\62、M^i\M和Mv4Z\M,空域預(yù)測(cè)MAD值分別為M^D〖M、M^D"2、MJZ)"3和M^D:M以及時(shí)域預(yù)測(cè)MAD值分別為MJ化M、M4Z)"2、M4D"和M4Z)^,對(duì)于它們的時(shí)域一空域比重參數(shù);^、、AM和AM有如下形式的偽代碼<formula>formulaseeoriginaldocumentpage5</formula>其中,i=l,2,3,4,Thd的經(jīng)驗(yàn)值為1.5;由得到的7^確定當(dāng)前宏塊的",公式為、/3,當(dāng)HU2時(shí)"^2/3,當(dāng)Hu-2時(shí)'1/2,其它所述"的初始值為1.5。全文摘要本發(fā)明公開了一種H.264碼率控制方法,用于依次對(duì)當(dāng)前P幀中每個(gè)當(dāng)前宏塊進(jìn)行碼率控制在當(dāng)前宏塊為當(dāng)前P幀中第一個(gè)宏塊時(shí),將前一幀的平均量化參數(shù)QP作為當(dāng)前宏塊的QP,反之,計(jì)算當(dāng)前宏塊的邊緣方向,并利用所述邊緣方向預(yù)測(cè)當(dāng)前宏塊的平均絕對(duì)誤差MAD、根據(jù)已編碼宏塊的歷史信息更新二次碼率-量化步長(zhǎng)R-Q模型系數(shù)、確定當(dāng)前宏塊的頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率,再根據(jù)所述當(dāng)前宏塊的MAD預(yù)測(cè)值、頭信息比特?cái)?shù)預(yù)測(cè)值和預(yù)分配碼率,利用更新系數(shù)后的二次R-Q模型,確定當(dāng)前宏塊的QP。采用本發(fā)明所述的方法,可以更有效地利用時(shí)域和空域上的相關(guān)性,克服了JVT-G012碼率控制算法及其改進(jìn)算法在性能或計(jì)算復(fù)雜度上存在的缺陷,實(shí)現(xiàn)最有效的碼率控制。文檔編號(hào)H04N7/24GK101494776SQ20091007773公開日2009年7月29日申請(qǐng)日期2009年2月13日優(yōu)先權(quán)日2009年2月13日發(fā)明者全子一,宗曉飛,侃常,張文豪,波楊,門愛東,鈺韓申請(qǐng)人:北京郵電大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
双城市| 十堰市| 潮州市| 南阳市| 合川市| 保亭| 博野县| 建湖县| 上虞市| 福建省| 通海县| 板桥市| 西乌珠穆沁旗| 申扎县| 宁海县| 海口市| 吉木萨尔县| 霍林郭勒市| 东城区| 二手房| 交口县| 天水市| 无棣县| 来安县| 青河县| 沈阳市| 长兴县| 湘阴县| 共和县| 高淳县| 伊川县| 陇南市| 江城| 广灵县| 广南县| 托克托县| 郯城县| 岑巩县| 永兴县| 西华县| 阿拉善右旗|