周 熙,于鴻洋,張 萍
(電子科技大學(xué) 電子工程學(xué)院,四川 成都 610054)
為了適應(yīng)網(wǎng)絡(luò)的異構(gòu),JVT在原來(lái)H.264/AVC的基礎(chǔ)上,提出了可分級(jí)的視頻編碼擴(kuò)展H.264/SVC[1-3]。在SVC中,時(shí)間可分級(jí)特性是其中很重要的一部分。在SVC草案設(shè)計(jì)初始的時(shí)候,是用運(yùn)動(dòng)補(bǔ)償時(shí)域?yàn)V波(MCTF)的方法來(lái)實(shí)現(xiàn)時(shí)域可分級(jí)特性。僅管MCTF有著開(kāi)環(huán)結(jié)構(gòu)不會(huì)引起誤差漂移等一些優(yōu)點(diǎn),但是MCTF的編碼復(fù)雜性和效率改進(jìn)的有限性使得JVT放棄了MCTF,而改用分級(jí)B幀來(lái)實(shí)現(xiàn)時(shí)域可分級(jí)[4-5]。
分級(jí)B幀的預(yù)測(cè)結(jié)構(gòu)如圖1所示,圖中,每一幀下方的數(shù)字表示該幀的編碼順序,幀號(hào)下面的TN表示該幀所在的分層。
圖1中展示了兩種不同的分級(jí)B幀預(yù)測(cè)結(jié)構(gòu):Dyadic預(yù)測(cè)和Non-dyadic預(yù)測(cè)。圖1a中是傳統(tǒng)的分級(jí)B幀預(yù)測(cè),首先,T0層進(jìn)行前向預(yù)測(cè),形成關(guān)鍵幀(圖中以黑色顯示),然后T0層之間進(jìn)行雙向預(yù)測(cè),形成T1層,T1和T0層之間再進(jìn)行雙向預(yù)測(cè),形成T2層,如此下去,直到構(gòu)成一個(gè)完整的GoP。當(dāng)需要提取一定的時(shí)間分辨力時(shí)只需要將相應(yīng)的層及以下所有的層提取出來(lái)就可以。以圖1a為例,假設(shè)序列的原始幀率為30 f/s(幀/秒),那么提取15 f/s時(shí),只需要把T2層和以下所有的層提取出來(lái);提取7.5 f/s時(shí),只需提取出T1和T0層。由圖1a可以看出,Dyadic預(yù)測(cè)的幀數(shù)是以2為底的指數(shù)增長(zhǎng)的,從小到大依次為1,2,4和8,與每種時(shí)間分級(jí)的幀數(shù)相對(duì)應(yīng),所以Dyadic預(yù)測(cè)結(jié)構(gòu)下GoP大小(SGop)也必須為2的指數(shù),此時(shí)可以提取出lb SGop個(gè)時(shí)間分級(jí)。
圖1b的Non-dyadic預(yù)測(cè)結(jié)構(gòu)有些許不同:預(yù)測(cè)的幀數(shù)不再是成指數(shù)增長(zhǎng)的,從低到高依次為1,3,6和12,因此,所需的GoP大小也不必是2的指數(shù)。這種結(jié)構(gòu)下,GoP大小的限制被放寬。Dyadic和Non-dyadic預(yù)測(cè)方式都符合H.264/AVC規(guī)范。
在以GoP為單元進(jìn)行編碼的H.264/SVC模型中,每一層的GoP的大小是固定的,但是往往不同的視頻內(nèi)容可能有著各自最合適的GoP大小?;诖?,筆者提出了AGS改進(jìn)算法。
圖1 分級(jí)B幀的預(yù)測(cè)結(jié)構(gòu)
同一段視頻序列用不同的GoP大小進(jìn)行編碼的效率是不相同的。具體來(lái)說(shuō),視頻內(nèi)容變化劇烈的圖像GoP應(yīng)該越小越好,這樣將要編碼的序列限制在一個(gè)小的時(shí)間段內(nèi),圖像之間的相關(guān)性才不會(huì)明顯減弱,編碼效率也就越高。反之,如果視頻內(nèi)容變化平緩,那GoP應(yīng)該越大越好,就可以充分利用圖像間的相關(guān)性。這就是AGS的出發(fā)點(diǎn)。AGS曾被用在SVC的MCTF中,但現(xiàn)在MCTF已被移除。而在分級(jí)B幀上做AGS研究的還比較少。
AGS里每個(gè)GoP傳統(tǒng)的預(yù)測(cè)結(jié)構(gòu)是Dyadic預(yù)測(cè),因此,GoP大小被限制為2N,N非負(fù)整數(shù)。在這種結(jié)構(gòu)下,每種GoP尺寸有不同的時(shí)間分級(jí),整個(gè)序列的時(shí)間分級(jí)的級(jí)數(shù)由最小GoP(SminGop)來(lái)決定,即時(shí)間分級(jí)的級(jí)數(shù)由為lb SminGop+1?,F(xiàn)有的很多關(guān)于AGS的研究基本上都是基于這種結(jié)構(gòu)[6-9],這種結(jié)構(gòu)有一個(gè)缺點(diǎn),就是沒(méi)有充分利用到幀間的相關(guān)性。舉個(gè)例子來(lái)說(shuō),假設(shè)有一個(gè)編碼序列,設(shè)定SminGop為4,第1幀到第14幀之間相關(guān)性很強(qiáng),適于編碼到一個(gè)GoP,而第15幀以后適于編碼到另一個(gè)GoP,那么用Dyadic結(jié)構(gòu)預(yù)測(cè)時(shí),自適應(yīng)結(jié)果就很可能是8 SminGop+4 SminGop+4 SminGop,如圖2a所示。
Non-dyadic預(yù)測(cè)結(jié)構(gòu)比Dyadic結(jié)構(gòu)在GoP上有更大的彈性,那么Dyadic結(jié)構(gòu)下GoP尺寸滿(mǎn)足式(1)所示的關(guān)系
而Non-dyadic結(jié)構(gòu)滿(mǎn)足式(2)所示的關(guān)系。從該式可以看出,Non-dyadic結(jié)構(gòu)的關(guān)系是線(xiàn)性的。
圖2 AGS的預(yù)測(cè)結(jié)構(gòu)
因此,采用Non-dyadic預(yù)測(cè)結(jié)構(gòu),就會(huì)更充分的利用幀間相關(guān)性,結(jié)果就可能變?yōu)?2 SminGop+4 SminGop。如圖2b所示。因此,Non-dyadic相比Dyadic可以具有更好的編碼性能。另外,一些AGS的研究中引入了場(chǎng)景切換檢測(cè)(Scene Change Detection,SCD)[10],即 GoP 在場(chǎng)景切換處被截?cái)?,以提高編碼效率,但是GoP截?cái)嗪髸?huì)導(dǎo)致時(shí)域可分級(jí)性失效,從而不能進(jìn)行時(shí)間可分級(jí),因此,本文并沒(méi)有采用這種方法。
決定了所采用的GoP預(yù)測(cè)結(jié)構(gòu),下一步就是如何確定當(dāng)前的最佳的GoP大小。在文獻(xiàn)[8]中,每種GoP都被計(jì)算一次,然后從中選擇最佳編碼效率的GoP作為最后的大小。這種方法盡管可以獲得很高的PSNR,但是復(fù)雜度大大增加。因此,找到一個(gè)復(fù)雜度低又不失編碼效率的方法成為研究的重點(diǎn)。借鑒于視頻邊緣檢測(cè)的塊直方圖差(Bock Histogram Difference,BH)的概念[11],筆者找到了一個(gè)編碼效率較高而復(fù)雜度低的AGS算法。
BH這個(gè)概念最先被用在視頻索引與存儲(chǔ)的場(chǎng)景切換檢測(cè)算法上,BH在場(chǎng)景切換檢測(cè)中,被用做檢測(cè)場(chǎng)景切換的因子。BH是基于圖像的直方圖絕對(duì)誤差和(Sum of Absolute Difference,SAD),SAD 的計(jì)算公式為
式中:SADhist表示直方圖絕對(duì)誤差和,l表示直方圖等級(jí),n表示第n幀,Hn(l)表示第n幀的第l級(jí)的直方圖值。計(jì)算Hn(l)的時(shí)候,可以基于整個(gè)圖像來(lái)統(tǒng)計(jì),也可以基于部分圖像來(lái)統(tǒng)計(jì)?;谡麄€(gè)圖像來(lái)統(tǒng)計(jì)時(shí),被稱(chēng)為DOH(Difference of Histogram),當(dāng)基于塊(此處的塊不一定和H.264編碼時(shí)的宏塊大小相同)來(lái)統(tǒng)計(jì)時(shí),就是要討論的BH。BH計(jì)算公式為
圖3 測(cè)試序列的BH圖(截圖)
圖3中,Akiyo值較小,這是由于Akiyo序列的變化相對(duì)較平緩;Bus和Bus2序列的變化劇烈些,所以BH值較大;而Coastguard序列的BH值在Akiyo和Bus之間。Coastguard序列在第23~25幀之間有一個(gè)峰,這是因?yàn)檫@之間突然有大部分背景出現(xiàn),所以造成一個(gè)峰值。圖4顯示了背景出現(xiàn)的過(guò)程。利用BH,就可以度量圖像序列的變化程度。這種度量很適合用在AGS里。
基于BH,可以量化一個(gè)序列內(nèi)圖像的變化程度,稱(chēng)這個(gè)變化程度為視頻變化因子 (Video Change Factor,VCF)。長(zhǎng)度為N的序列的VCF計(jì)算如下
用VCF(N)和指定的閾值作比較,就可以用來(lái)判斷最合適的SGoP
圖4 Coastguard第22~25幀圖像
式中:T表示閾值。?」運(yùn)算表示向下取整。但是,直接使用式(7)會(huì)處理不了一種特別的情況,如在將要編碼的圖像序列中,第5幀和第6幀之間有一個(gè)場(chǎng)景切換(就是從一個(gè)場(chǎng)景切換到另一個(gè)場(chǎng)景),而序列的第1~4幀之間的SCF因子變化很小,以至于可以忽略,在這種情況下,場(chǎng)景切換時(shí)帶來(lái)的BH值的突變很可能被抵消掉,用式(7)作判決時(shí),場(chǎng)景切換的兩幀圖像將很可能會(huì)被編碼到同一個(gè)GoP中。而正常情況下,場(chǎng)景切換處的兩幀應(yīng)該分屬于不同的GoP。鑒于此,對(duì)式(7)的GoP判決方式進(jìn)行了如式(8)的改進(jìn)。
式中:α表示另一個(gè)閾值。式中最后一個(gè)條件表示,如果下一幀圖像的BH明顯大于之前圖像的BH平均值時(shí),那么GoP應(yīng)該從此處截?cái)?,這樣就可以將場(chǎng)景切換的影響減少到最小。AGS的整個(gè)算法的流程圖如圖5所示。
圖5 AGS算法的流程圖
圖6 AGS實(shí)驗(yàn)結(jié)果
將6種編碼方式做了對(duì)比實(shí)驗(yàn):GoP 為 2,4,8 和 16的常規(guī)SVC編碼、使用Dyadic AGS的SVC編碼和使用Non-Dyadic AGS的SVC編碼。AGS實(shí)驗(yàn)參數(shù)如下:直方圖采用64個(gè)等級(jí),塊的大小為16像素,AGS采用的最小GoP為 4,閾值 T為 155,閾值 α為 3。測(cè)試是基于JSVM9.18 模型。 每種編碼方式分別用 20,22,24,…,50,共16個(gè)量化參數(shù)QP進(jìn)行編碼。
所有的測(cè)試序列都被經(jīng)過(guò)了時(shí)間的下采樣。這是因?yàn)樵夹蛄械淖兓炔皇呛艽?,?jīng)過(guò)下采樣后,會(huì)增加VCF,從而可以測(cè)試GoP更小的情況。實(shí)驗(yàn)分別對(duì)Akiyo,Bus,Silent,F(xiàn)oreman,Akiyo+Bus和 Silent+Foreman 進(jìn)行了測(cè)試。實(shí)驗(yàn)結(jié)果顯示,Akiyo和Bus序列的改進(jìn)不是很大,基至略微下降,這是因?yàn)檫@兩個(gè)序列內(nèi)容的變化相對(duì)穩(wěn)定,所以最佳GoP會(huì)也不會(huì)有大的改變,AGS沒(méi)有起到過(guò)多的作用。Bus測(cè)試序列的結(jié)果如圖6a所示。而Silent和Foreman序列的變化則相對(duì)劇烈些,AGS從而起到了一定的效果,F(xiàn)oreman的結(jié)果如圖6b所示,從圖中可以看出,相比較最佳的常規(guī)SVC編碼(此時(shí)GoP為8)而言,平均約有0.06 dB的改善。序列Akiyo+Bus和Silent+Foreman是將兩個(gè)不同序列聯(lián)接起來(lái),這樣AGS更能夠起到自適應(yīng)的作用,Silent+Foreman的實(shí)驗(yàn)結(jié)果如圖6c所示,采用AGS后,相比較最佳的常規(guī)SVC編碼(此時(shí)SGoP為16)而言,平均約有0.13 dB的改善。圖6也顯示出Non-dyadic相比Dyadic結(jié)構(gòu)也有一定程度的改進(jìn)。
本文主要討論了對(duì)H.264/SVC編碼算法的改進(jìn),提出了在分級(jí)B幀的基礎(chǔ)上應(yīng)用Non-dyadic AGS來(lái)改進(jìn)編碼效率的算法,算法利用Non-dyadic預(yù)測(cè)結(jié)構(gòu)來(lái)做分級(jí)預(yù)測(cè),場(chǎng)景切換的BH概念來(lái)計(jì)算最佳的GoP大小。實(shí)驗(yàn)結(jié)果表明,Non-dyadic AGS對(duì)于那些內(nèi)容變化不穩(wěn)定的視頻序列能夠發(fā)揮不錯(cuò)的效用,能進(jìn)一步地提高編碼效率。
[1]ITU-T and ISO/IEC JTC 1.ITU-T Recommendation H.264 and ISO/IEC 14496-10 (MPEG-4 AVC).Advanced Video Coding for Generic Audio/Visual Services[S].Version 9.[S.l.]:ITU-T and ISO/IEC JTC 1,2009.
[2]WIEGAND T,SULLIVAN G J,BJ?NTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):560-576.
[3]SCHWARZ H,MARPE D,WIEGAND T.Overview of the scalable video coding extension of the H.264/AVC standard[J].IEEE Trans.Circuits and Systems for Video Technology,2007,17 (9):1103-1120.
[4]SCHWARZ H,MARPE D,WIEGAND T.Analysis of hierarchical B pictures and MCTF[C]//Proc.2006 IEEE International Conference on Multimedia and Expo.[S.l.]:IEEE Press,2006:1929-1932.
[5]SCHWARZ H, MARPE D,WIEGAND T.Comparison of MCTF and closed-loop hierarchical B pictures.JVT-P059[R].[S.l.]:Joint Video Team,2005.
[6]YOKOYAMA Y.Adaptive GoP structure selection for real-time MPEG-2 video encoding [C]//Proc.2000 IEEE International Conference on Image Processing:Volume 2.[S.l.]:IEEE Press,2000:832-835.
[7]PARK G H,PARK M W,JEONG S,et al.Adaptive GoP structure for SVC.M11563[R].[S.l.]:MPEG Standards Contribution,2005.
[8]PARK G H,PARK M W,JEONG S,et al.Improve SVC coding efficiency by adaptive GoP structure(SVC CE2).JVT-O018[R].[S.l.]:Joint Video Team,2005.
[9]CHIOU C-W,TSAI C-M,LINFAST C-W.Mode decision algorithms for adaptive GoP Structure in the scalable extension of H.264/AVC[C]//Proc.2007 IEEE International Symposium on Circuits and Systems.[S.l.]:IEEE Press,2007:3459-3462.
[10]DING Jun-Ren.Joint adaptive GoP and SCD coding for improving H.264 scalable video coding[C]//Proc.2007 IEEE International Symposium on Multimedia Workshops.[S.l.]:IEEE Press,2007:96-103.
[11]LEE J,DICKINSON B W.Hierarchical video indexing and retrieval for subband-coded video[J].IEEE Trans.Circuits and Systems for Video Technology,2000,10(5):824-829.