王 冰,彭 強,陳 健
西南交通大學 信息科學與技術(shù)學院,成都 611756
隨著通信技術(shù)、計算機網(wǎng)絡(luò)技術(shù)以及多媒體技術(shù)的發(fā)展,視頻會議、遠程醫(yī)療以及網(wǎng)絡(luò)流媒體等與視頻相關(guān)的應(yīng)用已成為人們生活中必不可少的部分。這些技術(shù)的發(fā)展與應(yīng)用在豐富了人們生活的同時,也對通信系統(tǒng)的發(fā)展帶來了巨大的挑戰(zhàn)。由于在傳輸之前必須要對視頻信號進行壓縮編碼以降低碼率,壓縮后的碼流對傳輸差錯十分敏感,使得視頻傳輸過程中面臨著不可避免的差錯與損失。常用的H.264[1]、HEVC[2]視頻編碼標準采用了一系列的視頻壓縮新技術(shù),使得其具有高效的壓縮性能,但是良好的壓縮特性會導致視頻碼流對差錯信息更加敏感,一旦出現(xiàn)丟包等差錯事件,這些錯誤將在時間和空間上迅速蔓延,導致視頻質(zhì)量急劇下降,因此如何提高壓縮碼流的抗差錯能力是現(xiàn)有視頻編碼標準的一大挑戰(zhàn)。差錯控制技術(shù)中的差錯掩蓋技術(shù)作為視頻通信系統(tǒng)中抗差錯的最后一道防線,起著不可或缺的重要作用[3]。
邊界匹配算法[4]是最為基礎(chǔ)及常用的差錯掩蓋算法,該算法的特點是計算量小,在很多場景下都能夠得到可以接受的掩蓋效果。然而該算法只考慮候選塊與四周正確接收塊的水平垂直邊界差,沒有考慮到參考幀中候選塊周圍區(qū)域像素與當前幀丟失宏塊周圍區(qū)域像素的匹配程度,即只利用了空域的平滑性而沒有利用時域相關(guān)性;并且該算法用于尋找最佳匹配塊的候選運動向量來自于丟失塊周圍區(qū)域正確接收宏塊的運動向量,當丟失塊運動向量發(fā)生較大變化時,很難在有限的候選運動矢量集中找到一個理想的運動矢量,這時只用時域差錯掩蓋算法并不能取得理想的掩蓋效果,甚至會出現(xiàn)塊效應(yīng)失真等現(xiàn)象。之后,Peng等人提出了運動向量外推算法(motion vector extrapolation,MVE)[5],主要是根據(jù)視頻的時域相關(guān)性較強的特點,假定場景中目標的運動具有一致性,將前一幀中所有子塊的運動向量進行外推,選擇候選子塊中與受損子塊重疊區(qū)域最大的子塊的運動向量作為丟失子塊的運動向量,然后通過運動補償?shù)玫絹G失宏塊的最佳替代塊。Zhou等人在文獻[5]的基礎(chǔ)上,利用丟失宏塊周圍正確接收宏塊的運動向量,提出了一種更加精細的運動向量外推算法[6],提高了MVE的掩蓋質(zhì)量。Lin等人在上述基礎(chǔ)上,利用丟失宏塊周圍正確接收宏塊的殘差對運動向量進行加權(quán),提出了基于殘差的運動向量外推算法(residual-based motion vector extrapolation,RMVE)[7]。該算法不需要周圍區(qū)域的運動向量信息,在運動物體平滑的場景中可以得到很好的掩蓋效果,但是在前景和背景交界處以及運動非線性的情況下,該算法的差錯掩蓋效果較差。上述差錯掩蓋算法的主要思路都是尋找或插值出相似塊作為當前塊的最佳替代塊,然而在運動向量丟失的情況下,不管采用哪種方式差生的替代塊都會與原始宏塊有一定的誤差。因此,文獻[8]提出了一種基于非局部均值去噪算法的時空域差錯掩蓋算法(denoised temporal extrapolation refinement,DTER)。該算法將時域差錯掩蓋后的視頻看成是受噪聲污染的視頻,然后對其進行去噪處理。DTER在很多視頻場景中能夠取得較好的掩蓋效果,但是它的計算復(fù)雜度非常高,不適用于實時應(yīng)用[9]。
針對現(xiàn)有算法的不足,本文提出了基于塊劃分的SSIM(structural similarity index)和邊界聯(lián)合匹配的空時域自適應(yīng)差錯掩蓋算法。首先,利用丟失宏塊周圍正確接收的邊緣信息,將宏塊劃分成不同形狀的子塊,劃分的原則是保持子塊的邊緣完整性,即盡量確保穿過宏塊的邊緣位于同一個子塊中,這樣在對子塊進行掩蓋時可以保證邊緣的完整性。其次,本文算法利用SSIM和邊界匹配準則選擇最佳替代子塊。該最佳替代塊不僅需要與周圍邊界保持平滑,而且該替代塊周圍區(qū)域與當前幀丟失子塊的周圍區(qū)域的結(jié)構(gòu)性失真應(yīng)該盡可能得小,遵循此原則得到的替代塊具有更好的視覺感知質(zhì)量,而且時間復(fù)雜度較低,適用于實時應(yīng)用。
本文的組織結(jié)構(gòu)如下:第2章介紹了算法采用的自適應(yīng)分塊策略;第3章詳細介紹了基于SSIM和邊界聯(lián)合匹配的空時域差錯掩蓋算法;第4章通過實驗對提出的算法進行了有效性與時間復(fù)雜度分析;第5章對全文進行總結(jié)。
由于邊界匹配差錯掩蓋算法的最小處理單位為16×16的宏塊,在紋理信息較為復(fù)雜的情況下,此方法不夠精細。因此,有必要將宏塊劃分成不同的子塊單獨進行差錯掩蓋。現(xiàn)有的研究中,一部分相關(guān)算法是利用丟失宏塊周圍正確接受宏塊的模式進行丟失宏塊的模式預(yù)判;另外一部分算法是直接將宏塊劃分為4×4的子塊進行掩蓋。由于相鄰宏塊的分塊模式有時會存在較大不同,利用第一種思路進行預(yù)判時,如果分塊模式預(yù)測得不合適,則無法取得較好的掩蓋效果;第二種思路的核心是將宏塊劃分成較小的單位,從而提高算法的掩蓋精度,但是這在很大程度上會增加后續(xù)算法的時間復(fù)雜度。本文在綜合考慮時間復(fù)雜度和可靠性的基礎(chǔ)上,采用了一種簡單的基于丟失宏塊邊緣紋理特點的自適應(yīng)分塊策略,該算法通過對丟失宏塊周圍區(qū)域正確接收的邊界像素進行邊緣檢測,選擇4條邊的最強邊緣點,利用邊緣點的特征距離,選擇最佳匹配邊緣點對,并將通過此邊緣點對的直線看作是最有可能穿過丟失宏塊的邊緣。根據(jù)邊緣點對在邊緣的位置坐標,對宏塊進行模式劃分,確保這兩個邊緣點對在同一個子塊中,即確保子塊邊緣的完整性,之后對每一個子塊單獨進行差錯掩蓋算法。
邊緣是在亮度值上發(fā)生突變或者不連續(xù)的點,人眼對邊緣的失真非常敏感。假設(shè)丟失宏塊上下左右四周宏塊均正確接收,按照式(1)、式(2)對丟失宏塊周圍正確接收的邊界像素進行Sobel濾波[10]:
其中,P(x,y)表示外邊界像素值;Hc(x,y)、Hr(x,y)表示Sobel算子,如式(3)所示;Gr(x,y)、Gc(x,y)表示該點的梯度。
在對丟失宏塊邊界正確接收像素進行Sobel邊緣檢測時,會涉及到丟失宏塊內(nèi)邊界像素,而內(nèi)邊界像素在掩蓋之前是無法得到的。因此,本文對邊緣的檢測是在靠近丟失宏塊邊界的第二行或第二列進行的。那么,邊緣檢測像素點梯度的幅值和角度分別如式(4)、式(5)所示:
本文假設(shè)幅度大于給定閾值β的點為邊緣點,并且每條邊只取幅度最大的邊緣點作為最強邊緣點。在此基礎(chǔ)上,定義邊緣點(x,y)的特征向量,并根據(jù)特征向量的特征距離來尋找最強邊緣點中的最佳邊緣匹配對。邊緣點(x,y)的特征向量定義如式(6)所示,兩個最強邊緣點的特征距離定義如式(7)所示:
其中,θ1,2表示連接(x1,y1)與(x2,y2)的直線的傾斜角。如果這兩個點的特征距離在所有計算的特征距離里最小,則認為這兩個點是最佳邊緣匹配點對[10],即最有可能是位于同一邊緣的點。
為了兼顧計算復(fù)雜度和差錯掩蓋質(zhì)量,本文在宏塊的劃分過程中,以8×8的塊為基本單位,并結(jié)合最佳邊緣匹配對的匹配方式對宏塊進行模式劃分。為了保持邊緣的完整性,分塊的準則是最佳匹配對所在的子塊需要作為一個整體進行差錯掩蓋,其他分塊以8×8的單位進行掩蓋。具體分塊模式如圖1所示。
Fig.1 6 block division patterns圖1 宏塊的6種分塊模式
在差錯掩蓋過程中,本文采取了近似的方法,即假設(shè)4條邊界上都存在最強邊緣點,這樣就會存在兩對最佳邊緣匹配對,選擇匹配對特征距離最小的一對邊緣點作為最有可能穿過丟失宏塊的強邊緣,連接這一對最強邊緣點對,如果其以圖1(a)中的4種方式中的任意一種跨過丟失宏塊,那么即認為丟失宏塊應(yīng)該劃分為4個8×8的子塊,分別進行差錯掩蓋。圖1(b)中,最強邊緣點對分別在不同的兩個8×8子塊中,那么這兩個子塊應(yīng)該作為一個整體進行差錯掩蓋。同理,圖1(c)、(d)、(e)的分塊方式以此類推。當最強邊緣點對不存在或者分別位于對角8×8子塊時,為了避免由于分塊造成的子塊間連接處不平滑的情況,這里將宏塊作為一個整體直接進行差錯掩蓋。
傳統(tǒng)的邊界匹配算法是以候選宏塊內(nèi)邊界像素與當前幀丟失宏塊外邊界正確接收的邊界像素之差最小作為最佳匹配準則,這樣做的目的是選擇空間連續(xù)性較好的候選塊作為最佳匹配塊,以確保掩蓋后邊界處盡量平滑。然而該算法并沒有考慮候選宏塊周圍的像素與丟失宏塊周圍像素的相似程度,這樣可能會導致替代塊與周圍區(qū)域不平滑的現(xiàn)象。并且該匹配準則是以對應(yīng)位置像素之差的絕對值為判斷依據(jù),由于人眼對物體的結(jié)構(gòu)失真較為敏感[11],邊界匹配準則在很多情況下也不能選擇更符合人眼視覺特性的匹配塊。本文根據(jù)現(xiàn)有差錯掩蓋算法的不足,提出了基于分塊的SSIM和邊界聯(lián)合匹配的空時域自適應(yīng)差錯掩蓋算法。首先,利用丟失宏塊周圍正確接收的邊緣信息,將宏塊劃分為不同形狀的子塊。劃分的原則是保持子塊的邊緣完整性,即盡量確保穿過宏塊的邊緣位于同一子塊中,這樣在對子塊進行掩蓋時可以保證邊緣的完整性。接下來利用SSIM和邊界匹配準則共同選擇最佳替代子塊,這樣不僅可以使替代塊與周圍邊界保持平滑,而且可以保證選擇的子塊周圍區(qū)域與當前幀丟失子塊的周圍區(qū)域的結(jié)構(gòu)性失真較小,實現(xiàn)更好的結(jié)構(gòu)對齊,使得掩蓋后的視頻圖像更加符合人眼的視覺特性,得到更好的視覺感知質(zhì)量。
由于丟失宏塊內(nèi)的像素值為0,那么計算SSIM值時只能在子塊周圍區(qū)域進行,在這種情況下,當原始子塊與替代子塊的結(jié)構(gòu)相差很大,而周圍區(qū)域結(jié)構(gòu)比較相似時,也能夠得到較高的SSIM值,但是該替代塊卻不能成為最佳替代塊。為了解決上述問題,在利用SSIM與邊界匹配聯(lián)合準則對丟失宏塊進行計算之前,先對丟失宏塊進行一個空域插值,這樣計算SSIM值的區(qū)域就可以包括丟失子塊。雖然對丟失宏塊插值并不能代表其真實值,但這種思想可以在一定程度上彌補在計算SSIM時完全排除丟失子塊像素值的缺點。
現(xiàn)有的研究中有很多插值算法,在綜合考慮計算復(fù)雜度和插值效果兩個因素后,本文根據(jù)預(yù)判的丟失塊紋理信息的情況選擇不同的插值算法。具體過程如下,首先按圖2所示將平面均分為32個區(qū)間,對應(yīng)16個方向,設(shè)置16個計數(shù)器C0,C1,…,C15,利用式(1)到式(5)在丟失宏塊四周向外擴展8個像素寬的區(qū)域內(nèi)進行Sobel邊緣檢測,得到每個像素p梯度的幅值和方向。當梯度的方向落入某一區(qū)間后,就將其歸類為該區(qū)間對應(yīng)的方向;當從p出發(fā)沿梯度方向的直線穿過丟失塊區(qū)域時,將該方向?qū)?yīng)的計數(shù)器Ck累加上該像素梯度的幅值;所有的像素計算完成后,將計數(shù)器大于閾值Th=1 300的點定義為穿過丟失宏塊的強方向[12]。當強方向個數(shù)為0時,說明丟失區(qū)域為平滑區(qū)域,此時對該區(qū)域采用雙線性插值[13];當強方向個數(shù)不為0時,采用多方向插值加權(quán)平均算法進行插值[14]。
Fig.2 Schematic of plane's partition圖2 平面均分示意圖
本文算法通過計算候選子塊周圍正確接收區(qū)域與丟失子塊對應(yīng)位置周圍區(qū)域的SSIM值,確定其結(jié)構(gòu)相似性,并且計算候選子塊內(nèi)邊界與丟失宏塊的外邊界之差確定兩者在空域相鄰位置的平滑性[15],最后聯(lián)合這兩個因素,提出了一種基于SSIM于邊界聯(lián)合匹配的準則,并利用此準則,確定最佳匹配塊。
由于本文算法是利用丟失宏塊的外邊界的邊緣特征將宏塊劃分為6種模式,因此在計算子塊的SSIM值時,也需要根據(jù)上述宏塊的劃分模式對不同子塊的周圍區(qū)域進行選取,具體計算區(qū)域如圖3所示。圖中不同深度顏色的塊代表宏塊所劃分的子塊,每個子塊連同包圍它的白色區(qū)域共同構(gòu)成計算該子塊SSIM值的區(qū)域,整個白色區(qū)域的范圍是以宏塊為中心向外擴展8個像素的寬度。將任意子塊計算SSIM值的區(qū)域記為S,假設(shè)v(x,y,t)表示當前幀空間坐標為(x,y)的像素值,當前待掩蓋子塊的候選運動向量為(vx,vy),那么它在參考幀中所對應(yīng)的像素為v(x-vx,y-vy,τ-1)。當前幀中丟失區(qū)域用空域差值所得,那么當前待掩蓋像素與其在參考幀中對應(yīng)的像素的SSIM值為式(8)所示。區(qū)域內(nèi)總的SSIM值為各像素點SSIM值的平均,SSIM的取值在[-1,1]之間。
Fig.3 Computational area of SSIM in 6 block divisions圖3 6種分塊模式下的SSIM計算區(qū)域
其中,μc、μf分別表示以像素v(x,y,τ)和v(x-vx,y-vy,τ-1)為中心的局部圖像塊的均值;σc、σf分別表示以像素v(x,y,τ)和v(x-vx,y-vy,τ-1)為中心的局部圖像塊的標準差;σcf如式(9)所示,局部圖像塊的大小為N×N,其中N=7,C1=(0.01×255)2,C2=(0.03×255)2。
根據(jù)SSIM算法可知,SSIM值反映了兩個區(qū)域的結(jié)構(gòu)相似程度,SSIM值越高則說明結(jié)構(gòu)相似性越好;而SSIM值越低則說明結(jié)構(gòu)失真越嚴重。除了考慮結(jié)構(gòu)相似度,還需要考慮替代塊與周圍區(qū)域的空間相關(guān)性,即需要計算丟失塊外邊界與替代塊內(nèi)邊界的SAD(sum of absolute defferences)值。SAD值越小,說明平滑程度越好;反之說明內(nèi)外邊界差距越大。
本文提出的算法將SSIM與邊界匹配放在同一尺度下,根據(jù)式(10)選擇匹配準則:
其中,N表示可用于該子塊尋找最佳替代塊的候選運動向量的個數(shù);ssimi表示在第i個候選運動向量vi情況下該子塊對應(yīng)區(qū)域的SSIM值;SADi表示通過vi運動補償所得到的替代塊的內(nèi)邊界與丟失塊可利用的外邊界像素差的絕對值取平均;A為常數(shù),用來控制衰減程度。
具體實現(xiàn)SSIM與邊界聯(lián)合匹配準則時,由于宏塊是劃分成不同的子塊進行掩蓋,為了能夠充分利用掩蓋后的子塊位于丟失宏塊內(nèi)的邊界信息,確保子塊之間邊界像素的連續(xù)性,本文采用最佳匹配子塊優(yōu)先掩蓋的原則。主要分為以下幾步:
步驟1選取候選運動矢量集中的任一運動矢量作為丟失子塊的運動向量。計算候選子塊內(nèi)邊界和丟失宏塊外邊界像素之差的絕對值,并取其平均值。結(jié)合上述方法計算出SSIM值,利用聯(lián)合匹配準則式(10)計算出子塊的匹配值v1。
步驟2用相同的方法,計算該子塊選取候選運動矢量集中其他運動矢量時的匹配值v2,v3,…,選取匹配值中最大的值對應(yīng)的候選塊作為該子塊的最佳替代塊。若丟失宏塊未劃分為子塊,則結(jié)束;若劃分為不同子塊,則繼續(xù)進行下述掩蓋。
步驟3用上述方法計算該宏塊所劃分的其他子塊的最佳替代塊,得到每一子塊的最佳匹配值,選取其中最大的最佳匹配值對應(yīng)的子塊作為最先掩蓋的子塊,并將其對應(yīng)的最佳替代塊填入該子塊中。
步驟4為了保證子塊間像素的連續(xù)性,接下來用相同的方法掩蓋剩余子塊中與第一個已掩蓋子塊有相鄰邊界的兩個子塊。不過在考慮內(nèi)外邊界之差時,需要考慮與已有掩蓋子塊邊界的像素之差。
步驟5用相同的匹配準則掩蓋第4步之后仍未掩蓋的子塊。
以圖4為例,宏塊的劃分模式為模式a,如果上述步驟3中得到的編號1、2、3的子塊的最佳匹配塊對應(yīng)的最佳匹配值為v1_max、v2_max、v3_max,假定v2_max最大,那么首先將該值對應(yīng)的最佳替代塊作為對應(yīng)2子塊的替代塊。在掩蓋剩余兩個子塊時,計算邊界像素差值時,要考慮已掩蓋子塊的邊信息。用相同的方法,計算出子塊1、3的最佳匹配塊對應(yīng)的匹配值v′1_max、v′3_max。如果v′1_max最大,那么先掩蓋子塊1,最后掩蓋子塊3。
Fig.4 Concealment order of sub-blocks圖4 子塊的掩蓋順序
本文采用的候選運動向量集包括:(1)丟失宏塊上下左右正確接收的靠近丟失宏塊邊界的子塊的運動向量;(2)這些周圍子塊運動向量的均值;(3)參考幀中相同位置的子塊的運動向量。也就是說用于確定丟失宏塊的最佳替代塊的候選運動矢量集是有限的,這樣做的目的是提高算法的效率。然而,有時會出現(xiàn)候選運動矢量集中的運動矢量與丟失宏塊原來的運動向量有較大區(qū)別,不管選取運動矢量集中的哪一個運動矢量作為丟失宏塊的運動向量都是不合適的。在這種情況下,差錯掩蓋的效果較差,可能會出現(xiàn)明顯的塊效應(yīng)或者明顯的和周圍正確接收區(qū)域不匹配的現(xiàn)象。針對以上情況,本文采用空時域相結(jié)合的自適應(yīng)差錯掩蓋算法。算法的主要思想是先根據(jù)候選運動矢量集,利用上述SSIM與邊界聯(lián)合匹配準則確定各子塊的最佳替代塊,然后判斷各子塊的最佳匹配塊對應(yīng)典型ssimi、e-SADi/A是否分別大于給定的閾值ε1、ε2。當ssimi小于ε1時,說明最佳替代塊周圍區(qū)域與丟失塊周圍區(qū)域結(jié)構(gòu)相似性較低,該替代塊不能獲得很好的掩蓋效果;當e-SADi/A小于ε2時,說明最佳替代塊與周圍區(qū)域的平滑性不好,這時需要采用空域插值方法,利用該子塊周圍可以得到的鄰域宏塊的邊界對該子塊進行插值,并將插值像素作為丟失子塊的替代塊。
本文中的ε1、ε2的選取與丟失宏塊的紋理信息有關(guān),當丟失宏塊紋理信息較豐富時,空域插值會使掩蓋后的區(qū)域變得模糊,此時應(yīng)當減少使用空域插值掩蓋,即ε1、ε2應(yīng)當設(shè)置得較??;而當丟失宏塊較為平坦時,ε1、ε2設(shè)置得相對較大。丟失宏塊紋理信息是根據(jù)選擇空域插值算法時計算的強方向個數(shù)判斷的。當強方向大于8個時,認為丟失區(qū)域?qū)儆诩y理復(fù)雜的區(qū)域,應(yīng)當將ε1、ε2設(shè)置得較小,在本文中ε1=0.3,ε2=0.3;當強方向小于8個時認為丟失區(qū)域為平坦區(qū)域,在時域掩蓋不理想的情況下,可以較多地進行空域插值掩蓋,此時設(shè)置ε1=0.45,ε2=0.55。
本文采用JM14.0[16]平臺,在該平臺的差錯掩蓋模塊中實現(xiàn)并驗證算法性能。其他3種對比算法分別為JM14.0 使用的邊界匹配算法[4]、DTER[8]和 RMVE[7]。實驗選取具有代表性的5種CIF測試序列,分別為City序列、Crew序列、Tempete序列、Foreman序列、Football序列。測試序列均為100幀,幀率為30frame/s,量化參數(shù)為28,編碼結(jié)構(gòu)為IPPP。在本文算法中,固定閾值是通過對本次實驗測試序列之外的視頻序列進行實驗得到的,閾值的確定原則為在不同的序列下均能取得較好的差錯掩蓋效果。設(shè)定幅度大于給定閾值β=50的點為邊緣點,式(10)中常數(shù)A=35。實驗硬件配置為:CPU,Intel?CoreTM2 Duo CPU T6670@2.20 GHz;RAM,2.00 GB。
4.1.1 掩蓋效果的客觀質(zhì)量比較
表1為5個測試序列在丟包率(packet loss rate,PLR)分別為3%、5%、10%以及20%的情況下本文算法以及對比算法的差錯掩蓋性能。其中峰值信噪比(peak signal to noise ratio,PSNR)反映的是掩蓋后視頻序列的信噪比,計算方法為式(11)所示,其中n是一個像素值所用的比特數(shù),W、H表示一幀的長度和寬度,f(i,j)和f′(i,j)分別表示原始視頻幀和失真視頻幀;而SSIM衡量的是掩蓋后的視頻與原始視頻序列的結(jié)構(gòu)相似性,由于人眼對結(jié)構(gòu)失真特別敏感,因此SSIM值也反映了掩蓋后視頻序列的視覺質(zhì)量。表1中加粗的PSNR和SSIM數(shù)值表示不同掩蓋方法對同一測試序列實驗時PSNR和SSIM的最大值。
從表1可以看出,對于City測試序列,本文算法在3%~20%丟包率時,PSNR值相對JM14.0有0.56~1.60 dB的提升;并且本文算法的匹配準則考慮了結(jié)構(gòu)失真,可以選擇結(jié)構(gòu)失真較小的替代塊作為最佳匹配塊,因此SSIM值為4種算法中的最高值,即本文算法可以在一定程度上提高視頻序列的視覺質(zhì)量。
Table 1 Comparison of 4 algorithms'error concealment performance for different packet loss rates(PSNR,SSIM)表1 4種算法在不同丟包率下差錯掩蓋性能比較(PSNR、SSIM)
對于Crew測試序列而言,本文算法在不同的丟包率下,相對于JM14.0、DTER和RMVE算法分別有0.85~1.09 dB、0.04~0.30 dB和0.72~1.43 dB的提升,并且本文算法的SSIM值在不同丟包率下也是最高的。造成這樣結(jié)果的原因是Crew序列的場景中有照相機一直拍攝,閃光燈的作用會使相鄰幀存在較大的亮度差。當這些幀發(fā)生丟包時,利用JM14.0和RMVE算法,尋找的最佳替代塊可能與周圍正確接受的區(qū)域有較大的亮度差,導致替代塊的平滑性差,因此這兩種算法并不能取得較好的掩蓋效果。但是DTER算法可以利用非局部均值去噪算法對時域掩蓋后的替代塊進行處理,利用周圍正確接收區(qū)域的像素進行加權(quán),提高替代塊與周圍區(qū)域的平滑性。而本文提出的算法是空時域自適應(yīng)算法,當替代塊的平滑性較差時,會使用空域插值算法進行掩蓋,因此可以取得較好的掩蓋效果。
對于Tempete序列,本文算法在3%~20%丟包率下,相對于JM14.0有0.71~1.17 dB的提升,而與DTER和RMVE算法效果相當。但從表1中可以看出本文算法的SSIM均為最高,說明本文算法能夠很好地保持視頻序列的結(jié)構(gòu)特征。
對于Foreman測試序列而言,本文算法在3%~20%丟包率下相對于JM14.0、DTER和RMVE分別有1.13~1.76 dB、0.35~0.51 dB和0.82~1.16 dB的提升。造成這樣結(jié)果的原因是此測試序列場景中人講話時存在頭部晃動的情況,即運動的非線性運動較為明顯。JM14.0采用的邊界匹配差錯掩蓋算法是利用周圍運動向量作為候選運動向量,而RMVE是利用運動向量外推獲得當前塊的運動向量,這兩種算法在非線性運動較為強烈的場景中并不能取得很好的掩蓋效果。本文算法是基于分塊的,并且在時域掩蓋效果不好時,會選擇空域掩蓋算法。Foreman序列的紋理較為簡單,空域插值也可以獲得比較好的效果。
對于Football測試序列而言,本文算法在不同丟包率下,相對于JM14.0、DTER和RMVE分別有1.28~1.78 dB、0.43~0.93 dB和1.04~1.27 dB的提升。該視頻場景運動較為復(fù)雜且劇烈,非線性運動較為明顯,因此其他3種對比算法均未能獲得較好的掩蓋效果。由于場景中紋理并不復(fù)雜,在時域掩蓋效果不好時,本文算法會自動選擇空域掩蓋算法,掩蓋效果較好。
4.1.2 掩蓋效果主觀質(zhì)量比較
由于視頻的最終受體為觀測者本身,為了說明本文差錯掩蓋算法的主觀質(zhì)量效果,圖5、圖6分別展示了City以及Foreman測試序列在不同算法下的掩蓋效果。其中圖5為City測試序列的第44幀在丟包率為10%時使用不同差錯掩蓋算法后的主觀視覺質(zhì)量對比。圖6為Foreman測試序列的第58幀在丟包率為10%時使用不同差錯掩蓋算法后的主觀視覺質(zhì)量對比。圖5(f)和圖6(f)中的紅圈標注處是本文算法相對其他3種算法掩蓋效果主觀質(zhì)量有明顯提升的地方。從圖5和圖6中可以看出本文算法在提升掩蓋視頻視覺質(zhì)量上取得了較好效果。
Fig.5 Subjective results for error concealment of sequence City圖5 City測試序列差錯掩蓋后主觀視覺質(zhì)量
表2為不同算法在3%~5%不同丟包率下解碼測試序列的平均解碼幀率,平均解碼幀率值越大,表示單位時間內(nèi)解碼的視頻幀數(shù)越多,即執(zhí)行效率更高。從表2可知,本文算法的時間復(fù)雜度比JM14.0和RMVE差錯掩蓋算法的時間復(fù)雜度高,并且隨著丟包率的增加,本文算法的時間復(fù)雜度會相對增加,增加的時間開銷主要是由于SSIM的計算以及對宏塊子塊的差錯掩蓋操作,但是基于本文算法在PSNR以及SSIM值上的提升,增加的時間復(fù)雜度是在可以接受的范圍之內(nèi)。從表2中可以看出,本文算法的時間復(fù)雜度遠低于DTER算法。
Fig.6 Subjective results for error concealment of sequence Foreman圖6 Foreman測試序列差錯掩蓋后主觀視覺質(zhì)量
Table 2 Comparison of 4 algorithms'time complexity for different packet loss rates表2 4種算法在不同丟包率下的時間復(fù)雜度比較
本文算法在分析已有差錯掩蓋算法缺點的基礎(chǔ)上,提出了基于分塊的SSIM和邊界聯(lián)合匹配的空時域自適應(yīng)差錯掩蓋算法。利用丟失宏塊周圍正確接收的邊緣信息,將宏塊劃分成不同形狀的子塊,盡量確保穿過宏塊的邊緣位于同一個子塊中,這樣在對子塊進行掩蓋時可以保證邊緣的完整性。然后,利用SSIM和邊界聯(lián)合匹配準則的最佳替代子塊不僅可以盡量保證替代塊與周圍邊界的平滑,而且選擇的子塊周圍區(qū)域與當前幀丟失子塊的周圍區(qū)域的結(jié)構(gòu)性失真較小,這樣的替代塊具有更好的視覺感知質(zhì)量。最后通過比較掩蓋后的質(zhì)量指數(shù)與給定閾值來判斷時域掩蓋質(zhì)量是否采用空域插值掩蓋。通過實驗可以看出,本文算法在不同的丟包率下,相對于JM14.0和RMVE算法分別平均獲得0.91~1.48 dB和0.86~1.29 dB的提升。并且本文算法在不同丟包率以及不同測試序列下取得的SSIM值均高于其他算法,這說明本文算法選擇的最佳替代塊與丟失塊的結(jié)構(gòu)相似性高。結(jié)合圖5、圖6可知,利用本文算法掩蓋后的視頻圖像具有更高的主觀視覺質(zhì)量。本文算法的掩蓋效果與DTER算法相似,但是在時間復(fù)雜度上,本文算法的效率比DTER算法高40~60倍。綜上所述,本文算法在權(quán)衡掩蓋效果和時間復(fù)雜度后,明顯優(yōu)于其他對比算法。