《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 可分級(jí)視頻錯(cuò)誤隱藏的研究與工程實(shí)現(xiàn)
可分級(jí)視頻錯(cuò)誤隱藏的研究與工程實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2012年第4期
劉祎楠, 于鴻洋
電子科技大學(xué) 電子科學(xué)技術(shù)研究院, 四川 成都 611731
摘要: 基于JSVM提出多種錯(cuò)誤隱藏方案,結(jié)合Opensvcdecoder開(kāi)源項(xiàng)目設(shè)計(jì)并實(shí)現(xiàn)了可以進(jìn)行錯(cuò)誤隱藏的解碼播放軟件。最終實(shí)驗(yàn)結(jié)果表明,相比于之前的軟件,該設(shè)計(jì)方案在錯(cuò)誤隱藏效果上有明顯提升。
中圖分類(lèi)號(hào): TP37
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)04-0120-03
Research of error concealment for SVC and engineering realization
Liu Yi′nan,Yu Hongyang
Research Institute of Electronic Science and Technology, University of Electronic Science and Technology of China, Chengdu 611731, China
Abstract: In this paper, a video replay software is designed and realized using Opensvcdecoder based on the error concealment methods from the JSVM reference software. Experimental results show that, compared with the former version of error concealment in Opensvcdecoder, the new EC mode has a better outcome.
Key words : H.264; scalable video coding; error concealment; Opensvcdecoder; joint scalable video model

    可分級(jí)視頻編碼[1]SVC(Scalable Video Coding)是H.264標(biāo)準(zhǔn)的擴(kuò)展,利用分層結(jié)構(gòu)將時(shí)域、空域和質(zhì)量可分級(jí)有機(jī)地結(jié)合在一起。針對(duì)不同的網(wǎng)絡(luò)環(huán)境與終端提供了一種適應(yīng)性更廣的視頻序列方案。

    但是由于網(wǎng)絡(luò)環(huán)境的復(fù)雜性與不確定性,在IP網(wǎng)絡(luò)以及無(wú)線網(wǎng)絡(luò)等易錯(cuò)信道中,往往易造成碼流數(shù)據(jù)的錯(cuò)誤與丟失[2]。由于SVC的特殊分層結(jié)構(gòu),傳統(tǒng)H.264的單層錯(cuò)誤隱藏技術(shù)并不能完全適用。另外相比于之前的AVC編碼,SVC無(wú)論是在結(jié)構(gòu)上還是在壓縮方式和自適應(yīng)性上都有著不小的提升。因此對(duì)于SVC錯(cuò)誤隱藏的相關(guān)研究一直是視頻領(lǐng)域的一個(gè)熱點(diǎn)。
1 SVC錯(cuò)誤隱藏方法
    目前SVC的錯(cuò)誤隱藏方法[3-5]的研究主要基于參考軟件JSVM(Joint Scalable Video Model),分為同層錯(cuò)誤隱藏和層間錯(cuò)誤隱藏兩類(lèi)。
    其中同層錯(cuò)誤隱藏主要有幀拷貝方法FC(Frame Copy)和B幀時(shí)間直接方法TD(Temporal Direct)。
    層間錯(cuò)誤隱藏主要有基本層跳過(guò)方法BLSkip(Base Layer Skip)、重建基本層和可能的上采樣方法RU(Reconstruction Base Layer and Possibly Upsampling)。
1.1  幀拷貝方法FC
    在幀拷貝方法FC中,丟失幀的每一個(gè)像素的重建都是從前向參考幀列表的第一幀圖像對(duì)應(yīng)位置復(fù)制而來(lái)。如果當(dāng)錯(cuò)誤隱藏方法支持多環(huán)解碼時(shí),則該方法可以同時(shí)給基本層和增強(qiáng)層使用,否則只能給當(dāng)前訪問(wèn)單元AU(Access Unit)的最高層使用該方法。
