龔 婷,宋建新
(南京郵電大學(xué)圖像處理與圖像通信實驗室,江蘇 南京 210003)
隨著通信技術(shù)和計算機技術(shù)的飛速發(fā)展,視頻信息在網(wǎng)絡(luò)中的處理和傳輸變得越來越受關(guān)注。由于視頻信息本身的特點是信息量大,冗余多,因此一系列的編碼標(biāo)準(zhǔn)隨之產(chǎn)生,主要目的是對視頻信息進行壓縮,提高編碼效率。目前,主流的編碼標(biāo)準(zhǔn),比如 H.261,H.263,MPEG-1,MPEG-2,MPEG-4,H.264/AVC 都是利用運動估計、運動補償技術(shù)作為基礎(chǔ)進行壓縮的。這些壓縮過的視頻碼流最大的缺點就是對傳輸差錯比較敏感,最經(jīng)常出現(xiàn)的是差錯傳播。為了克服這些缺點,需要在視頻流中加入容錯信息。
不同的網(wǎng)絡(luò)有不同的網(wǎng)絡(luò)特性,特別是對于無線網(wǎng)絡(luò),誤比特率丟包率的增加,信道特性的不穩(wěn)定性,多徑衰落等等,更需要容錯信息的加入來增強碼流的健壯性。狹義的視頻轉(zhuǎn)碼[1]是指將已壓縮的視頻流從一種格式(如空間分辨力、幀率、碼率等)轉(zhuǎn)換為另一種格式的操作。廣義的視頻轉(zhuǎn)碼[1]則包括在已壓縮視頻流中嵌入信息(如數(shù)字水印、容錯性工具等)的操作。容錯性視頻轉(zhuǎn)碼就是指在已壓縮視頻流中嵌入容錯性工具的轉(zhuǎn)碼。
在現(xiàn)有研究的算法中,在文獻[2]和[3]中對視頻容錯轉(zhuǎn)碼中的容錯技術(shù)進行了概括性的分析和總結(jié)。各種容錯技術(shù)概括起來分為4類:容錯信息植入,數(shù)據(jù)分層細化,冗余編碼和差錯掩蓋。容錯信息的植入包括時域的幀內(nèi)宏塊刷新和空域的重同步信息的插入;數(shù)據(jù)分層細化是指根據(jù)碼流不同的重要性而給予不同的保護策略;冗余編碼包括多描述編碼和可逆的變長度編碼;差錯掩蓋是利用運動補償恢復(fù)圖像的方法,不同的視頻編碼標(biāo)準(zhǔn)中有不同的差錯掩蓋方法。對于無線信道中視頻容錯轉(zhuǎn)碼,文獻[4]進行了具體研究,文中容錯轉(zhuǎn)碼采用的是容錯信息的植入,首先提出了如何在編碼的比特流中植入空域和時域的容錯信息,對于這個容錯信息的量是多少則依據(jù)無線信道反饋的信道條件,比如誤比特率BER;其次提出了如何利用編碼部分的運動補償來分析視頻差錯傳播程度;最后由于容錯信息的加入,比特率的增加需要采用率失真模型進行率失真優(yōu)化,以達到輸出比特率與輸入比特率的平衡。對于GPRS和3G移動無線網(wǎng)絡(luò),文獻[5]采用了視頻代理(video proxy)來實現(xiàn)不同網(wǎng)絡(luò)之間主要是Internet和GPRS移動網(wǎng)絡(luò)之間的轉(zhuǎn)碼的功能。結(jié)合GPRS網(wǎng)絡(luò)的結(jié)構(gòu)特點,在已壓縮的視頻中加入容錯信息,容錯算法采用自適應(yīng)幀內(nèi)刷新(AIR)和反饋控制信號(FCS)。
應(yīng)用比較廣泛的容錯技術(shù)是幀內(nèi)宏塊刷新算法,該算法是將一些對差錯比較敏感的宏塊由幀間編碼模式刷新為幀內(nèi)編碼模式。由于幀內(nèi)編碼模式所需要的比特數(shù)大大增加,所以這種容錯信息的加入勢必引入了一定的冗余信息,從而影響到了編碼效率。視頻容錯轉(zhuǎn)碼的關(guān)鍵也就變成了如何選擇算法使得編碼效率和容錯能力都能達到最優(yōu)。本文提出的自適應(yīng)的幀內(nèi)刷新算法,利用轉(zhuǎn)碼解碼端提取出來的運動矢量信息,動態(tài)地計算出每一幀需要的幀內(nèi)宏塊刷新數(shù)目,并且結(jié)合了編碼端的碼率控制技術(shù)。通過和沒有進行容錯轉(zhuǎn)碼(NO_IR)以及采用固定宏塊數(shù)隨機幀內(nèi)刷新(R_IR)這兩種情況作對比,實驗結(jié)果表明該算法在碼率增加較少的情況下,有效地增加了視頻在無線信道中的抗誤碼性能,解碼出來的視頻質(zhì)量無論在客觀上還是主觀上都有了顯著的提高。
視頻轉(zhuǎn)碼系統(tǒng)的種類很多,主要分為同構(gòu)轉(zhuǎn)碼和異構(gòu)轉(zhuǎn)碼,同構(gòu)轉(zhuǎn)碼是指格式內(nèi)的轉(zhuǎn)碼,而異構(gòu)轉(zhuǎn)碼是指標(biāo)準(zhǔn)和格式之間的轉(zhuǎn)碼,比如MPEG-2到H.264的轉(zhuǎn)碼。根據(jù)轉(zhuǎn)碼實現(xiàn)的功能分為空域和時域的轉(zhuǎn)碼,空域是指空間分辨力轉(zhuǎn)碼,時域是指幀率以及碼率的轉(zhuǎn)碼等等。根據(jù)結(jié)構(gòu)又可以分為開環(huán)結(jié)構(gòu)和閉環(huán)結(jié)構(gòu),開環(huán)結(jié)構(gòu)構(gòu)架簡單,但是存在嚴(yán)重的誤差漂移現(xiàn)象。針對這一缺點,閉環(huán)結(jié)構(gòu)很好的解決了這一問題,結(jié)構(gòu)就相對復(fù)雜。根據(jù)解碼端的解碼程度還可以分為像素域的轉(zhuǎn)碼和DCT域的轉(zhuǎn)碼。本文中的容錯轉(zhuǎn)碼是以上述的轉(zhuǎn)碼結(jié)構(gòu)為基礎(chǔ),功能上進行容錯信息的加入,增強了視頻碼流的抗誤碼性能。
視頻容錯轉(zhuǎn)碼是視頻流在高誤碼率的無線信道傳輸?shù)囊环N關(guān)鍵技術(shù),特別是在各種信道特性動態(tài)改變的網(wǎng)絡(luò)條件下顯得尤為重要?,F(xiàn)今,手機,PDA等移動設(shè)備終端具備接收視頻信息的能力,視頻信息從有線網(wǎng)絡(luò)傳輸?shù)?G等移動無線網(wǎng)絡(luò),移動網(wǎng)絡(luò)視頻終端需要快速順暢的接受到合適的格式碼率分辨力的視頻信息。為了適應(yīng)網(wǎng)絡(luò)之間的異構(gòu)性,本文要做的工作就是在轉(zhuǎn)碼節(jié)點實現(xiàn)視頻容錯轉(zhuǎn)碼的功能,網(wǎng)絡(luò)環(huán)境如圖1所示。
圖1 視頻容錯轉(zhuǎn)碼網(wǎng)絡(luò)環(huán)境
具體實現(xiàn)過程如圖2所示,其中包括以下功能模塊。首先,最重要的是實現(xiàn)視頻容錯轉(zhuǎn)碼功能,這個過程基于的轉(zhuǎn)碼平臺是H.264到H.264的轉(zhuǎn)碼,具體結(jié)構(gòu)是p264解碼端和JM86編碼端級聯(lián)的像素域轉(zhuǎn)碼。采用p264解碼器主要是因為它是依據(jù)x264編碼框架而編的解碼器,具有和x264一樣的優(yōu)點,例如結(jié)構(gòu)簡單、實用性強,而且p264解碼速度很快。這在一定程度上彌補了JM86編碼端編碼慢的缺點。采用JM86作為編碼端是因為JM系列的測試代碼具有很完善的功能,這為之后的碼流可以選擇更多的功能提供了很大的便利性。其次,對于已經(jīng)經(jīng)過容錯轉(zhuǎn)碼的視頻碼流要在不同誤碼率或是丟包率的無線網(wǎng)絡(luò)仿真環(huán)境進行處理,對于這一模塊,根據(jù)已有的論文中提出的方法,選用ITU推薦的3G無線視頻通用仿真測試環(huán)境[6],具體的代碼采用N37。最后,要采用JM86解碼器對有差錯的已編碼視頻流進行解碼,通過對比PSNR等參數(shù)進行各種算法性能的對比。
圖2 視頻容錯轉(zhuǎn)碼系統(tǒng)功能模塊
容錯算法有很多的經(jīng)典算法,本文采用自適應(yīng)幀內(nèi)宏塊刷新(AIR)算法。幀內(nèi)宏塊刷新算法首先要進行錯誤的估計和衡量,在這個步驟中有的算法是根據(jù)運動矢量來計算每幀所需要刷新的宏塊數(shù)[7],有的是根據(jù)由量化誤差和運動補償所帶來的端到端的Distortion[8],還有的是將幀內(nèi)宏塊刷新算法和率失真理論相結(jié)合[9]。采用端到端失真估計和率失真理論的算法雖然可以有效平衡編碼效率和容錯能力,但是失真估計本身算法復(fù)雜,需要考慮的因素很多,很多變量在具體的實現(xiàn)中并不能精確的得到。
本文采用的幀內(nèi)宏塊刷新算法,是利用解碼端的運動矢量信息來確定每幀需要的幀內(nèi)刷新宏塊數(shù),然后在編碼端進行刷新。運動矢量信息從解碼端直接提取出來,不需要復(fù)雜的計算,這是該算法最大的優(yōu)點。具體的容錯轉(zhuǎn)碼結(jié)構(gòu)如圖3所示。
圖3 容錯轉(zhuǎn)碼結(jié)構(gòu)框圖
該幀內(nèi)宏塊刷新算法簡稱MV_IR,其具體的計算流程如下所述:
1)視頻信息中運動特性的計算。這里采用文獻[7]中歸一化運動信息的概念(Normalised Activity Index,NAI),這個函數(shù)代表每個宏塊的運動信息在所有宏塊中所占的比重,用于后面如何確定每幀最優(yōu)的的幀內(nèi)宏塊刷新數(shù)目。函數(shù)輸出值越高就表示這些宏塊屬于高運動場景,需要更多的幀內(nèi)刷新宏塊;反之亦然。NAI計算公式為
式中:i(j)表示第j幀的運動活躍的宏塊數(shù),mvj(n)為第j幀中第n個宏塊的運動矢量,τ是指每一幀的宏塊總數(shù)。通過計算得出的結(jié)果顯示,NAI(j)能夠有效地代表圖像序列的運動特性。圖4為H.264測試序列foreman_qcif的300幀的NAI值,可以明顯地看出在第180幀到220進行幀場景變換,運動最為強烈。
圖4 foreman序列計算出的NAI值
2)每幀幀內(nèi)刷新宏塊數(shù)目的確定。如下式
式中:IR(j)表示由運動信息決定的幀內(nèi)宏塊刷新速率,j代表第j幀。其中,δ(j)是調(diào)控參數(shù),如果一幅圖像大部分幀都是運動平緩只有少數(shù)幀是運動劇烈的,如果不加δ(j)這個調(diào)控參數(shù),會得出較大的幀內(nèi)刷新數(shù)目,這樣浪費了資源,編碼效率會大大降低。所以,δ(j)調(diào)控參數(shù)有歸一化的作用。
δ(j)由公式(3)表示,其中α為系數(shù),τ是指每一幀的宏塊總數(shù)。α值由R(j)決定,表示式為
實驗平臺為H.264視頻容錯轉(zhuǎn)碼系統(tǒng),本文選擇foreman和carphone兩種測試序列,大小為QCIF格式,分辨力為176×144,各為30幀。轉(zhuǎn)碼系統(tǒng)中編碼端打開碼率控制功能,每片兩個宏塊,輸出碼流為RTP打包模式。無線信道仿真環(huán)境選用ITU推薦的3G無線視頻通用仿真測試環(huán)境[6],選擇18681.3,18681.4 以及 wcdma_128kb_3kph_5e-04.bin三種差錯圖樣文件,誤比特率BER分別為10-2,10-3,10-4,在表1 和表2 中分別用e02,e03,e04來表示。
表1 foreman序列實驗結(jié)果對比
表2 carphone序列實驗結(jié)果對比
這里選擇其他兩種情況:一種是沒有進行容錯轉(zhuǎn)碼(NO_IR),另一種是采用固定宏塊數(shù)的隨機幀內(nèi)刷新(R_IR),用這兩種算法和上述幀內(nèi)刷新算法(MV_IR)的容錯效果作對比。并且,R_IR中的固定刷新宏塊數(shù)由MV_IR計算出的所有幀的平均刷新宏塊數(shù)決定,比如,R_IR算法中每幀刷新宏塊數(shù)foreman序列定為40,carphone序列定為15。實驗結(jié)果如表1和表2所示,表1是foreman序列第181幀到210幀的轉(zhuǎn)碼輸出的比特率和解碼端的SNRY,表2是carphone序列第201幀到230幀的轉(zhuǎn)碼輸出的比特率和解碼端的SNRY。
表1和表2的實驗結(jié)果表明:對于foreman序列,MV_IR容錯算法在解碼端的圖像質(zhì)量比NO_IR提高了平均1.2 dB,比R_IR容錯算法提高了平均0.1 dB,而且比特率和R_IR容錯算法相比有了明顯地降低,減少了約12%;同樣,對于carphone序列,MV_IR容錯算法在解碼端的圖像質(zhì)量比NO_IR提高了平均2 dB,比R_IR提高了平均0.1 dB,比特率和R_IR相比也有了明顯地降低,減少了約16%。
對于foreman序列,MV_IR容錯算法計算出的幀內(nèi)宏塊刷新數(shù)目在40塊左右,這對于R_IR容錯算法來說意味著每幀都要刷新40個宏塊,所以其轉(zhuǎn)碼輸出的比特率會有很大幅度的增加。而MV_IR容錯算法能夠自適應(yīng)地決定每幀的幀內(nèi)刷新宏塊數(shù),并進行刷新,能夠以較少的比特率為代價,有效地提升了解碼端的SNRY。同時,解碼端的主觀質(zhì)量也有了明顯的改善,如圖5所示,其中a圖和b圖分別表示NO_IR容錯算法和MV_IR容錯算法解碼端輸出的YUV序列。通過對比發(fā)現(xiàn)圖5a中間信號塔和建筑交接的地方出現(xiàn)了很明顯的失真,而圖5b中沒有很明顯的失真,總體改善了很多。
圖5 foreman第10幀主觀質(zhì)量對比
本文所述的基于運動矢量信息的幀內(nèi)宏塊刷新算法有效地提高視頻碼流的抗誤碼性能。并且結(jié)合JM86中的碼率控制,與其中自帶的隨機幀內(nèi)宏塊刷新相比,明顯地降低了碼率,提高了視頻傳輸質(zhì)量。這對視頻在帶寬有限的無線信道中傳輸有重要的意義,在移動娛樂、移動監(jiān)控等領(lǐng)域也具有廣泛的應(yīng)用價值。
[1]余圣發(fā),陳曾平,莊釗文.針對網(wǎng)絡(luò)視頻應(yīng)用的視頻轉(zhuǎn)碼技術(shù)綜述[J]. 通信學(xué)報,2007,28(1):111-118.
[2]VETOR A,XIN J,SUN Huifang.Error resilience video transcoding for wireless communications[J].IEEE Wireless Communications,2005,12(4):14-21.
[3]ZHANG Xinchen,HUANG Mei.Error resilient transcoding for wireless video transmission[C]//Proc.2009 International Conference on Wireless Networks and Information Systems.[S.l.]:IEEE Press,2009:286-289.
[4]DE LOS REYES G,REIBMAN A R,CHANG S F,et al.Error-resilient transcoding for video over wireless channels[J].IEEE Journal on Selected Areas in Communications,2000,18(6):1063-1074.
[5]DOGAN S,CELLATOGLU A,UYGUROGLU M,et al.Error-resilient video transcoding for robust internetwork communications using GPRS[J].IEEE Trans.Circuits and Systems for Video Technology,2002,12(6):453-464.
[6]VARSA V,KARCZEWICZ M.ITU-T VCEG-M77,Common test conditions for RTP/IP over 3GPP/3GPP2[S].Santa Barbara,CA,USA:ITU,2001:21-24.
[7]EMINSOY S,DOGAN S,KONDOZ A M.Transcoding-based error-resilient video adaptation for 3G wireless networks[J/OL].EURASIP Journal on Advances in Signal Processing,2007[2011-02-01].http://downloads.hindawi.com/journals/asp/2007/039586.pdf.
[8]阮若林,胡瑞敏.基于感興趣區(qū)域的率失真優(yōu)化幀內(nèi)刷新算法研究[J]. 計算機科學(xué),2009,36(10):284-288.
[9]韓鎮(zhèn),陳皓.一種基于分層率失真優(yōu)化的容錯性視頻轉(zhuǎn)碼算法[J].計算機學(xué)報,2009,32(6):1152-1161.