專利名稱:基于場景切換的碼率控制視頻壓縮方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于視頻壓縮編碼技術(shù)領(lǐng)域,尤其涉及一種基于場景切換的碼率控制視頻壓縮方法和裝置。
背景技術(shù):
碼率控制技術(shù)在帶寬受限的多媒體通信系統(tǒng)中具有重要的作用。傳統(tǒng)的視頻通信碼率控制算法,如H. 264/AVC編碼器中采用的碼率控制算法,在將碼率資源分配到圖像組(GOP)中各幀圖像時,僅僅考慮了各幀圖像自身的復(fù)雜度,而忽視了同GOP中各幀圖像之間的相關(guān)性,如對含有頻繁場景切換的視頻序列進(jìn)行編碼時,GOP中某幀圖像可能因出現(xiàn)場景切換而與其參考幀之間毫無相關(guān)性,如果仍然采用傳統(tǒng)的碼率控制方法,將導(dǎo)致圖像編碼資源浪費和編碼質(zhì)量的下降。由于視頻序列中I、P及B幀編碼后產(chǎn)生的比特數(shù)不一樣,為了使輸出碼流速率與信道速率相匹配,提高信道利用率,一般在編碼器和信道之間加一個緩沖區(qū),而緩沖區(qū)容量大小與通信時延的要求構(gòu)成了一對新的矛盾,碼率控制的目的就是為了解決這一矛盾。對于編碼器來說,一個魯棒的碼率控制算法應(yīng)該在充分利用帶寬資源和保證緩沖區(qū)不溢出的前提下,將有限的碼率資源進(jìn)行合理分配,獲得盡可能好的編碼質(zhì)量。當(dāng)視頻序列中出現(xiàn)場景切換時,其編碼質(zhì)量將受到影響,影響程度取決于場景切換幀在其所處GOP中的位置。當(dāng)場景切換發(fā)生在I幀時,由于I幀采用幀內(nèi)編碼模式,場景切換對于I幀本身不會產(chǎn)生任何影響,同時也不會對后續(xù)幀的預(yù)測編碼產(chǎn)生影響;由于B幀為雙向預(yù)測,只要其前后2個參考幀有I幀與其處于同一場景中(假設(shè)序列中沒有連續(xù)2幀同時發(fā)生場景切換),其預(yù)測編碼的精度仍然能夠得到保證,編碼質(zhì)量不會受到很大影響。不同于I幀和B幀,當(dāng)場景切換發(fā)生在P幀,對當(dāng)前GOP編碼質(zhì)量的影響相當(dāng)大首先,由于當(dāng)前P幀與其參考幀處于不同的場景中,幀間預(yù)測編碼將完全失效,宏塊必須通過RDO(rate-distortion optimiza-tion)模式選擇后才采取巾貞內(nèi)編碼,優(yōu)化過程極大浪費了編碼時間;其次,由于絕大多數(shù)宏塊采用幀內(nèi)編碼模式,占用了大量的碼率資源,使得后續(xù)各幀由于碼率資源缺乏而編碼質(zhì)量下降,此影響還會延續(xù)至后續(xù)的G0P?,F(xiàn)實中的視頻序列,不可避免存在場景切換。如果編碼器不考慮場景切換的影響,就會浪費有限的碼率資源,從而導(dǎo)致編碼質(zhì)量下降。目前,針對場景切換提出了很多碼率控制算法,其中常用的方法是通過改變GOP的結(jié)構(gòu)和長度來重新分配碼率資源。如上文提出的算法中,當(dāng)檢測到場景切換時,當(dāng)前GOP剩余幀和下一個GOP的所有幀合并為一個G0P,因此,GOP長度要比默認(rèn)長度N大,最糟的情況下為2N-1。由于GOP過長容易導(dǎo)致緩沖區(qū)的溢出,并且導(dǎo)致GOP中后面部分幀的編碼性能下降。在上文提出的算法中,采取將過長的GOP拆分成2個新的GOP來解決這個問題,但這樣做的后果是導(dǎo)致增加一個I幀,造成碼率資源的浪費。在視頻壓縮算法中,一般的視頻壓縮算法都沒有提及對場景切換的要求,由于采用了固定長度的圖像組(GOP)結(jié)構(gòu),不能有效地處理視頻序列中的場景切換,導(dǎo)致場景切換幀后續(xù)各幀編碼質(zhì)量嚴(yán)重下降?,F(xiàn)有的X. 264視頻壓縮編碼算法對場景切換雖然做了一些檢測實現(xiàn),但是并不是所有的場景切換都能正確的檢測,而且對于檢查到有場景切換的圖像也不是每次都用IDR巾貞(Instantaneous Decoding Refresh即時解碼刷新)來重新編碼。
發(fā)明內(nèi)容
鑒于現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明提供一種基于場景切換的碼率控制視頻壓縮方法,其特征在于包括如下步驟步驟一、輸入視頻流;步驟二、在對視頻流進(jìn)行編碼之前判斷單個圖像組(GOP)內(nèi)是否發(fā)生場景切換,如果發(fā)生場景切換,則執(zhí)行步驟三,否則執(zhí)行步驟四;步驟三、強制用IDR幀來編碼,重新計算該圖像組GOP內(nèi)的碼率大小,然后執(zhí)行步驟五;步驟四、對輸入的視頻流進(jìn)行正常碼率編碼,進(jìn)而轉(zhuǎn)入步驟六;步驟五、根據(jù)發(fā)生場景切換之后重新計算碼率后的圖像的每個宏塊的信息來修正圖像組內(nèi)每個宏塊的編碼QP值,然后進(jìn)行壓縮編碼;步驟六、根據(jù)編碼壓縮輸出視頻流。進(jìn)一步,本發(fā)明所述的基于場景切換的碼率控制視頻壓縮方法,其特征在于所述步驟二中判斷視頻流是否發(fā)生場景切換的過程具備包括如下步驟步驟I. I,對圖像組內(nèi)連續(xù)視頻圖像fn分別作2x2,4x4,8x8網(wǎng)格劃分,定義f k (i, j)為分割后的子圖像,η代表第η幅圖像,k代表分割大小,k取1,2,4,8,i代表網(wǎng)格行坐標(biāo),j代表網(wǎng)格列坐標(biāo);步驟I. 2利用Paul Viola提出的積分圖方法對子圖像//(/,/)提取8個haar特征,定義F/ay)表示/ %_,>)對應(yīng)子塊的特征向量,每幀圖像特征向量總長度為(2X2+4X4+8X8) X8 = 672 ;步驟I. 3若η = 1,保存化
權(quán)利要求
1.一種基于場景切換的碼率控制視頻壓縮方法,其特征在于包括如下步驟 步驟一、輸入視頻流; 步驟二、在對視頻流進(jìn)行編碼之前判斷單個圖像組(GOP)內(nèi)是否發(fā)生場景切換,如果發(fā)生場景切換,則執(zhí)行步驟三,否則執(zhí)行步驟四; 步驟三、強制用IDR幀來編碼,重新計算該圖像組GOP內(nèi)的碼率大小,然后執(zhí)行步驟五; 步驟四、對輸入的視頻流進(jìn)行正常碼率編碼,進(jìn)而轉(zhuǎn)入步驟六; 步驟五、根據(jù)發(fā)生場景切換之后重新計算碼率后的圖像的每個宏塊的信息來修正圖像組內(nèi)每個宏塊的編碼QP值,然后進(jìn)行壓縮編碼; 步驟六、根據(jù)編碼壓縮輸出視頻流。
2.根據(jù)權(quán)利要求I所述的基于場景切換的碼率控制視頻壓縮方法,其特征在于所述步驟二中判斷視頻流是否發(fā)生場景切換的過程具備包括如下步驟 步驟I. I,對圖像組內(nèi)連續(xù)視頻圖像fn分別作2x2,4x4,8x8網(wǎng)格劃分,定義
3.根據(jù)權(quán)利要求I或2所述的基于場景切換的碼率控制視頻壓縮方法,其特征在于步驟三中重新計算碼率的過程中當(dāng)前圖像組GOP的長度隨著場景切換幀的出現(xiàn)自適應(yīng)地改變,并且同時對碼率資源進(jìn)行重新分配。
4.一種基于場景切換的碼率控制視頻壓縮的裝置,其特征在于包括如下模塊 輸入模塊、用于輸入視頻流; 場景切換判斷模塊、用于在對視頻流進(jìn)行編碼之前判斷單個圖像組內(nèi)是否發(fā)生場景切換; IDR幀編碼模塊,用于對發(fā)生場景切換的圖像組強制用IDR幀來編碼,重新計算該圖像組GOP內(nèi)的碼率大?。? 正常碼率編碼模塊、用于對輸入的沒有發(fā)生場景切換的視頻流進(jìn)行正常碼率編碼; 編碼QP值修正模塊,用于根據(jù)發(fā)生場景切換之后重新計算碼率后的圖像的每個宏塊的信息來修正圖像組內(nèi)每個宏塊的編碼QP值,然后進(jìn)行壓縮編碼; 輸出模塊,用于根據(jù)編碼壓縮輸出視頻流。
全文摘要
一種基于場景切換的碼率控制視頻壓縮方法和裝置,其中,當(dāng)有視頻輸入時,由場景切換算法來計算是否有場景卻換算法發(fā)生,如果發(fā)生了場景切換,那就插入IDR幀,重新計算后面的碼率。如果沒有發(fā)生場景切換,就按正常的方法計算,并且根據(jù)前面進(jìn)行場景切換后得到的宏塊的信息對壓縮編碼計算中得到的QP值信息進(jìn)行調(diào)整,本發(fā)明算法與現(xiàn)有技術(shù)相比,不額外增加I幀的數(shù)量,可以有效地節(jié)省碼率資源,同時有效地提高場景切換幀后續(xù)各幀的編碼質(zhì)量和序列整體的編碼質(zhì)量。
文檔編號H04N7/26GK102630013SQ20121009388
公開日2012年8月8日 申請日期2012年4月1日 優(yōu)先權(quán)日2012年4月1日
發(fā)明者肖炳珠, 郝曄明, 魏東亮 申請人:北京捷成世紀(jì)科技股份有限公司