1.2 B幀的時(shí)間直接方法TD
    B幀的時(shí)間直接方法TD如圖1所示,如果當(dāng)前幀的宏塊或者宏塊分割在解碼時(shí)被當(dāng)成TD模式來(lái)進(jìn)行重建,則它的運(yùn)動(dòng)矢量通過(guò)相鄰的參考幀進(jìn)行計(jì)算。

    如果當(dāng)前編碼宏塊或者宏塊分割在后向參考幀上對(duì)應(yīng)位置的宏塊或者宏塊分割(圖1中的參考幀1),使用與當(dāng)前編碼宏塊或者宏塊分割相同的前向參考幀(圖1中的參考幀0),則參考幀0與參考幀1會(huì)被選作當(dāng)前編碼宏塊或者宏塊分割的參考幀。前向和后向運(yùn)動(dòng)矢量mvL0和mvL1會(huì)使用POC從mvCol計(jì)算出來(lái)。在計(jì)算出前向和后向運(yùn)動(dòng)矢量之后,運(yùn)動(dòng)補(bǔ)償MC(Motion Compensation)將從兩個(gè)參考幀得到當(dāng)前宏塊或者宏塊分割方式的隱藏值(殘差信息假設(shè)等于0)。
    對(duì)于SVC中的基本層和增強(qiáng)層的B幀,該方法可以使用,但是不能直接用于質(zhì)量增強(qiáng)層。
1.3 基本層跳過(guò)方法BLSkip
    在該方法中,如果基本層是幀內(nèi)預(yù)測(cè)宏塊,則采用基本層的重建值來(lái)對(duì)增強(qiáng)層進(jìn)行重建;如果基本層是幀間預(yù)測(cè)宏塊,則使用基本層的運(yùn)動(dòng)和殘差信息作為增強(qiáng)層的運(yùn)動(dòng)和殘差信息,生成增強(qiáng)層重建。如果基本層幀正確接收,則該方法可以用到增強(qiáng)層;如果基本層幀沒(méi)有正確接收,則需要使用TD的方法恢復(fù)基本層的運(yùn)動(dòng)矢量,然后再使用BLSkip生成增強(qiáng)層幀。下面對(duì)該方法的具體過(guò)程進(jìn)行討論。


 


3 Opensvcdecoder中錯(cuò)誤隱藏的設(shè)計(jì)與實(shí)現(xiàn)
3.1 Opensvcdecoder介紹

    Opensvcdecoder(簡(jiǎn)稱(chēng)Opensvc)[8]是一個(gè)開(kāi)源的SVC解碼器軟件庫(kù),該項(xiàng)目在2006年7月啟動(dòng),致力于將SVC標(biāo)準(zhǔn)進(jìn)行工程實(shí)用化。根據(jù)官方的資料顯示,在解碼速度上相比JSVM自帶的解碼模塊,Opensvc有5~14倍的提升,并且可以跨平臺(tái)開(kāi)發(fā)。
    Opensvc自帶有顯示模塊,入口數(shù)據(jù)為264碼流序列,解碼的同時(shí)可以直接進(jìn)行播放,使用簡(jiǎn)易直接媒體層SDL(Simple Direct Media Layer)進(jìn)行顯示輸出。
3.2 整合JSVM錯(cuò)誤隱藏方法的Opensvc的設(shè)計(jì)
  Opensvc中雖然自帶了錯(cuò)誤檢測(cè)與錯(cuò)誤隱藏模塊,但是由于設(shè)計(jì)得并不完善,所以實(shí)際中對(duì)于丟包的情況不能進(jìn)行很好的處理?;谏弦还?jié)中對(duì)JSVM中三種錯(cuò)誤隱藏方法的研究和結(jié)論,設(shè)計(jì)了一種opensvc的改進(jìn)型錯(cuò)誤隱藏方法,依據(jù)判斷基本層是否丟失的情況來(lái)選擇合適的算法進(jìn)行錯(cuò)誤隱藏。
    (1) 當(dāng)僅丟失增強(qiáng)層時(shí),使用BLSkip方法進(jìn)行增強(qiáng)層的隱藏;
    (2) 當(dāng)增強(qiáng)層和基本層都丟失時(shí),先使用TD的方法對(duì)基本層進(jìn)行恢復(fù),然后使用BLSkip恢復(fù)對(duì)應(yīng)的增強(qiáng)層;
  (3) 具體檢測(cè)基本層和增強(qiáng)層丟失的方法可以通過(guò)統(tǒng)計(jì)Nal類(lèi)型和SliceGap等語(yǔ)法元素實(shí)現(xiàn)[4];
  (4) 以步驟(1)、步驟(2)為核心思想進(jìn)行從JSVM向Opensvc的移植;
  (5) 開(kāi)發(fā)環(huán)境為微軟的Visual Studio 2005,JSVM參考版本為9.8,Opensvc版本為src_1.11;
  (6) 整合完成后通過(guò)命令行
    >Opensvcdecoder.exe -h264 test.264 -layer 16
