本發(fā)明涉及圖像通信領(lǐng)域中的降低視頻編碼碼率的問題,主要涉及一種高性能視頻編碼標準hevc與視頻幀率變換相結(jié)合來降低編碼碼率的方法。
背景技術(shù):
隨著高清數(shù)字電視(hdtv)和高端多媒體系統(tǒng)的普及和發(fā)展,人們對于視頻的主觀享受要求也越來越高,這就對視頻節(jié)目源的質(zhì)量提出了更高的要求,節(jié)目源的質(zhì)量越高,視頻的數(shù)據(jù)量越多,傳輸所需的帶寬也就越大。與此同時視頻編碼標準在不斷更新,經(jīng)過mpeg、h.264/avc等視頻編碼標準的發(fā)展與完善,新一代視頻編碼標準hevc也已經(jīng)發(fā)布。并且與h.264/avc相比,hevc編碼標準節(jié)約了近50%的編碼碼率,但是對于高清視頻,傳輸數(shù)據(jù)量仍然很大。因此,在有限帶寬下,如何在保證解碼視頻質(zhì)量的前提下,減少傳輸數(shù)據(jù)量,實時傳輸編碼碼流,盡可能降低傳輸帶寬的問題仍然是視頻編碼領(lǐng)域研究的熱點。
視頻壓縮過程中運動信息對于視頻重建至關(guān)重要。本發(fā)明基于幀率變換的hevc改進視頻壓縮編碼框架中,對于運動信息的獲取以及運動信息后處理作出了改進。在標準的hevc編碼框架中,并沒有對丟失幀部分的信息恢復(fù)做深入的研究,因而,找到一種高效的視頻插幀恢復(fù)方法對于提高壓縮效率有很大的意義。目前,學(xué)術(shù)界使用較為廣泛的丟失幀恢復(fù)的方法多為對解碼后低幀率視頻進行重新運動估計,來獲得插幀過程中使用的運動矢量,且也有一定效果。
幀率變換方法作為提高壓縮率的技術(shù),與標準hevc編碼相結(jié)合,可以有效降低編碼碼率。sung-heelee等人提出在編碼端降低視頻的幀率,以減少編碼幀數(shù),降低傳輸碼流數(shù)據(jù),然后在解碼端插幀恢復(fù)成原始幀率的視頻。傳統(tǒng)的幀率提升技術(shù)分為兩種:非運動補償插幀和運動補償插幀。非運動補償插幀恢復(fù)過程中不考慮原視頻中物體的運動信息,只是通過前一幀和當(dāng)前幀兩參考幀對應(yīng)位置的像素值來恢復(fù)待插幀像素值,如幀重復(fù)法和幀平均法;運動補償插幀則是考慮了場景中物體的運動,通過結(jié)合運動矢量信息和參考幀中像素值來重建待插幀,且該方法可以有效地降低幀重復(fù)法引入的抖動和幀平均法引入的模糊現(xiàn)象。choi等人專門提出了適用于幀率上轉(zhuǎn)換技術(shù)的雙向運動補償內(nèi)插(bmci),根據(jù)插幀過程中使用的運動矢量信息的來源不同,運動補償插幀可以分為兩種,一類是基于壓縮域的,該方法通過從編碼后的碼流中提取相鄰幀的運動矢量信息,用于運動補償插幀,這樣就省去了對編碼后視頻重新運動估計以獲取運動矢量的過程,大大減少了計算量和時間;第二類是基于像素域,即對解碼后的視頻重新進行運動估計,再用獲得的運動矢量信息進行插幀重建,與前者相比,第二種方法由于引進了運動估計過程,增加編碼復(fù)雜度,所以會消耗大量的時間。盡管運動補償插幀方法效果要明顯優(yōu)于非運動補償方法,但是,傳統(tǒng)的運動補償插幀方法插幀重建后的視頻會有空洞和塊效應(yīng)。
技術(shù)實現(xiàn)要素:
為解決傳統(tǒng)幀率提升過程重建幀中存在空洞和塊效應(yīng)的問題,改善視頻壓縮編碼的性能提高重建視頻質(zhì)量,本發(fā)明提出了一種結(jié)合幀率變換的高性能視頻壓縮編碼改進方法,在保證視頻質(zhì)量的前提下,降低了視頻編碼碼率,在帶寬受限的實時傳輸系統(tǒng)中具有較好的應(yīng)用前景。
本發(fā)明的基本思想是在編碼端對原視頻進行自適應(yīng)抽幀,對低幀率視頻進行編解碼,從碼流信息中提取運動矢量信息及hevc編碼過程中特殊的幀內(nèi)分塊信息,在解碼端,結(jié)合運動矢量對解碼視頻進行幀率上采恢復(fù)到原始幀率,從而達到減少編碼幀數(shù)降低編碼碼率的目的。
本發(fā)明針對hevc視頻編碼標準提出了一種結(jié)合幀率變換的改進hevc視頻壓縮編碼框架。主要包括對經(jīng)過自適應(yīng)抽幀后的低幀率視頻進行hevc標準視頻編碼,并從傳輸?shù)拇a流信息中提取相關(guān)的運動矢量信息以及相應(yīng)的幀內(nèi)分塊信息,由于hevc特殊的分塊模式,運動矢量信息是以pu塊的方式存儲在碼流信息中的,即同一個pu塊中的像素位置具有相同的運動矢量,在ippp幀間配置編碼模式下,編碼器會同時進行幀內(nèi)預(yù)測和幀間預(yù)測來獲取殘差信息,盡管大部分編碼塊的預(yù)測模式為幀間預(yù)測,但當(dāng)幀間預(yù)測獲取的殘差信息不夠準確時,編碼器將自動使用幀內(nèi)預(yù)測獲得的殘差用于編碼,因此若從碼流信息中提取的塊信息對應(yīng)的是幀內(nèi)編碼塊,則運動矢量為0,用于插幀的話就會引起空洞或者塊效應(yīng),所以,在進行插幀恢復(fù)之前,對這些幀內(nèi)塊運動信息進行估計,以確保幀中每個編碼塊都有相應(yīng)的運動矢量信息,本發(fā)明利用幀內(nèi)塊相鄰塊以及相鄰幀中對應(yīng)位置塊的運動矢量信息來對其進行填充;對獲得的運動矢量再進行平滑濾波處理,結(jié)合處理后的運動矢量信息對解碼后的視頻通過基于塊覆蓋的雙向運動補償插幀,恢復(fù)原始幀率。具體主要包括以下步驟:
(1)編碼前對原始幀率視頻進行自適應(yīng)抽幀,并設(shè)定相鄰兩幀間最大抽幀數(shù)為2,最小抽幀數(shù)為0;
(2)編碼抽幀后視頻,傳到解碼端,并從傳輸?shù)拇a流信息中提取相關(guān)的運動矢量信息以及hevc中特殊的幀內(nèi)分塊信息;
(3)通過步驟(2)中獲得的運動矢量信息對丟失幀進行雙向運動估計獲得初始運動矢量;
(4)結(jié)合碼流信息中獲取的幀內(nèi)分塊信息確定一幀中幀內(nèi)編碼塊的位置,由于幀內(nèi)編碼塊的運動信息不可用于插幀重建,因此,本發(fā)明對于幀內(nèi)塊運動矢量信息是通過該幀內(nèi)塊相鄰塊以及相鄰兩參考幀中同一位置塊的運動矢量的加權(quán)平均值來代替,得到丟失幀修正運動矢量;
(5)通過對幀內(nèi)塊運動矢量的運動估計,使得每個編碼塊都有了自己的運動矢量信息,對每個4*4的塊進行運動矢量平滑處理;
(6)結(jié)合前面得到丟失幀的最終運動矢量信息,通過基于塊覆蓋的雙向運動補償插幀方法對低幀率解碼視頻進行插幀重建;
在本發(fā)明的上述技術(shù)方案中,所述的自適應(yīng)抽幀方法判斷兩相鄰參考幀間最多可以連續(xù)丟棄兩幀,最小丟幀數(shù)為0,具體判斷一幀是否為可丟棄幀的標準為:
其中,fi-1(i,j)表示前一幀在位置(i,j)處的像素值,fi(i,j)表示當(dāng)前幀在位置(i,j)處的像素值,m和n分別表示視頻的寬度和高度,msadi則表示相鄰兩幀對應(yīng)位置像素值絕對誤差和的平均值,r表示相鄰幀的相對變化率。設(shè)定相鄰兩幀之間最大連續(xù)抽幀數(shù)閾值為2,msad閾值為35,r閾值為3。
在本發(fā)明的上述技術(shù)方案中,傳統(tǒng)的雙向運動補償插幀計算方法為:
其中ft(x,y)代表待插幀在位置(x,y)處的重建值,ft-1和ft+1分表表示前一參考幀和當(dāng)前參考幀,(vx,vy)為碼流中獲得的待插幀的前參考幀和后參考幀之間的運動矢量,
在本發(fā)明的上述技術(shù)方案中,結(jié)合幀內(nèi)分塊信息對幀內(nèi)編碼塊運動矢量進行修正的具體方法為:
其中,mvintra表示幀內(nèi)塊運動信息估計值,mvprev表示前一參考幀與該幀內(nèi)塊相同位置處的運動矢量,mvcurr表示后一參考幀中與該幀內(nèi)塊相同位置處的運動矢量,mvi表示與該幀內(nèi)塊相鄰的塊運動矢量,wi表示補償權(quán)重,n為相鄰塊的個數(shù),對于補償權(quán)重wi的設(shè)定規(guī)則是:若相鄰塊的大小與該幀內(nèi)塊相同則權(quán)重為1,否則,按照相鄰塊與幀內(nèi)塊的在hevc中的劃分深度的差值來確定,相差1,則權(quán)重為0.5,相差2,權(quán)重為0.25,以此類推。如果相鄰塊中存在幀內(nèi)塊則不算在內(nèi),若周圍全是幀內(nèi)塊,則該幀內(nèi)塊運動矢量設(shè)為0。
在本發(fā)明的上述技術(shù)方案中,所述對于修正運動矢量進行平滑濾波的方法為:
在本發(fā)明的上述技術(shù)方案中,所述的通過基于塊覆蓋的雙向運動補償插幀方法對低幀率解碼視頻進行插幀重建方法為:
其中,f(x,y)表示待插幀在位置(x,y)的塊重建值,n表示該待插值塊所覆蓋參考塊的個數(shù),
根據(jù)本發(fā)明的上述方法可以編制執(zhí)行上述基于幀率變換的高性能視頻編碼改進方法的hevc視頻編解碼器。
本發(fā)明是基于以下思路分析而完成的:
幀率變換技術(shù)作為可以提高視頻編碼效率的有效手段,可以與標準視頻編碼方法相結(jié)合,本發(fā)明中自適應(yīng)抽幀具體方法為:判斷一幀是否為可丟棄幀的依據(jù)是兩幀的平均絕對誤差值(msadi)和相對變化率(r),當(dāng)msadi和r的值均大于給定的閾值,則判斷第i幀為場景跳變幀,則對該幀進行保留,不進行抽幀處理;反之,則將該幀視為可抽棄幀,判斷完一幀后,繼續(xù)判斷相鄰下一幀是否為可抽棄幀,這樣就存在一個問題,若連續(xù)的幾幀都為可抽棄幀,則由于抽棄幀數(shù)過多,對于視頻重建時獲取的運動信息準確性有較大影響,所以視頻重建質(zhì)量不佳,因此,為了保證插幀重建視頻的質(zhì)量,本發(fā)明對于相鄰幀之間的最大抽幀數(shù)也設(shè)置了一個閾值。通過實驗比較,當(dāng)設(shè)定相鄰兩幀之間最大連續(xù)抽幀數(shù)閾值為2幀,msad閾值為35,r閾值為3時,效果較好。
自適應(yīng)抽幀后的低幀率視頻通過hevc編碼框架進行編碼,從編碼后的碼流中獲取運動矢量信息,用來初步估算丟失幀的運動矢量,并對該初始運動矢量進行修正,用于雙向運動補償插幀,以提高插幀恢復(fù)后視頻的質(zhì)量。
由于hevc特殊的分塊模式,運動矢量信息是以pu塊的方式存儲在碼流信息中的,即同一個pu塊中的像素位置具有相同的運動矢量,在ippp幀間配置編碼模式下,編碼器會同時進行幀內(nèi)預(yù)測和幀間預(yù)測來獲取殘差信息,盡管大部分編碼塊的預(yù)測模式為幀間預(yù)測,但當(dāng)幀間預(yù)測獲取的殘差信息不夠準確時,編碼器將自動使用幀內(nèi)預(yù)測獲得的殘差用于編碼,因此若從碼流信息中提取的塊信息對應(yīng)的是幀內(nèi)編碼塊,則運動矢量為0,用于插幀的話就會引起空洞或者塊效應(yīng),所以,在進行插幀恢復(fù)之前,對這些幀內(nèi)塊運動信息進行估計。視頻中不僅序列幀之間存在時域相關(guān)性,每一幀內(nèi)部還存在空域相關(guān)性,所以插幀過程中待插值塊的相鄰塊的運動信息同樣可以作為參考,因此對于幀內(nèi)編碼塊,借用待插塊空域相鄰塊以及參考幀中同一位置塊的運動信息來估算其運動矢量。
經(jīng)過對幀內(nèi)塊運動矢量的估計,每個編碼塊都有了自己的運動信息,在對待插幀中每個4*4塊進行插值恢復(fù)之前,取該塊相鄰八個塊與自身運動矢量的平均值作為插幀恢復(fù)過程中的最終運動矢量,如果待插值的塊位于邊界區(qū)域,則取其邊界內(nèi)參考塊的運動矢量進行參考,比如若此時我們需要插值圖像右下角的塊,則在參考幀中取其對應(yīng)位置塊,其左邊塊、上邊塊以及左上方三個塊進行參考。其他角落的邊界塊插值以此類推。
通過基于塊覆蓋的雙向運動補償插幀方法對低幀率解碼視頻進行插幀重建實現(xiàn)過程如下:由于hevc中的大部分信息如運動矢量都是以不同劃分塊的格式存儲和傳輸?shù)?,在視頻的重建過程中也是以塊的像素值重建的方式完成的,所以在雙向插幀的基礎(chǔ)上,充分考慮視頻幀中空域上的相關(guān)性,對待插值塊分區(qū)域進行插值,對不同區(qū)域內(nèi)的像素值采用不同的方法進行插值,即丟失幀中的一個待插值塊覆蓋著含有不同運動信息的參考塊,當(dāng)這種情況出現(xiàn)時,本發(fā)明使用改進的基于塊覆蓋的雙向運動補償插幀方法。
與標準hevc視頻編碼方法相比,本發(fā)明方法首先采用自適應(yīng)抽幀方法處理待編碼序列,然后從碼流信息中提取相關(guān)的運動矢量信息,用以估算丟失幀的運動矢量,并結(jié)合碼流中的幀內(nèi)分塊信息對丟失幀運動矢量進行修正,再通過對每個4*4重建塊的運動矢量進行平滑濾波得到最終用于視頻重建的運動矢量,最后通過給予塊覆蓋的雙向運動補償插幀方法進行視頻重建。通過本發(fā)明方法,在中低碼率段,保證重建視頻質(zhì)量的前提下,不僅可以降低碼流數(shù)據(jù)量,節(jié)省傳輸帶寬,而且由于省去了對丟失幀的重新運動估計過程大大提高了編碼時間效率。
附圖說明
圖1為本發(fā)明的基于幀率變換的高性能視頻編碼改進方法的流程圖。
圖2為本發(fā)明中自適應(yīng)抽幀示意圖。
圖3本發(fā)明中雙向運動補償插幀方法示意圖。
圖4為本發(fā)明中對初始運動矢量平滑處理方法示意圖。
圖5為本發(fā)明中基于塊覆蓋的運動補償插值示意圖。
圖6~圖9為本發(fā)明算法與hm16.0標準編碼方法率失真曲線對比圖,其中圖6~圖9分別為序列partyscene、fourpeople、parkscene、peopleonstreet在qp為22、27、32、37、42、44、46、48、50的情況下的率失真曲線的對比圖。
具體實施方式
下面結(jié)合實例對本發(fā)明作進一步的詳細說明,有必要指出的是,以下的實例只用于對本發(fā)明做進一步的說明,不能理解為對本發(fā)明保護范圍的限制,所屬領(lǐng)域技術(shù)熟悉人員根據(jù)上述發(fā)明內(nèi)容,對本發(fā)明做出一些非本質(zhì)的改進和調(diào)整進行的具體實施,應(yīng)仍屬于本發(fā)明的保護范圍。
本發(fā)明的基于幀率變換的高性能視頻改進編碼算法,與hevc標準測試模型hm16.0的編碼方法比較過程如下:
1、打開標準hm16.0測試模型,配置文件為lowdelay_p_main,在量化參數(shù)分別取22、27、32、37、42、46、48、50的情況下對標準視頻測試序列進行編解碼,記錄標準hevc視頻編碼時的碼率及重建視頻psnr;
2、本發(fā)明方法將與上述1中的hevc視頻編碼標準的參考軟件hm16.0的碼率及重建視頻psnr作比較。同時打開本發(fā)明和標準方法的程序,設(shè)置好相同的配置文件,在編碼前通過自適應(yīng)抽幀方法對視頻序列進行幀率下采,標準算法對原始幀率視頻序列進行編解碼,本發(fā)明算法對幀率下采后的低幀率視頻進行編解碼,并在碼流信息中提取相關(guān)的運動信息和幀內(nèi)分塊信息。對三種視頻編碼性能:峰值信噪比(psnr)、碼率、編碼時間(其中psnr體現(xiàn)重建視頻的客觀質(zhì)量,碼率體現(xiàn)數(shù)據(jù)傳輸量,編碼時間體現(xiàn)視頻編碼處理的時間效率)進行對比分析,比較性能的差距用以下兩個指標進行評價:
其中,△碼率表示本發(fā)明算法和標準算法的碼率差值相對于標準碼率的百分比,即降低碼率的百分率,△t則表示本發(fā)明算法與標準編解碼時間之差相對于標準編碼時間的百分比
3、編碼對象為標準的hevc測試視頻,它們的名稱、分辨率和幀率分別為:partyscene(832x480,50幀/秒)、fourpeople(1280x720,60幀/秒)、parkscene(1920x1080,24幀/秒)、peopleonstreet(2560x1600,30幀/秒)。
4、利用hm16.0標準方法對原始幀率視頻序列在hevc方式下進行編碼;
5、利用本發(fā)明方法對同一序列的低幀率視頻進行編碼,并從碼流中提取相關(guān)的運動矢量信息以及幀內(nèi)分塊信息;
6、利用本發(fā)明方法對解碼后的低幀率視頻進行幀率上采;
7、分別記錄兩個方法編解碼過程中的碼率、psnr、時間等相關(guān)實驗數(shù)據(jù);其中在重建視頻客觀質(zhì)量(psnr)接近一致的情況下本發(fā)明方法相對于標準方法節(jié)省碼率如表1,本發(fā)明與標準算法在時間效率方面的對比如表2。統(tǒng)計結(jié)果顯示,在中低碼率段,本發(fā)明方法與hevc標準方法相比在保證重建視頻psnr接近一致的前提下節(jié)省碼率約15%;而在編碼時間效率方面也節(jié)省時間近40%。
表1本發(fā)明算法與hm16.0標準算法之間編碼碼率的比較
表2本發(fā)明算法與hm16.0標準算法之間編解碼時間效率的比較