謝曉燕,王安琪+,朱 筠,胡傳瞻,杜卓林
(1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安 710121;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710121)
3D-HEVC標(biāo)準(zhǔn)[1]采用了多視點(diǎn)加深度(multi-view plus depth,MVD)的編碼格式。MVD包含紋理圖序列和相對(duì)應(yīng)的深度圖序列。紋理圖具有豐富的細(xì)節(jié)信息和少部分較為平坦的紋理區(qū)域,而深度圖的平坦區(qū)域占比高達(dá)85%[2],只有在物體的邊界處有著陡峭的邊緣。因此紋理圖編碼需要側(cè)重于每個(gè)像素點(diǎn)的細(xì)節(jié)信息,而深度圖只需要重點(diǎn)保護(hù)圖像中各對(duì)象的邊緣信息[3]。
針對(duì)如何利用深度圖獨(dú)有的內(nèi)容特性,降低在幀間預(yù)測(cè)部分的編碼復(fù)雜度,專(zhuān)家提出了一些有效的解決方案。文獻(xiàn)[4]針對(duì)深度圖平坦塊在運(yùn)動(dòng)估計(jì)時(shí)采用了復(fù)雜度較高的全搜索(full search,F(xiàn)S)算法或者TZSearch算法進(jìn)行塊匹配,而導(dǎo)致了不必要計(jì)算量的問(wèn)題,提出使用輕量級(jí)的菱形搜索(diamond search,DS)算法進(jìn)行塊匹配,但是忽略了深度圖的邊緣區(qū)域更難預(yù)測(cè)這一問(wèn)題。文獻(xiàn)[5]在文獻(xiàn)[4]的基礎(chǔ)上提出對(duì)深度圖進(jìn)行分類(lèi),對(duì)不同區(qū)域采用不同的搜索算法,有效降低了運(yùn)動(dòng)估計(jì)搜索點(diǎn)數(shù)。以上算法都是利用深度圖的特性,從軟件算法層面減少深度圖的編碼時(shí)間,但是無(wú)法滿足實(shí)時(shí)視頻編碼的需求。因此,多媒體工程師嘗試把視頻算法向FPGA、ASIC上移植[6],文獻(xiàn)[7]、文獻(xiàn)[8]分別基于FS、DS算法設(shè)計(jì)了專(zhuān)用硬件架構(gòu)。
綜上,針對(duì)深度圖特性的算法優(yōu)化和硬件加速是改善3D-HEVC運(yùn)動(dòng)估計(jì)模塊計(jì)算量和編碼效率的有效手段,但是現(xiàn)有文獻(xiàn)還未提出一種易于在硬件上實(shí)現(xiàn)且利用深度圖特性的運(yùn)動(dòng)估計(jì)算法。本文利用深度圖的特性,在運(yùn)動(dòng)估計(jì)前增加預(yù)處理模塊對(duì)編碼塊進(jìn)行分類(lèi),為邊緣和平坦區(qū)域選擇不同的搜索算法,在保證編碼質(zhì)量的前提下,降低平坦塊的計(jì)算量;同時(shí)對(duì)優(yōu)化后的算法基于陣列處理器并行實(shí)現(xiàn),加快運(yùn)動(dòng)估計(jì)的計(jì)算速度,達(dá)到算法效率、編碼質(zhì)量和硬件實(shí)現(xiàn)的良好折中。
在3D-HEVC的深度圖幀間編碼過(guò)程中,延用了HEVC紋理圖的運(yùn)動(dòng)估計(jì)技術(shù)。如圖1所示,對(duì)需要編碼的當(dāng)前幀,以塊為單位在參考幀的特定區(qū)域內(nèi)進(jìn)行搜索,并按照一定的塊匹配準(zhǔn)則尋找到最佳匹配塊。當(dāng)前塊與最佳匹配塊之間的相對(duì)位移就是運(yùn)動(dòng)矢量。
圖1 深度圖運(yùn)動(dòng)估計(jì)原理
通常采用絕對(duì)差值和(sum of absolute difference,SAD)準(zhǔn)則來(lái)判斷當(dāng)前塊與參考?jí)K之間的匹配程度,SAD值越低,則兩個(gè)編碼塊的匹配程度越高。SAD的計(jì)算方法如式(1)所示
(1)
式中:對(duì)于大小為M×N的編碼塊,fi(m,n)表示第i幀中坐標(biāo)為(m,n)處的像素值,fi-1(m+x,n+y)表示第i-1幀中坐標(biāo)為(m+x,n+y)處的像素值,(x,y)表示運(yùn)動(dòng)矢量。
在3D-HEVC標(biāo)準(zhǔn)測(cè)試軟件中,推薦了FS和TZSearch兩種搜索最佳匹配塊的算法。FS算法需要將搜索窗中所有位移的參考?jí)K逐一地與當(dāng)前塊進(jìn)行比較,尋找SAD值最小的最佳匹配塊。TZSearch算法結(jié)合了DS算法和光柵搜索,能夠極大減少運(yùn)動(dòng)搜索點(diǎn)數(shù)同時(shí)保持編碼性能。但是這兩種搜索算法是針對(duì)變化復(fù)雜的紋理圖屬性設(shè)計(jì)的,當(dāng)被用于平坦區(qū)域?yàn)橹饕卣鞯纳疃葓D時(shí),會(huì)導(dǎo)致較多的運(yùn)動(dòng)搜索點(diǎn)數(shù),使得計(jì)算時(shí)間增加。在3D-HEVC深度圖編碼中,運(yùn)動(dòng)估計(jì)模塊的計(jì)算量占深度圖編碼總計(jì)算量的19.74%[4]。因此如果引入輕量級(jí)的搜索算法將會(huì)大大降低運(yùn)動(dòng)估計(jì)模塊的計(jì)算開(kāi)銷(xiāo)。
在運(yùn)動(dòng)圖像中,中心偏置特性反映了視頻圖像幀間運(yùn)動(dòng)的強(qiáng)烈程度。當(dāng)幀間運(yùn)動(dòng)較小時(shí)運(yùn)動(dòng)矢量總會(huì)高度聚集在搜索窗口的中心位置,通常是兩個(gè)像素為半徑的范圍。該特性通常用以減少搜索點(diǎn)數(shù),提高搜索效率。本文對(duì)平坦區(qū)域和邊緣區(qū)域編碼塊運(yùn)動(dòng)矢量的分布進(jìn)行了研究,發(fā)現(xiàn)平坦區(qū)域運(yùn)動(dòng)矢量的中心偏置特性非常明顯,如圖2所示。圖2對(duì)深度圖測(cè)試序列Balloons中編碼塊的SAD值進(jìn)行了統(tǒng)計(jì)。其中,圖2(a)、圖2(b)分別為第45幀和第46幀的部分區(qū)域。圖2(b)所示標(biāo)號(hào)為1,2的部分為第46幀的兩個(gè)16×16的編碼塊??梢钥闯鰳?biāo)號(hào)為1的編碼塊位于邊緣區(qū)域,標(biāo)號(hào)為2的編碼塊位于平坦區(qū)域,它們?cè)诘?5幀中的同位塊和搜索窗位置如圖2(a)所示。圖2(c)、圖2(d)分別給出了對(duì)第46幀編碼塊1和編碼塊2在第45幀對(duì)應(yīng)搜索窗中應(yīng)用FS算法獲得的SAD值分布。從圖2(c)可以看出,邊緣區(qū)域編碼塊的SAD值變化復(fù)雜,且較低的SAD值距離搜索區(qū)域中心點(diǎn)(40,40)較遠(yuǎn),所以運(yùn)動(dòng)矢量沒(méi)有表現(xiàn)出較為明顯的中心偏置分布特性;而圖2(d)中平坦區(qū)域編碼塊的SAD值變化平緩,且最佳的SAD值高度集中分布在搜索區(qū)域中心點(diǎn)的附近位置,其運(yùn)動(dòng)矢量更具有中心偏置分布特性。
圖2 邊緣、平坦區(qū)域SAD值分布
因此,邊緣區(qū)域的運(yùn)動(dòng)矢量過(guò)于分散,必須選取精細(xì)型的搜索算法,才能在搜索窗中找到最佳的SAD值;而對(duì)平坦區(qū)域則可以利用其運(yùn)動(dòng)矢量的中心偏置分布特性,使用輕量級(jí)的快速搜索算法,減少搜索次數(shù),提高收斂速度。
若要在硬件上實(shí)現(xiàn)深度圖運(yùn)動(dòng)估計(jì)算法,則選取的搜索算法模板不僅要適合深度圖的SAD值分布還要具有較天然的操作可并行性。TZSearch算法可以達(dá)到和FS算法相差不多的編碼質(zhì)量并且降低了運(yùn)動(dòng)搜索點(diǎn)數(shù),但是TZSearch算法在搜索時(shí)采用了多個(gè)搜索模板,使得搜索路徑不確定且數(shù)據(jù)讀取不規(guī)則,因而不利于算法的并行實(shí)現(xiàn);考慮到FS算法計(jì)算結(jié)構(gòu)簡(jiǎn)單且易于并行處理,本文對(duì)深度圖中的邊緣區(qū)域采用了FS算法。此外,考慮到DS算法能夠充分利用運(yùn)動(dòng)矢量的中心偏置分布特性,優(yōu)先計(jì)算搜索窗口的中心點(diǎn),對(duì)于小運(yùn)動(dòng)的視頻序列有較好的預(yù)測(cè)結(jié)果[9],非常契合深度圖大范圍平坦區(qū)域的特點(diǎn),本文選擇DS算法處理深度圖的平坦區(qū)域。
如果要對(duì)不同類(lèi)型區(qū)域編碼塊使用不同的搜索算法,就需要增加預(yù)處理模塊,對(duì)編碼塊是平坦或者邊緣進(jìn)行判定。常用的深度圖像邊緣檢測(cè)方法有兩大類(lèi),一類(lèi)是利用邊緣檢測(cè)算子提取圖像的邊緣,該方法在計(jì)算過(guò)程中采取了大量的卷積操作,使得計(jì)算量增加,且邊緣檢測(cè)算子對(duì)圖像噪聲敏感。另一類(lèi)是通過(guò)統(tǒng)計(jì)分析的方法得到區(qū)分邊緣和平坦區(qū)域的經(jīng)驗(yàn)閾值,文獻(xiàn)[4]采用編碼塊4個(gè)角的最大差值對(duì)深度圖進(jìn)行分類(lèi),若最大差值大于閾值則判定為邊緣塊,反之則判定為平坦塊,大大降低了計(jì)算開(kāi)銷(xiāo),但是會(huì)對(duì)邊緣位于編碼塊內(nèi)部的情況會(huì)產(chǎn)生誤判。因此本文針對(duì)該問(wèn)題在文獻(xiàn)[4]的基礎(chǔ)上引入差異程度Pmax對(duì)深度圖進(jìn)行分類(lèi),該方法計(jì)算開(kāi)銷(xiāo)較小同時(shí)也可以解決文獻(xiàn)[4]存在的誤判問(wèn)題。
以測(cè)試序列Balloons第一幀的深度圖像為例,如圖3所示。其中編號(hào)1-4為平坦區(qū)域編碼塊,其像素值均無(wú)變化,編號(hào)5-8為邊緣區(qū)域編碼塊,其像素值有明顯的邊界變化。本文選用一個(gè)編碼塊4個(gè)角的像素值作為基準(zhǔn)像素值,對(duì)編碼塊內(nèi)部的所有像素值分別與4個(gè)基準(zhǔn)像素值作差求得絕對(duì)差值和,選用其中最大的絕對(duì)差值和作為差異程度Pmax。對(duì)一個(gè)大小為M×N的編碼塊,其差異程度Pmax可以通過(guò)式(2)獲得
圖3 Balloons序列深度圖
(2)
式中:f(m,n)表示坐標(biāo)為(m,n)處的像素值,Pi表示第i個(gè)角的基準(zhǔn)像素值。
為了挖掘編碼塊像素值分布特征和差異程度Pmax之間的關(guān)系,本文利用3D-HEVC幀內(nèi)預(yù)測(cè)的模式選擇結(jié)果來(lái)對(duì)深度圖編碼塊的差異程度進(jìn)行分類(lèi)。由于在3D-HEVC幀內(nèi)預(yù)測(cè)中,除了常規(guī)的35種幀內(nèi)預(yù)測(cè)模式,還專(zhuān)門(mén)針對(duì)邊緣區(qū)域新增了深度建模模式(depth model modeling,DMM)。因此若某編碼塊選取常規(guī)幀內(nèi)預(yù)測(cè)模式作為最佳預(yù)測(cè)模式,即該編碼塊更大概率為平坦區(qū)域,而選取DMM作為最佳預(yù)測(cè)模式時(shí),該編碼塊為邊緣區(qū)域的可能性更大。它們所對(duì)應(yīng)的Pmax就可以被用來(lái)作為編碼塊特征的判定依據(jù)。
為此,本文在3D-HEVC測(cè)試平臺(tái)HTM16.0上對(duì)測(cè)試序列進(jìn)行了預(yù)測(cè)模式數(shù)據(jù)統(tǒng)計(jì)。在通用測(cè)試條件(common test condition,CTC)配置下,使用Kendo和Poznan_Street兩組測(cè)試序列,計(jì)算了8×8,16×16,32×32等不同大小編碼單元(coding unit,CU)的Pmax以及該CU選取的幀內(nèi)預(yù)測(cè)模式,并統(tǒng)計(jì)了Pmax在各個(gè)區(qū)間的概率密度。圖4(a)~圖4(c)分別給出了8×8、16×16、32×32CU的Pmax概率密度分布曲線。在圖4(a)中可以看出當(dāng)Pmax小于800時(shí),8×8CU選取常規(guī)的幀內(nèi)預(yù)測(cè)模式概率很大;當(dāng)Pmax大于800時(shí),8×8CU選取DMM的概率很大。因此本文將Pmax等于800作為區(qū)分8×8CU為平坦區(qū)域或者邊緣區(qū)域的閾值TH8×8。同理可以得到16×16CU和32×32CU的閾值。由于尺寸較大的CU包含的像素多,所以16×16CU和32×32CU的閾值會(huì)更高一些。
圖4 Pmax概率密度分布曲線
采用2.1節(jié)和2.2節(jié)的優(yōu)化思路,本文提出了一種基于塊分類(lèi)的深度圖運(yùn)動(dòng)估計(jì)算法,其流程如圖5所示。
圖5 基于塊分類(lèi)的深度圖運(yùn)動(dòng)估計(jì)算法流程
本文所使用的視頻陣列處理器[10]是由項(xiàng)目組自主研發(fā)的一種可重構(gòu)視頻陣列處理器,支持H.264/AVC,MVC,H.265/HEVC等多種視頻編解碼標(biāo)準(zhǔn)。該處理器從邏輯上將陣列劃分成處理元簇(process elements group,PEG),每個(gè)PEG由4×4的處理元(process element,PE)陣列構(gòu)成。每個(gè)PE不僅可以訪問(wèn)自身的存儲(chǔ)器和寄存器,還可以通過(guò)鄰接互連和共享存儲(chǔ)的通信方式訪問(wèn)同一PEG內(nèi)其它PE的數(shù)據(jù)。由于視頻算法中的數(shù)據(jù)處理大部分都是以N×N的矩形塊進(jìn)行的,所以這種專(zhuān)用體系結(jié)構(gòu)相比其它結(jié)構(gòu)能更有效應(yīng)對(duì)視頻算法的并行化設(shè)計(jì)。
通過(guò)對(duì)運(yùn)動(dòng)估計(jì)算法分析發(fā)現(xiàn),每一個(gè)編碼塊依據(jù)其原始像素值、參考像素值及相應(yīng)的搜索算法進(jìn)行塊匹配,獲得該編碼塊的最佳匹配塊。下一個(gè)編碼塊進(jìn)行塊匹配時(shí)所需要的數(shù)據(jù)并不依賴(lài)于上一個(gè)編碼塊的計(jì)算結(jié)果,所以不同編碼塊在塊匹配計(jì)算時(shí)沒(méi)有數(shù)據(jù)相關(guān)性。因此,可以對(duì)多個(gè)編碼塊的計(jì)算使用并行操作以減少編碼時(shí)間。
本文利用視頻陣列處理器的天然并行結(jié)構(gòu),以8×8大小的編碼塊為對(duì)象,對(duì)搜索窗為16×16的深度圖運(yùn)動(dòng)估計(jì)進(jìn)行并行化設(shè)計(jì)。如果同時(shí)對(duì)多個(gè)不同的編碼塊并行進(jìn)行塊匹配,可以大幅度減少運(yùn)動(dòng)估計(jì)算法的周期數(shù),但是卻增加了電路面積和功耗。因此,合理的選擇并行計(jì)算編碼塊的個(gè)數(shù),才能達(dá)到充分利用資源和縮減編碼時(shí)間的效果。
本文從最大化復(fù)用最先被讀取的編碼塊參考像素的角度,來(lái)選取并行計(jì)算的編碼塊。根據(jù)運(yùn)動(dòng)估計(jì)算法,上下左右4個(gè)相鄰編碼塊的搜索窗之間存在大量參考像素的重合,編碼塊1搜索窗第9列到第16列的參考像素為編碼塊2搜索窗的第1列到第8列如圖6(a)所示,編碼塊1搜索窗第9行到第16行的參考像素為編碼塊3搜索窗的第1行到第8行如圖6(b)所示,編碼塊1搜索窗的第9行第9列、第9行第16列、第16行第9列、第16行第16列所圍成8×8搜索區(qū)域是編碼塊4搜索窗的第1行第1列、第1行第8列、第8行第1列、第8行第8列所圍成區(qū)域的參考像素如圖6(c)所示,編碼塊2~編碼塊4的參考像素和編碼塊1搜索窗重合的總像素?cái)?shù)為196個(gè)。如果為4個(gè)編碼塊分別從片外存儲(chǔ)加載搜索窗,將會(huì)有大量的參考像素被重復(fù)的讀取,增加了計(jì)算的總周期數(shù)。但是如果將編碼塊1本地存儲(chǔ)的參考像素復(fù)用到編碼塊2~編碼塊4的參考像素中,對(duì)編碼塊1參考像素的數(shù)據(jù)復(fù)用可以達(dá)到75%,從而有效地減少訪問(wèn)片外存儲(chǔ)器的次數(shù),縮減運(yùn)動(dòng)估計(jì)算法的時(shí)間。綜上所述,本文選擇同時(shí)對(duì)4個(gè)8×8編碼塊并行計(jì)算。
圖6 編碼塊1搜索窗的數(shù)據(jù)復(fù)用
本文采用一個(gè)PEG結(jié)合3.2節(jié)提出的參考像素的數(shù)據(jù)更新方法,對(duì)4個(gè)8×8的編碼塊并行地進(jìn)行第2節(jié)所提優(yōu)化算法的閾值計(jì)算和塊匹配。算法的映射圖如圖7所示,數(shù)據(jù)輸入存儲(chǔ)器(data input memory,DIM)、數(shù)據(jù)輸出存儲(chǔ)器(data output memory,DOM)均為片外存儲(chǔ)器,分別緩存原始視頻序列和參考視頻序列,PE00、PE10分別為原始像素和參考像素加載模塊;PE01、PE02、PE03和PE13為Pmax計(jì)算模塊;PE11、PE12、PE20和PE21為采用FS算法計(jì)算SAD值模塊,PE22、PE23、PE30和PE31為采用DS算法計(jì)算SAD值模塊;PE32為數(shù)據(jù)輸出模塊。具體操作步驟如下:
圖7 優(yōu)化后運(yùn)動(dòng)估計(jì)算法映射
步驟1 原始數(shù)據(jù)的加載。PE00訪問(wèn)DIM,讀取一個(gè)16×16的編碼塊,并將編碼塊1、2、3、4的原始像素值分別下發(fā)給PE01、PE02、PE03和PE13;
步驟2 參考數(shù)據(jù)的加載。PE10訪問(wèn)DOM,按照上述參考像素復(fù)用的方式,將編碼塊1、2、3、4的參考像素值分別下發(fā)給PE11、PE12、PE20和PE21;
步驟3 4個(gè)PE并行為4個(gè)編碼塊計(jì)算Pmax。根據(jù)4個(gè)PE計(jì)算Pmax的不同,4個(gè)編碼塊根據(jù)不同的搜索算法進(jìn)行SAD值的計(jì)算,如果Pmax>TH8×8則跳轉(zhuǎn)至步驟4;如果Pmax 步驟4 PE11、PE12、PE20和PE21根據(jù)FS算法為當(dāng)前編碼塊進(jìn)行塊匹配操作。計(jì)算得到最佳SAD值后,將最佳SAD值對(duì)應(yīng)參考?jí)K的運(yùn)動(dòng)矢量存儲(chǔ)到PE32中。 步驟5 PE22、PE23、PE30和PE31根據(jù)DS算法為當(dāng)前編碼塊進(jìn)行塊匹配操作。計(jì)算得到最佳SAD值后,將最佳SAD值對(duì)應(yīng)的運(yùn)動(dòng)矢量存儲(chǔ)到PE32中。 步驟6 PE32收到編碼塊1、2、3、4的運(yùn)動(dòng)矢量之后,將其輸出。 為了比較基于塊分類(lèi)的深度圖運(yùn)動(dòng)估計(jì)算法的效果,本文使用了包含不同分辨率和不同運(yùn)動(dòng)情況的8組公共測(cè)試序列的1-50幀,在MATLAB平臺(tái)上通過(guò)統(tǒng)計(jì)運(yùn)動(dòng)搜索次數(shù),用于衡量算法的計(jì)算量;統(tǒng)計(jì)圖像的PSNR用于衡量算法的性能。并基于視頻陣列處理器驗(yàn)證上述基于塊分類(lèi)的深度圖運(yùn)動(dòng)估計(jì)算法并行實(shí)現(xiàn)的可行性,通過(guò)加速比和硬件架構(gòu)資源分析來(lái)衡量在視頻陣列處理器上進(jìn)行并行化的性能。 在運(yùn)動(dòng)估計(jì)中,運(yùn)動(dòng)搜索的次數(shù)可以反應(yīng)運(yùn)動(dòng)估計(jì)算法的計(jì)算量。圖8給出了本文提出的搜索算法與FS算法、DS算法和TZSearch算法相比較搜索次數(shù)改變的百分比,計(jì)算公式如式(3)所示 (3) 式中:Ptprop代表本文搜索算法的搜索點(diǎn)數(shù),Ptcompare代表FS算法、DS算法或者TZSearch算法的搜索點(diǎn)數(shù),從圖8中可以看出與FS算法相比,本文提出的搜索算法可以大幅度地減少搜索點(diǎn)數(shù),所有測(cè)試序列的搜索點(diǎn)數(shù)平均減少77.32%;相比于TZSearch算法,所有測(cè)試序列的搜索點(diǎn)數(shù)平均減少12.04%,極大降低了運(yùn)動(dòng)估計(jì)算法的計(jì)算量。相比于DS算法,所有測(cè)試序列的搜索點(diǎn)數(shù)平均增加10.40%。其中Shark序列相比于FS算法搜索點(diǎn)數(shù)減少的幅度較小,相比于TZSearch算法是唯一一個(gè)搜索點(diǎn)數(shù)增加的測(cè)試序列,相比于DS算法搜索點(diǎn)數(shù)增加的幅度最大,是因?yàn)樵撔蛄械那熬昂捅尘皡^(qū)域存在著較多的運(yùn)動(dòng)對(duì)象且運(yùn)動(dòng)幅度較大,導(dǎo)致圖像邊緣區(qū)域增多。Poznan_Hall2序列相比于FS算法和TZSearch算法搜索點(diǎn)數(shù)減少幅度較大,相比于DS算法搜索點(diǎn)數(shù)幅度增加最少,是因?yàn)樵撔蛄械钠教箙^(qū)域占比更高,且物體的運(yùn)動(dòng)幅度較小。 圖8 本文搜索算法減少的搜索點(diǎn)數(shù) PSNR是一種衡量圖像質(zhì)量的指標(biāo),表1為本文算法與FS算法、DS算法相比圖像的PSNR損耗。從表1可以看出,與FS算法相比,本文算法的平均PSNR損耗為0.0870 dB,在運(yùn)動(dòng)搜索次數(shù)大幅度降低的情況下,可以達(dá)到和FS算法相差不多的PSNR。相比于DS算法,在運(yùn)動(dòng)搜索次數(shù)小幅度增加的情況下,本文算法的平均PSNR損耗為-2.2771 dB。在折中考慮運(yùn)動(dòng)搜索次數(shù)和圖像質(zhì)量的情況下,本文所提出的算法在達(dá)到和FS算法相差不多的PSNR的情況下,相比于TZSearch算法可以減少12.04%的運(yùn)動(dòng)搜索次數(shù),所以本文提出的改進(jìn)方法比TZSearch算法性能略佳。 表1 優(yōu)化后算法的PSNR損耗 本文在視頻陣列處理器上驗(yàn)證基于塊分類(lèi)的深度圖運(yùn)動(dòng)估計(jì)算法并行實(shí)現(xiàn)的可行性。首先將測(cè)試序列轉(zhuǎn)換成陣列可以識(shí)別的二進(jìn)制序列,然后將原始幀和參考幀分別存儲(chǔ)在片外存儲(chǔ)DIM和DOM中,其次將并行方案的指令初始化到對(duì)應(yīng)PE的指令存儲(chǔ)中,最后在QuestaSim上進(jìn)行仿真驗(yàn)證。本文用單PE的串行執(zhí)行時(shí)間作為串行處理時(shí)間。8組公共視頻測(cè)試序列的平均串行執(zhí)行時(shí)間為1.308 s,并行執(zhí)行時(shí)間為0.452 s,平均加速比可以達(dá)到2.894,減少了65%的執(zhí)行時(shí)間。采用Xilinx公司的ISE14.7開(kāi)發(fā)環(huán)境進(jìn)行綜合,綜合結(jié)果見(jiàn)表2,可看出僅需要11 722個(gè)LUTs,33 641個(gè)Registers的硬件資源,最高工作頻率可達(dá)到122 MHz。文獻(xiàn)[7]是在DS算法的基礎(chǔ)上提出的改進(jìn)算法和硬件架構(gòu),可以同時(shí)計(jì)算一個(gè)預(yù)測(cè)單元內(nèi)所有的搜索點(diǎn)數(shù),但是是以消耗了大量的硬件資源為代價(jià)的,所使用的硬件資源為本文的8.75倍。文獻(xiàn)[8]是在FS算法的基礎(chǔ)上設(shè)計(jì)的硬件架構(gòu),在頻率和本文相當(dāng)?shù)那闆r下,硬件資源是本文設(shè)計(jì)的1.2倍。 表2 硬件資源結(jié)果對(duì)比 本文針對(duì)深度圖的運(yùn)動(dòng)估計(jì),提出了一種結(jié)合算法和并行設(shè)計(jì)的優(yōu)化方法。首先針對(duì)深度圖的特點(diǎn),優(yōu)化了運(yùn)動(dòng)估計(jì)搜索算法。實(shí)驗(yàn)結(jié)果表明,與FS算法相比,8組測(cè)試序列的平均PSNR值損耗僅為0.0870 dB;與TZSearch算法相比,運(yùn)動(dòng)搜索次數(shù)平均減少了12.04%,在折中考慮運(yùn)動(dòng)搜索次數(shù)和編碼質(zhì)量的情況下,該方法獲得了略優(yōu)于TZSearch算法的性能。然后,基于視頻陣列處理器對(duì)提出的改進(jìn)方法進(jìn)行了并行化設(shè)計(jì),又從最大化復(fù)用參考數(shù)據(jù)的角度選取了并行計(jì)算編碼塊的個(gè)數(shù),進(jìn)一步減少了硬件資源的消耗。本文提出的基于塊分類(lèi)的深度圖運(yùn)動(dòng)估計(jì)及其并行實(shí)現(xiàn)方案,在編碼質(zhì)量、計(jì)算效率和資源消耗方面均得到了不同程度的改善。4 實(shí)驗(yàn)結(jié)果與分析
4.1 算法的運(yùn)動(dòng)搜索次數(shù)分析
4.2 算法的性能
4.3 硬件綜合對(duì)比結(jié)果
5 結(jié)束語(yǔ)