侯艷艷
(棗莊學(xué)院 計(jì)算機(jī)科學(xué)系,山東 棗莊 277160)
責(zé)任編輯:閆雯雯
H.264視頻編碼標(biāo)準(zhǔn)具有更高的編碼效率和更好的網(wǎng)絡(luò)適應(yīng)性,在相同構(gòu)建質(zhì)量下比H.263+和MPEG-4 ASP標(biāo)準(zhǔn)節(jié)約50%碼流;視頻編碼層(Video Coding Lay?er,VCL)和網(wǎng)絡(luò)提取層(Net Abstraction Layer,NAL)的定義進(jìn)一步提高了網(wǎng)絡(luò)的“親和性”,適合于無線網(wǎng)絡(luò)視頻傳輸。由于無線信道易錯、時變和帶限的特點(diǎn),視頻數(shù)據(jù)在無線環(huán)境傳輸?shù)耐话l(fā)性錯誤會導(dǎo)致連續(xù)包丟失現(xiàn)象,因此進(jìn)行錯誤隱藏是十分必要的[1]。
H.264時域誤碼掩蓋算法利用前后幀的冗余信息來恢復(fù)出當(dāng)前丟失的信息,其關(guān)鍵是要對丟失宏塊的參考運(yùn)動矢量集進(jìn)行估計(jì)并通過匹配算法選擇最佳的運(yùn)動矢量對丟失宏塊進(jìn)行掩蓋。在這方面已經(jīng)提出了很多方法,最簡單的辦法是時域代替法(Temporal Replacement,TR)[2],用零矢量來恢復(fù)丟失宏塊;JM算法采用邊界匹配算法(Boundary Matching Algorithm,BMA)[3]從候選運(yùn)動矢量中選出最匹配的運(yùn)動矢量。這些算法利用相鄰宏塊運(yùn)動矢量的相關(guān)性可以獲得比較滿意的恢復(fù)效果,但并沒有考慮丟失宏塊分割模式與相鄰宏塊運(yùn)動矢量的相關(guān)性及對象運(yùn)動的多向性。
改進(jìn)的時域誤碼掩蓋算法首先對視頻流進(jìn)行錯誤檢測,確定受損宏塊的位置。等到所有有效宏塊都被解碼并保存在幀緩存中,估計(jì)出受損宏塊的最優(yōu)運(yùn)動矢量。改進(jìn)的算法分三階段實(shí)現(xiàn):第一階段,由相鄰宏塊的運(yùn)動矢量相關(guān)性來估計(jì)丟失宏塊的分割模式;第二階段,根據(jù)丟失宏塊采用的分割模式,選擇各子塊的候選運(yùn)動矢量集;第三階段,根據(jù)改進(jìn)的邊界匹配函數(shù)選擇最優(yōu)的運(yùn)動矢量mv。選擇的最優(yōu)mv,不僅在當(dāng)前幀中取得較好的錯誤隱藏效果,而且在相關(guān)的后續(xù)幀中保持較好的錯誤隱藏效果。
H.264支持多種分割模式的運(yùn)動補(bǔ)償,16×16宏塊可以按16×16,16×8,8×16或8×8四種模式進(jìn)行分割。8×8模式的子宏塊還可以進(jìn)一步亞分割為8×8,8×4,4×8或4×4??紤]到無線傳輸過程中帶寬的局限性及解碼的復(fù)雜度,本算法只考慮16×16,16×8,8×16和8×8這4種分割模式,不再考慮亞分割模式[4]。
改進(jìn)的算法的宏塊分割充分利用丟失宏塊分割模式與相鄰宏塊運(yùn)動矢量的相關(guān)性。如果水平相鄰的宏塊運(yùn)動矢量具有極大的相似性,則對丟失宏塊不再進(jìn)行水平方向的分割;垂直相鄰的宏塊運(yùn)動矢量具有極大的相似性,則對丟失宏塊不再進(jìn)行垂直方向的分割。丟失宏塊相鄰塊的運(yùn)動矢量為mv1(x1,y1)~mv12(x12,y12),如圖1a所示。定義運(yùn)動矢量之間的相關(guān)度為L,則mv1與mv2的相關(guān)度為
B0宏塊的水平相關(guān)度LH為水平方向相鄰子塊的相關(guān)度均值。B0的垂直相關(guān)度LV為垂直方向相鄰子塊的相關(guān)度均值。
M為運(yùn)動矢量相關(guān)度閾值,丟失宏塊的模式推導(dǎo)如下:
1)LH〈M,LV〈M,丟失宏塊采用 16×16 分割模式,如圖1(a)所示。
2)LH〈M,LV〉M,丟失宏塊采用16×8分割模式,如圖1(b)所示。
3)LH〉M,LV〈M,丟失宏塊也采用8×16分割模式,如圖1(c)所示。
4)LH〉M,LV〉M,丟失宏塊都采用8×8分割模式,如圖1(d)所示。
參考運(yùn)動矢量集由丟失宏塊空間相鄰矢量與參考幀中的對應(yīng)位置矢量構(gòu)成[5],包括:零運(yùn)動矢量mv0;相鄰運(yùn)動矢量 mv1~mv12;平均/中值運(yùn)動矢量 mvave;參考幀與丟失宏塊對應(yīng)位置的運(yùn)動矢量mvne。對于不同宏塊分割模式確定各子塊所采用的運(yùn)動矢量[6]。
第一步,為減小運(yùn)動矢量預(yù)測的計(jì)算復(fù)雜度,不管宏塊采用何種分割模式,快速確定丟失宏塊的運(yùn)動矢量:
1)計(jì)算片中所有運(yùn)動矢量的絕對均值,小于閾值0.25,則用參考幀中對應(yīng)宏塊直接替換,預(yù)測運(yùn)動矢量為mv0。
2)計(jì)算丟失宏塊與參考宏塊的像素均方差,小于閾值0.8,則預(yù)測運(yùn)動矢量為mvave。
3)計(jì)算丟失宏塊空間相鄰宏塊與參考幀對應(yīng)宏塊的像素均方差,小于閾值1,預(yù)測運(yùn)動矢量采用mvne。
第二步,根據(jù)丟失宏塊的不同分割模式選取子塊的候選矢量集。
模式1的分割方式,B0候選運(yùn)動矢量集為:{mv1,mv2,mv3,mv4,mv5,mv6,mv7,mv8}。
模式2的分割方式,則B0,B1候選運(yùn)動矢量集依次為:{mv1,mv2,mv5,mv7,mv9,mv10},{mvB0,mv3,mv4,mv6,mv8,mv11,mv12}。
模式3的分割方式,則B0,B1候選運(yùn)動矢量集依次為:{mv1,mv3,mv5,mv6,mv9,mv11},{ mvB0,mv2,mv4,mv7,mv8,mv10,mv12}。
模式4 的分割方式,B0,B1,B2,B3候選運(yùn)動矢量集依 次為:{mv1,mv2,mv5,mv9},{ mvB0,mv1,mv2,mv7,mv10},{mvB0,mv1,mv3,mv5,mv6},{mvB1,mvB2,mv4,mv7,mv8}。
BMA采用丟失宏塊最外層像素與周圍宏塊相鄰層像素的絕對差之和(SAD)作為評價(jià)標(biāo)準(zhǔn),選擇使SAD最小的運(yùn)動矢量作為丟失宏塊運(yùn)動矢量[6],如圖2所示。BMA算法中邊界匹配按水平和垂直兩個方向進(jìn)行,主要考慮像素的水平和垂直相關(guān)性。視頻序列中對象的運(yùn)動具有多向性,對象的運(yùn)動不僅有水平和垂直方向,還有正反對角線方向,改進(jìn)的算法根據(jù)相鄰宏塊BT和BL計(jì)算B0正對角線,副對角線,水平/垂直方向像素匹配系數(shù)c1,c2,c3,式中f(x,y)為丟失宏塊左上角的像素。
根據(jù) c1,c2,c3大小關(guān)系,選擇邊界匹配函數(shù)。c1最小,丟失宏塊具有正對角線方向性,邊界匹配函數(shù)為SAD1;c2最小,丟失宏塊具有反對角線方向性,邊界匹配函數(shù)為SAD2;c3最小則丟失宏塊具有水平/垂直方向性,邊界匹配函數(shù)為SAD3。從參考運(yùn)動矢量集中選擇使邊界匹配函數(shù)最小的運(yùn)動矢量作為丟失宏塊運(yùn)動矢量。H.264采用多種宏塊分割模式,對于m×n子塊的SAD1,SAD2,SAD3,有
k1,k2,k3,k4分別為上下左右相鄰子塊的可靠度,ki為1表示相鄰子塊未丟失或已隱藏;ki為0表示相鄰塊已丟失且未隱藏。
本文采用H.264參考模型JM8.6編碼100幀,幀率30 f/s(幀/秒),序列結(jié)構(gòu)IPPPP,編碼模式采用FMO棋盤模式,測試序列為QCIF格式的foreman序列、carphone序列。實(shí)驗(yàn)采用H.264中推薦的3G移動包交換網(wǎng)絡(luò)的仿真環(huán)境,利用比特錯誤模式文件進(jìn)行仿真。解碼端采用本文算法與幾種傳統(tǒng)算法進(jìn)行誤碼掩蓋,信道近似誤碼率為3%,5%,10%,15%。表1給出各序列0~100幀的平均PSNR值。圖3給出了在誤碼率為10%情況下,Car?phone序列第12幀圖像客觀質(zhì)量比較。
表1 Carphone和Forman序列的PSNR值
筆者在時域誤碼掩蓋算法的基礎(chǔ)上針對無線網(wǎng)絡(luò)環(huán)境,對JM誤碼掩蓋算法的分割模式選擇及邊界匹配誤差函數(shù)進(jìn)行了一定的改進(jìn)。仿真實(shí)驗(yàn)證明了改進(jìn)算法在略微增加計(jì)算復(fù)雜度的基礎(chǔ)上,圖像質(zhì)量比原算法提高了0.08~1.13 dB,同時對幀間的誤碼積累有一定的抑制作用。實(shí)驗(yàn)結(jié)果表明,該算法較以往的時域誤碼掩蓋算法在相同的RTP包丟失率情況下均有更高的峰值信噪比及更好的重建圖像效果。
[1]馬宏興,張伶.H.264/AVC率失真優(yōu)化技術(shù)綜述[J].電視技術(shù),2010,34(6):19-22.
[2]AIGN S,F(xiàn)AZEL K.Temporal and spatial error concealment technique forhierarchicalMPEG-2 video codec[C]//IEEE InternationalConference on Communications.[S.l.]:IEEE Press,1995,3:1778-1783.
[3]TSEKERIDOU S,PITAS I.MPEG-2 errorconcealmentbased on block-matching principles[J].IEEE Transactions on Circuits and Systems for Video Technology,2000,10(4):646-658.
[4]ZHENG Jinghong,CHAU Lap-Pui.A temporal error concealment algorithm for H.264 using Lagrange Interpolation[J].IEEE International Symposium on Circuits and Systems,2004,2:133-136.
[5]YAN B,NG K W.A novelselective motion vector matching algorithm for error concealment in MPEG-4 video transmission over error-prone channels[J].IEEE Trans.Consum.Electron.,2003,49(4):1416-1423.
[6]AGRAFIOTIS D,BULL D R,CANAGARAJAH C N.Enhanced error concealment with mode selection[J].IEEE Trans.Circuits Syst.Video Technol.,2006,16(8):960-973.