袁嘉晟,方志軍,葉金財
(江西財經(jīng)大學(xué) 信息管理學(xué)院,江西 南昌 330013)
為適應(yīng)復(fù)雜多變的異構(gòu)環(huán)境,視頻編碼引入了可分級編碼的概念,可分級視頻編碼(Scalable Video Coding,SVC)可以使視頻流較好地適應(yīng)各種不同的網(wǎng)絡(luò)環(huán)境和用戶終端,并具有一定的容錯性和可分級性。在編碼后的視頻流中,紋理信息占據(jù)了大部分比特,但是在低碼率下,運(yùn)動矢量占據(jù)了大部分的碼流,如在可分級視頻編碼中,運(yùn)動矢量占據(jù)了基本層碼流中的絕大部分[1-2]。因此在可分級視頻編碼中,對運(yùn)動矢量的可分級編碼是一個重要要求,特別是在低碼率或者小圖像中。針對這一問題,筆者提出了一種基于運(yùn)動矢量的視頻可分級編碼思想。
視頻編碼是數(shù)字視頻處理的重要應(yīng)用,在許多通信服務(wù)中起著至關(guān)重要的作用。視頻序列在時間維上有很強(qiáng)的相關(guān)性,即存在著大量冗余,利用運(yùn)動估計和運(yùn)動補(bǔ)償技術(shù)可以有效地去除視頻幀間的冗余,實(shí)現(xiàn)編碼壓縮。運(yùn)動估計是視頻處理系統(tǒng)的一個重要的組成部分,已廣泛運(yùn)用于視頻壓縮的標(biāo)準(zhǔn)中。在運(yùn)動估計中,模擬化運(yùn)動的最簡單形式是用一個常量位移表示,這個常量位移就是運(yùn)動矢量(MV)。 圖 1是測試視頻序列“foreman”中第1幀到第2幀的運(yùn)動矢量表示圖。
計算出的運(yùn)動矢量即可用于運(yùn)動估計和運(yùn)動補(bǔ)償,圖2是原視頻序列第1幀和第2幀的直接差值效果圖,圖3是用加入運(yùn)動矢量的視頻第1幀,來預(yù)測第2幀,并將預(yù)測出的第2幀與原視頻序列第2幀進(jìn)行差值的效果。從圖2和圖3的比較中可以看出,若不加運(yùn)動矢量,第1幀和第2幀的差值是明顯的,兩幀之間的變化部分可以清楚得看到;若加入運(yùn)動矢量預(yù)測下一幀,預(yù)測效果明顯變好,預(yù)測出的幀圖像與原序列幀相差不大,其中可以根據(jù)搜索匹配塊和精度的大小調(diào)節(jié)預(yù)測精度。
圖1 第1幀到第2幀的運(yùn)動矢量表示圖
圖2 原序列第1幀圖像與第2幀直接差值
圖3 加入運(yùn)動矢量預(yù)測出的幀圖像和原序列第2幀圖像差值
可分級性(Scalable)是指通過僅解碼一部分壓縮的比特流物理地恢復(fù)有意義的圖像或視頻信息的能力[3]。即視頻圖像經(jīng)過一次編碼后,其壓縮視頻流的碼率可以根據(jù)網(wǎng)絡(luò)的變化而調(diào)節(jié),生成不同碼率的視頻流,因此在碼率降低后,視頻流也可以解碼后正常播放。因此可分級編碼一般通過生成不同碼率的視頻流來實(shí)現(xiàn),采取的方式有PSNR(質(zhì)量)可分級、空間可分級、時間可分級或它們的組合??煞旨壘幋a技術(shù)將視頻編碼成N層可分級的比特流,第1層為基本層,其他層為增強(qiáng)層,第1層提供了能夠解碼重建最基本圖像視頻的比特流,對其他層的解碼能提高重建圖像視頻的質(zhì)量,直至最佳效果。目前視頻編碼中常用的可分級技術(shù)主要有質(zhì)量可分級[4-6]、空間可分級[7]、時間可分級[8]等。
質(zhì)量可分級是利用越來越精細(xì)的量化步長產(chǎn)生的圖像信息的損失來對每幀圖像進(jìn)行分層。其基本思想是通過對原始圖像和第1層重建圖像之間的量化差值進(jìn)行編碼以形成增強(qiáng)層。
空間可分級是從改變單幀圖像分辨力的角度來對視頻進(jìn)行分級,形成不同分層。其基本思想是通過解碼第1層,形成一個低分辨力的圖像版本,隨后解碼第2層,將第1層解碼的圖像內(nèi)插到第2層解碼圖像中,隨后以相同的方式解碼后面的增強(qiáng)層。
時間可分級是從改變視頻幀序列的幀率的角度對視頻進(jìn)行分級,形成不同分層。其基本思想是先將視頻幀進(jìn)行采樣分割,基本層根據(jù)本身的數(shù)據(jù)編碼以提供基本的幀率,增強(qiáng)層通過對基本層或增強(qiáng)層的預(yù)測編碼,最后產(chǎn)生原始視頻的全時間分辨力。
因?yàn)檫\(yùn)動矢量是由兩幀幀間的運(yùn)動估計來表示,所以運(yùn)動矢量具有時間可分級性,但是不經(jīng)過編碼的運(yùn)動矢量并不具有質(zhì)量可分級性和空間可分級性。在目前的大多數(shù)視頻壓縮編碼標(biāo)準(zhǔn)里,如H.263,MPEG-4等,運(yùn)動矢量的編碼使用的是預(yù)測差分編碼,即1個宏塊的運(yùn)動矢量與其空間相臨的3個宏塊的運(yùn)動矢量的中值作差,然后對差值進(jìn)行編碼;而在MC-EZBC[9]中,提出了一種基于上下文的自適應(yīng)二進(jìn)制算數(shù)編碼對運(yùn)動矢量進(jìn)行編碼,使其具有質(zhì)量可分級和空間可分級。
目前的這些運(yùn)動矢量編碼方法本質(zhì)上是對塊匹配后計算出的運(yùn)動矢量比特流進(jìn)行熵編碼,并能夠?qū)幋a后的比特流進(jìn)行截取,達(dá)到相應(yīng)的可分級性。然而這些運(yùn)動矢量編碼方法并沒有對運(yùn)動矢量本身進(jìn)行分析,筆者針對這種情況,提出一種對運(yùn)動矢量本身進(jìn)行處理的的思路。
前面提到的運(yùn)動矢量編碼方法雖然具有可分級性,但是這些編碼方法都是編碼所有的運(yùn)動矢量,而當(dāng)前視頻編碼標(biāo)準(zhǔn)中的運(yùn)動估計中都是分塊進(jìn)行匹配,因此運(yùn)動矢量本身存在著大量冗余,例如:相鄰兩幀塊運(yùn)動可能并不劇烈或者沒有運(yùn)動,其運(yùn)動矢量的幅值不大或?yàn)榱恪T囼?yàn)發(fā)現(xiàn),在運(yùn)動矢量比特流中,有一些運(yùn)動矢量對其后的運(yùn)動估計和運(yùn)動補(bǔ)償預(yù)測的影響不大,但是這些運(yùn)動矢量所占用的比特流還是一定的,因此可以將這些運(yùn)動矢量的比特流進(jìn)行截取以達(dá)到可分級的效果。
對運(yùn)動矢量進(jìn)行分析判斷,先設(shè)定閾值T,將運(yùn)動矢量的模與閾值比較,若運(yùn)動矢量的模值大于閾值,則將該運(yùn)動矢量保留,反之則去除。其判斷依據(jù)為
兩幀之間的運(yùn)動矢量存在一個最大值,因此T可以先取最大值,此時運(yùn)動矢量比特流為0,隨后逐漸減小T,可以逐步得到部分的運(yùn)動矢量比特流,直到完全獲取運(yùn)動矢量比特流,最后再對截取出的運(yùn)動矢量比特流進(jìn)行相應(yīng)的運(yùn)動矢量編碼。圖4是閾值為5時測試視頻序列foreman第1幀到第2幀截取后的運(yùn)動矢量表示圖。比較圖1可見,一些模值相對小的運(yùn)動矢量被去除了,如背景圖案部分,而保留了模值較大即塊運(yùn)動較為劇烈的運(yùn)動矢量,如臉部部分。
圖4 閾值為5時,截取后第1幀到第2幀的運(yùn)動矢量表示圖
為了評估文中提出的思想,使用了stefan和foreman視頻序列進(jìn)行測試。其視頻序列為CIF格式,幀率30 f/s(幀/秒),分塊大小8,搜索范圍4,精度為半像素。對視頻的前2幀進(jìn)行分析,將第1幀設(shè)為參考幀,第2幀設(shè)為預(yù)測幀,隨后對計算出的運(yùn)動矢量由閾值進(jìn)行截取,得到運(yùn)動矢量的比特流,計算其模值大??;然后將截取后的運(yùn)動矢量加入到參考幀中,以預(yù)測下一幀;將預(yù)測出的幀圖像與原序列第2幀作差值,算出方差和峰值信噪比。圖5為foreman視頻序列第1幀,圖6為foreman視頻序列第2幀,圖7為在設(shè)定閾值為5時,加入截取后運(yùn)動矢量比特流的foreman視頻序列第1幀預(yù)測出的幀圖像,圖8為預(yù)測出的幀圖像(閾值5)與原序列第2幀圖像的差值圖像。將圖8與第2節(jié)介紹的加入全運(yùn)動矢量比特流預(yù)測出的幀圖像作比較,可以看到差別不是很大;但在一些運(yùn)動變化較小的區(qū)域,差值的效果變得明顯,如背景圖案部分,這是因?yàn)榻?jīng)過閾值判斷后,去除了模值小的運(yùn)動矢量。
圖5 foreman序列第1幀
圖6 foreman序列第2幀
圖7 閾值為5時的預(yù)測幀
圖8 預(yù)測出的第2幀(閾值5)與原序列第2幀的差值圖
針對foreman視頻序列,表1顯示的是在不同閾值下,第1幀加入運(yùn)動矢量預(yù)測出的第2幀與原序列第2幀的方差(SE)和峰值信噪比(PSNR)值及待編碼的運(yùn)動矢量比特數(shù)。表中閾值為0時,表示運(yùn)動矢量全保留,此時SE最小,PSNR和比特數(shù)最大;其次因?yàn)橄噜弮蓭g的運(yùn)動矢量模值必存在一個最大值,在閾值達(dá)到這個最大值時,運(yùn)動矢量將全被去除,此時相當(dāng)于第1幀不預(yù)測,而差值正是兩幀之間相減,此時SE最大,PSNR最小,比特數(shù)為0。
圖9為stefan視頻序列第1幀,圖10為stefan視頻序列第2幀,圖11為在設(shè)定閾值為5時,加入截取后運(yùn)動矢量比特流的stefan視頻序列第1幀預(yù)測出的幀圖像,圖12為預(yù)測出的幀圖像(閾值5)與原序列第2幀圖像的差值圖像。
針對stefan視頻序列,表2顯示的是在不同閾值下,第1幀加入運(yùn)動矢量預(yù)測出的第2幀與原序列第2幀的方差和峰值信噪比值及待編碼的運(yùn)動矢量比特數(shù)。
表1 foreman視頻序列在不同閾值下的SE和PSNR和比特數(shù)
圖9 stefan序列第1幀
圖10 stefan序列第2幀
圖11 閾值為5時的預(yù)測幀
圖12 預(yù)測出的第2幀(閾值5)與原序列第2幀的差值圖
表2 stefan視頻序列在不同閾值下的SE和PSNR和比特數(shù)
從兩個實(shí)驗(yàn)結(jié)果可見,隨著閾值的增大,運(yùn)動矢量的比特數(shù)也隨之減少,且減少的幅度較大。這樣可以對運(yùn)動矢量的比特流在任意點(diǎn)截取,將截取的運(yùn)動矢量加入到參考幀中,以預(yù)測下一幀。這樣做可以在預(yù)測時先傳輸一部分運(yùn)動矢量,其后漸進(jìn)傳輸剩下的運(yùn)動矢量比特流,以逐步提高預(yù)測后的視頻幀圖像質(zhì)量,達(dá)到質(zhì)量可分級的目的。
筆者提出了一種基于運(yùn)動矢量可分級的視頻編碼方法,對運(yùn)動矢量模進(jìn)行判斷,截取其比特流,以達(dá)到質(zhì)量可分級,并通過實(shí)驗(yàn)分析,說明了該方法的可行性。但該方法的進(jìn)一步應(yīng)用還有諸多問題需要解決,如截取運(yùn)動矢量比特流的方式、與熵編碼的結(jié)合方式等,這也是下一步研究的方向。
[1]LI Weiping.Overview of fine granularity scalability in MPEG-4 video standard[J].IEEE Trans.Circuits and Systems,2001,11(3):301-317.
[2]哈力旦·A,方勇.一種改進(jìn)的運(yùn)動矢量編碼方法[J].西安電子科技大學(xué)學(xué)報:自然科學(xué)版,2005,32(4):639-642.
[3]WANG Y,OSTERMANN J,ZHANG YQ.視頻處理與通信[M].候正信,譯.北京:電子工業(yè)出版社,2003.
[4]朱瑩,郁梅,陳懇,等.H.264標(biāo)準(zhǔn)的新擴(kuò)展——可伸縮性編碼及應(yīng)用[J].電視技術(shù),2006(4):11-13.
[5]韓濤,王群生,楊春玲.精細(xì)可伸縮性視頻編碼的研究[J].電視技術(shù),2007,31(9):12-14.
[6]楊雪婷,林其偉.基于H.264的精細(xì)可分級編碼結(jié)構(gòu)改進(jìn)方案[J].電視技術(shù),2009,33(S1)∶36-37.
[7]馮璐,鮑衛(wèi)兵,劉峰.基于H.264的空間SVC快速模式選擇算法[J].電視技術(shù),2007,31(12):20-22.
[8]閻金,全子一,門愛東.基于H.264的時間可分級編碼結(jié)構(gòu)的研究[J].電視技術(shù),2006(1):16-18.
[9]CHEN Peisong.Fully scalable subband/wavelet coding[D].Troy,NY USA:Rensselaer Polytechnic Institute,2003.