黃治華,蔡全旺
(中國船舶重工集團公司第七二二研究所,湖北 武漢 430079)
壓縮視頻數(shù)據(jù)在視頻通信過程中由于受信道帶寬限制、無線信道不穩(wěn)定性[1]以及IP網(wǎng)絡(luò)“盡力而為”影響,不可避免地會發(fā)生丟包或誤碼。與此同時,視頻編碼標(biāo)準(zhǔn)大多采用幀內(nèi)預(yù)測、幀間預(yù)測和可變長編碼等技術(shù)去除視頻圖像在空域、時域和統(tǒng)計域的冗余度以達(dá)到數(shù)據(jù)壓縮的目的[2],這些技術(shù)在提高編碼效率提升的同時也使得視頻數(shù)據(jù)之間存在較強的關(guān)聯(lián)性。當(dāng)視頻數(shù)據(jù)發(fā)生丟包或誤碼時,解碼錯誤會在空域或時域迅速擴散,導(dǎo)致解碼的視頻質(zhì)量急劇下降。因此,為提高解碼的視頻質(zhì)量,需要在解碼端采用錯誤掩蓋技術(shù),在不改變編解碼結(jié)構(gòu)、不增加傳輸帶寬的情況下,根據(jù)視頻信號的相關(guān)性,對丟包或誤碼的視頻數(shù)據(jù)進(jìn)行恢復(fù)。
當(dāng)幀間編碼幀發(fā)生丟包或誤碼時,常采用時域錯誤掩蓋算法,即根據(jù)視頻的運動相關(guān)性,估算受損圖像塊的運動矢量,然后在前續(xù)幀中查找圖像塊替代受損圖像塊。因此,時域錯誤掩蓋算法的核心在于如何估算受損的運動矢量。時域替換算法[3]是時域錯誤掩蓋最基本的算法,通過假定受損運動矢量為0,直接用前續(xù)圖像塊替代受損圖像塊,該算法易于實現(xiàn),但在運動劇烈區(qū)域很容易產(chǎn)生錯位感。邊界匹配算法[4]以候選圖像塊與相鄰圖像塊的邊界像素差值為準(zhǔn)則,從候選圖像塊中選取使得差值最小的圖像塊作為最佳替代圖像塊,該算法已被H.264參考軟件JM選作時域錯誤掩蓋算法,但對于物體邊界處的受損圖像塊,掩蓋時會選擇出錯誤的替代圖像塊。文獻(xiàn)[5]根據(jù)相鄰圖像塊運動矢量構(gòu)造拉格朗日插值多項式,進(jìn)而根據(jù)插值多項式恢復(fù)受損圖像塊的運動矢量。該算法利用了運動的空域相關(guān)性,但當(dāng)受損圖像塊與相鄰區(qū)域運動趨勢不同時,掩蓋效果較差。文獻(xiàn)[6]采用時空結(jié)合邊界匹配法,以保持圖像平滑性和結(jié)構(gòu)相似性。文獻(xiàn)[7]采用物體檢測、邊界匹配和參考幀相關(guān)圖像塊的運動矢量來恢復(fù)不同尺寸的受損圖像。文獻(xiàn)[8]首先采用邊界匹配算法估算運動矢量,然后通過粒子濾波器對運動矢量進(jìn)行去噪處理。文獻(xiàn)[9]將張量模型引入到視頻通信中,提出了基于張量模型的錯誤掩蓋算法。這些算法利用相鄰圖像塊或前續(xù)圖像塊的運動信息對受損圖像塊的運動矢量進(jìn)行估算,但存在一個共同的不足,即缺少對運動區(qū)域的分析,沒有選取與受損圖像塊運動相關(guān)性最強的相鄰圖像塊對受損圖像塊進(jìn)行錯誤掩蓋,因此恢復(fù)的運動矢量存在一定偏差,解碼的視頻質(zhì)量有待提升。
為此,本文根據(jù)運動的空域相關(guān)性和時域相關(guān)性,提出一種基于相關(guān)運動矢量外推的錯誤掩蓋算法。對于受損圖像塊,首先構(gòu)造經(jīng)過前續(xù)相鄰圖像塊的一階平面集,然后計算前續(xù)圖像塊與1階平面集距離,選取使得距離最短的1階平面所代表的前續(xù)相鄰圖像塊為相關(guān)最強前續(xù)相鄰圖像塊,最后將相關(guān)最強前續(xù)相鄰圖像塊外推到當(dāng)前幀,通過外推圖像塊與受損圖像塊重疊區(qū)域加權(quán)估算受損運動矢量,并采用邊界匹配算法對運動矢量進(jìn)行優(yōu)化,進(jìn)而恢復(fù)受損圖像塊。
前續(xù)圖像塊、前續(xù)相鄰圖像塊、受損圖像塊位置關(guān)系如圖1所示。
圖1 圖像塊位置關(guān)系示意圖Fig. 1 Position relation of image blocks
以 B′0中心點為原點, B′1~ B′8的中心點與原點的橫向 距離 為 X 軸 、 B′1~ B′8的 中 心 點 與 原點 的縱 向 距 離 為Y 軸、運動矢量的水平分量為 Z軸建立三維坐標(biāo)系。前續(xù)相鄰圖像塊橫向距離和縱向距離如表1所示。
表1 前續(xù)相鄰圖像塊橫向距離和縱向距離Tab. 1 Lateral and longitudinal distances of previous adjacent image blocks
求解方程組,得到:
求得所有的1階平面后,通過比較 B′0(0,0,x′0)與所有1階平面的距離大小可衡量 B′0(0,0,x′0)與1階平面所代表的前續(xù)相鄰圖像塊的相關(guān)程度,即與 B′0(0,0,x′0)距離最近的一階平面所代表的前續(xù)相鄰圖像塊為運動矢量相關(guān)最強前續(xù)相鄰圖像塊。 B′0(0,0,x′0)與 S中1階平面的距離如圖2所示。
圖2 前續(xù)圖像塊與1階平面距離Fig. 2 Distance between preceding image blocks and first-order plane
B′0(0,0,x′0)與 S中 一 階 平 面 ( 以 下 以 一 階 平 面為例描述)的距離計算公式為:
根據(jù)運動的時域相關(guān)性可知,相鄰視頻幀的運動趨勢大多具有連續(xù)性,即可以將前續(xù)相鄰圖像塊的運動矢量根據(jù)其運動趨勢外推到當(dāng)前幀中以估算受損圖像塊的運動矢量。
得到相關(guān)最強前續(xù)相鄰圖像塊 B′α, B′β和 B′γ后,分別根據(jù)其自身運動矢量外推到當(dāng)前幀中,如圖3所示。
圖3 運動矢量外推示意圖Fig. 3 Diagram of motion vector extrapolation
圖中,虛線框為外推圖像塊。 B′α, B′β, B′γ的外推圖像塊與受損圖像塊 B0重疊區(qū)域大小分別標(biāo)記為
重疊區(qū)域大小反映了前續(xù)圖像塊與受損圖像塊的運動相關(guān)程度:重疊區(qū)域越大的前續(xù)圖像塊,越有可能運動到受損圖像塊的位置。因此,受損圖像塊的運動矢量可根據(jù)外推圖像塊與受損圖像塊重疊區(qū)域加權(quán)得到,即
式中, (mvx,mvy)即為根據(jù)運動矢量外推估算的 B0的運動矢量。
通過上述運動矢量外推方法,初步估算了受損圖像塊的運動矢量,但在上述運動矢量估算過程中,只考慮了運動的時域相關(guān)性,因此恢復(fù)的圖像塊可能存在塊邊界效應(yīng)。因此,本文對已初步估算的運動矢量進(jìn)行優(yōu)化,在初步估算的運動矢量相鄰區(qū)域內(nèi)尋找一個最優(yōu)邊界匹配的運動矢量作為受損圖像塊最終掩蓋的運動矢量。
邊界匹配算法以圖像塊邊界亮度失真作為度量,通過計算候選圖像塊的內(nèi)部邊界像素值與受損圖像塊的外部邊界像素值的亮度差值之和大小衡量邊界匹配程度,邊界匹配程度越高,則圖像塊邊界差值越小。因此,在已初步估算的運動矢量相鄰區(qū)域內(nèi),查找使得圖像塊邊界差值最小的圖像塊恢復(fù)受損圖像塊。由于圖像塊的解碼或掩蓋的次序為從上至下,從左至右,當(dāng)對受損圖像塊進(jìn)行錯誤掩蓋時,只有其上邊界圖像塊和左邊界圖像塊可用,因此在計算邊界差值時,只計算上邊界圖像塊和左邊界圖像塊的差值。最優(yōu)運動矢量查找過程如圖4所示。
圖4 最優(yōu)運動矢量查找過程示意圖Fig. 4 Searching process for optimal motion vector
對于 (mvx,mvy)相鄰區(qū)域,即 ?x∈ [mvx?δ,mvx+δ],?y∈[mvy?δ,mvy+δ]內(nèi)的候選圖像塊,其內(nèi)部邊界像素值與受損圖像塊的外部邊界像素值的亮度差值之和計算公式 diff(?x,?y)為:
式中:xstart和ystart為受損圖像塊在當(dāng)前幀F(xiàn)n中的起始像素坐標(biāo),pixn(x,y)為 Fn中像素(x,y)的亮度值,pixn?1(x,y)為前續(xù)幀 Fn?1中像素 (x,y)的亮度值。根據(jù)邊界匹配算法的原則,使得式(8)值最小時的(?x,?y)即為優(yōu)選后的運動矢量,即
選取QCIF格式的Foreman,Carphone和Suzie序列進(jìn)行仿真實驗。仿真實驗采用H.264的參考軟件JM[10]作為測試平臺,視頻序列編碼檔次為Baseline,關(guān)鍵幀間隔為40,量化參數(shù)為26??紤]到運動的空間相關(guān)性及運算復(fù)雜度,選取=3。本文主要驗證幀間編碼幀的錯誤掩蓋,因此仿真實驗通信環(huán)境丟包模型為:幀內(nèi)編碼幀不丟包,幀間編碼幀丟包率為10%,20%和30%。
采用時域替換算法、邊界匹配算法、拉格朗日算法和本文提出的算法進(jìn)行比較。視頻客觀質(zhì)量通過亮度分量的峰值信噪比(PSNR)進(jìn)行衡量,實驗結(jié)果如表2所示。
表2 不同掩蓋算法的性能比較Tab. 2 Performance comparison of different concealment algorithms
仿真實驗中,F(xiàn)oreman序列人物和鏡頭均在運動,而且還存在場景的切換;Carphone序列中等速度的運動;Suzie序列運動方向隨機。由表2可見,對于不同運動類型的視頻序列和不同的數(shù)據(jù)丟包率,本文算法PSNR均高于時域替換算法、邊界匹配算法和拉格朗日算法。相比時域替換算法提高2.3~2.7dB,相比邊界匹配算法提高1.3~2dB,相比拉格朗日算法提高0.5~1.1dB,是一種魯棒性較強的算法。3個測試序列中圖像的不同區(qū)域具有不同的運動趨勢,本文算法分析了相鄰圖像塊運動趨勢,并選取運動相關(guān)最強相鄰圖像塊進(jìn)行錯誤掩蓋,從而更好地重建了受損的圖像。此外,隨著丟失率的增大,更多的受損圖像塊采用本文算法恢復(fù)受損的運動矢量,本文算法的優(yōu)勢更加明顯。
從解碼視頻質(zhì)量比較各算法的主觀視覺效果,圖5給出了Foreman序列第82幀解碼視頻質(zhì)量。
由圖可見,時域替換算法解碼圖像效果較差,在人物眼睛、鼻梁、嘴巴和脖子處存在割裂痕跡;邊界匹配算法解碼圖像在人物鼻梁、脖子處存在錯位痕跡;拉格朗日算法解碼圖像在人物鼻子下方存在切線;本文算法在一定程度上克服了上述不足,解碼的視頻質(zhì)量相對較好。
圖5 各算法解碼視頻主觀視覺效果Fig. 5 Decoded visual effects of various algorithms
本文利用運動空域相關(guān)性得到相關(guān)最強前續(xù)相鄰圖像塊,然后利用運動時域相關(guān)性將相關(guān)最強前續(xù)相鄰圖像塊外推到當(dāng)前幀,根據(jù)外推圖像塊與受損圖像塊重疊區(qū)域大小估算受損的運動矢量。在此基礎(chǔ)上,依據(jù)邊界匹配算法對估算的運動矢量進(jìn)行優(yōu)化,從而完成受損圖像塊的錯誤掩蓋。仿真結(jié)果表明,對于不同運動特征的視頻序列和不同的數(shù)據(jù)丟包率,本文算法相比傳統(tǒng)時域錯誤掩蓋算法可獲得更高的客觀質(zhì)量和主觀視覺效果。