直接播放最高層數(shù)據(jù)進(jìn)行測(cè)試。
3.3 具體實(shí)驗(yàn)結(jié)果
    由于opensvc沒(méi)有自帶PSNR的比較器,所以只能通過(guò)主觀播放效果對(duì)比進(jìn)行評(píng)判。為了測(cè)試基本層與增強(qiáng)層都有丟包時(shí)的恢復(fù)情況,這里只選用所有模擬序列中基本層丟包5%、增強(qiáng)層丟包20%的最嚴(yán)重的情況來(lái)進(jìn)行對(duì)比。
    圖2為Bus序列的恢復(fù)結(jié)果對(duì)比,圖3為Crew序列的恢復(fù)結(jié)果對(duì)比,圖4為Football序列的恢復(fù)結(jié)果對(duì)比。

    實(shí)際比較中,圖2、圖3、圖4的左圖與右圖均有不同程度的損失。左圖采用整合型EC后圖像會(huì)出現(xiàn)輕微的模糊現(xiàn)象與偶爾的搜索塊不匹配,但是不會(huì)出現(xiàn)像右圖那樣明顯的塊效應(yīng),說(shuō)明改進(jìn)型的EC模式有著較為良好的實(shí)際效果。
    本文介紹了目前SVC所采用的幾種錯(cuò)誤隱藏的方法,并對(duì)其中的三種進(jìn)行了實(shí)驗(yàn)。在實(shí)驗(yàn)結(jié)論的基礎(chǔ)上選取了恢復(fù)效果最佳的方法,進(jìn)行向Opensvcdecoder的整合。最后給出了整合后與整合前的實(shí)際效果對(duì)比截圖,證明了整合JSVM錯(cuò)誤隱藏方法的Opensvc確實(shí)有更佳的錯(cuò)誤隱藏效果。
參考文獻(xiàn)
[1] SCHWARZ H, MARPE D, WIEGAND T. Overview of the scalable video coding extension of the H.264/AVC standard[J]. IEEE Transactions on Circuits and Systems for VideoTechnology, 2007,17(9):1103-1120.
[2] CHEN Y, XIE K, ZHANG F,et al. Frame loss error concealment for SVC[C]. Journal of Zhejiang University SCIENCE,also in Proc. Packet Video Workshop' 06, 2006:677-683.
[3] BLESTEL M, RAULET M. Open SVC Decoder[DB/OL][2011-04-07].http://sourceforge.net/projects/opensvcde-coder/files/opensvcdecoder/Release%201.11/src_1.11.tar.bz2/down load.
[4] CHEN Y, BOYCE J, XIE K. Frame loss error concealment for SVC[C]. Joint Video Team(JVT),Doc.JVT-Q046, Oct.2005.
[5] 郭宜.可伸縮視頻編碼的差錯(cuò)控制方法研究[D]. 安徽:中國(guó)科學(xué)技術(shù)大學(xué),2009.
[6] 張學(xué)波.基于H.264/AVC SVC的錯(cuò)誤隱藏技術(shù)研究[D]. 北京:北京師范大學(xué),2010.
[7] GUO Y, LI H, WANG Y K. SVC/AVC loss simulator[M]. JVT-Q069. 2005.
[8] VIERON J, WIEN M, SCHWARZ H. Jsvm 11 software[DB/OL].[2007-06-29].http://wftp3.itu.int/av-arch/jvt-site/2007_06_Geneva/JVT-X203.zip

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。