謝曉燕 王 昱 武 鑫 朱 筠
1(西安郵電大學(xué)計(jì)算機(jī)學(xué)院 陜西 西安 710121) 2(西安郵電大學(xué)電子工程學(xué)院 陜西 西安 710121)
3D-HEVC為多視點(diǎn)加深度(Multi-View plus Depth,MVD)的數(shù)據(jù)格式?;谏疃葓D像渲染(Depth Image Based Rendering, DIBR)算法[1-3,19]中的兩步映射,多視點(diǎn)的主要問題是映射中存在大量的數(shù)據(jù)傳輸和帶寬的限制。三維視頻編碼團(tuán)隊(duì)ISO/IEC MPEG基于DIBR的兩步映射開發(fā)了高質(zhì)量視圖合成參考軟件VSRS[4],其中最重要的問題是合成虛擬視點(diǎn)中的空洞[5]。
視圖合成技術(shù)遮擋產(chǎn)生的孔和通過扭曲產(chǎn)生的取整誤差會(huì)導(dǎo)致渲染質(zhì)量變差[6]。深度圖可以被深度相機(jī)捕獲,但是由于深度相機(jī)太昂貴,因此當(dāng)前深度估計(jì)成為獲取深度圖的主流方法,然而由深度估計(jì)算法計(jì)算的深度數(shù)據(jù)可能具有錯(cuò)誤的值或空間不一致,這些問題可能導(dǎo)致所生成的圖像上存在各種視覺偽影??梢酝ㄟ^深度預(yù)處理來減少孔,從而提高合成視圖的質(zhì)量?;贛arkov隨機(jī)有限元(Markov Random Fields, MRF)的快速視圖合成方法[7]保留了候選標(biāo)簽來保持合成視圖中的視覺一致性,大大縮短了運(yùn)行時(shí)間,但該候選約束缺少前景信息,使得視圖質(zhì)量有所下降?;诙鄵p失卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)的虛擬視點(diǎn)合成方法[8]使用了基于三層網(wǎng)絡(luò)的多損失函數(shù),雖提高了合成視圖的質(zhì)量,但帶來了極高的計(jì)算復(fù)雜度。
目前,減少空洞的普遍硬件實(shí)現(xiàn)方法分為三種:通用處理器(General Purpose Processor, GPP)實(shí)現(xiàn)、專用集成電路(Application Specific Integrated Circuit, ASIC)實(shí)現(xiàn)和可重構(gòu)體系結(jié)構(gòu)的實(shí)現(xiàn)。文獻(xiàn)[9]提出了一種完整的包含視差估計(jì)和視差合成的立體視圖DIBR算法,雖然該硬件體系結(jié)構(gòu)有較高的處理速度,但其較高的成本及功率使其不具有普遍適用性。在超大規(guī)模集成電路(Very Large Scale Integration, VLSI)的實(shí)現(xiàn)中,文獻(xiàn)[10]提出了一種基于相位的視點(diǎn)合成硬件系統(tǒng),雖然該方法不受對(duì)象邊界的影響,可以提高視圖的質(zhì)量,但是帶來了較高的計(jì)算復(fù)雜度。文獻(xiàn)[11]提出了一種新的虛擬視圖合成方法,使用兩個(gè)相鄰的真實(shí)視圖合成虛擬視圖,但是其未修復(fù)區(qū)域由其他真實(shí)視圖的信息填充,需要消耗更多的內(nèi)存資源。文獻(xiàn)[12]利用視圖間紋理和深度圖相似性,通過紋理優(yōu)化(View Synthesis through Texture Optimization, VISTO)迭代生成一個(gè)虛擬視圖,但因未使用深度圖,使得合成視圖沒有立體感。
虛擬視點(diǎn)合成的ASIC實(shí)現(xiàn)雖然在一定程度上提高了操作效率,但其靈活性較差、成本更高。隨著各種視頻算法的計(jì)算和性能要求的提高,GPP和ASIC的缺點(diǎn)日益突出。可重構(gòu)體系結(jié)構(gòu)逐漸成為研究熱點(diǎn),它將通用處理器的靈活性和專用硬件的效率相結(jié)合,這是一種高效的體系結(jié)構(gòu)[13]。文獻(xiàn)[14]提出了一種對(duì)低復(fù)雜度的三維圖像合成的可重構(gòu)結(jié)構(gòu),在系統(tǒng)中動(dòng)態(tài)管理不同的應(yīng)用工作負(fù)載使其重新配置,缺點(diǎn)是對(duì)復(fù)雜性較高的應(yīng)用處理性能不高。在此背景下,本文提出基于可重構(gòu)陣列處理器的實(shí)現(xiàn)方法,能夠適應(yīng)不同場(chǎng)景以滿足圖像質(zhì)量和加快虛擬視圖合成的重構(gòu)結(jié)構(gòu)。
為了解決視覺偽影問題,采用三種濾波方式預(yù)處理深度數(shù)據(jù),分別為:均值濾波、中值濾波和高斯濾波。用虛擬視圖合成參考軟件VSRS3.5對(duì)圖1所示的測(cè)試序列balloons、newspaper、kendo、lovebird1、poznnstreet、dancer和GT-Fly的深度圖像進(jìn)行不同程度的預(yù)處理,統(tǒng)計(jì)了無預(yù)處理、中值濾波、均值濾波和高斯濾波在不同窗口大小下Y分量各參考視點(diǎn)圖像的PSNR,統(tǒng)計(jì)結(jié)果如表1所示。具體過程如下:(1) 配置工程環(huán)境;(2) 設(shè)置為中值濾波,令其模板分別為(3,3)、(5,5)、(7,7)時(shí),測(cè)出各測(cè)試序列的PSNR值,并記錄;(3) 設(shè)置為均值濾波,令其模板分別為(4,4)、(5,5)、(6,6)測(cè)出各測(cè)試序列的PSNR值,并記錄;(4) 設(shè)置為高斯濾波測(cè)出各測(cè)試序列的PSNR值,并記錄。
圖1 3D-HEVC標(biāo)準(zhǔn)測(cè)試序列深度圖
表1 3D-HEVC標(biāo)準(zhǔn)測(cè)試序列不同預(yù)處理下的PSNR統(tǒng)計(jì)結(jié)果
可以看出,對(duì)于深度圖balloons1、newspaper、kendo,高斯濾波效果最好,對(duì)于深度圖lovebird1、poznanstreet、dancer、GT-Fly,中值濾波的圖像質(zhì)量更好。為了便于硬件實(shí)現(xiàn),對(duì)于近景圖像的深度圖,本文采用與高斯濾波原理作用類似,模板為(5,5)的均值濾波進(jìn)行預(yù)處理;對(duì)于遠(yuǎn)景圖像的深度圖,采用模板為(7,7)的中值濾波進(jìn)行預(yù)處理。
1) 深度圖預(yù)處理:表1中,balloons1、newspaper、kendo的測(cè)試結(jié)果表明當(dāng)使用5×5模板時(shí),均值濾波效果最好。將這25個(gè)數(shù)據(jù)兩兩相加后通過移位減的操作實(shí)現(xiàn)目標(biāo)點(diǎn)的計(jì)算。lovebird1、poznanstreet、dancer、GT-Fly的測(cè)試結(jié)果表明模板為(7,7)用中值濾波效果最好。由于冒泡排序法對(duì)一組排序數(shù)據(jù)相關(guān)性要求較高,在對(duì)這49個(gè)數(shù)據(jù)進(jìn)行排序時(shí),為了得到更大的并行性,采用無數(shù)據(jù)相關(guān)性的雙調(diào)排序進(jìn)行排序。
2) 3D-Warping:本文采用更有利于實(shí)時(shí)顯示高清視頻的1D模式來完成3D-Warping。為了提高算法執(zhí)行效率,在計(jì)算攝像機(jī)模型的特征矩陣時(shí)采用查找表(Look-Up-Table, LUT)的方式對(duì)相同深度值進(jìn)行統(tǒng)一計(jì)算,避免了重復(fù)操作。在VSRS軟件操作中3D-Warping完成后才進(jìn)行空洞填充操作,這樣串行的設(shè)計(jì)相當(dāng)耗時(shí),為此可將像素點(diǎn)映射變化與空洞填充并行化處理,如圖2所示。
圖2 像素映射與空洞填充的并行化
3) 空洞填充:在虛擬視點(diǎn)合成軟件測(cè)試模型VSRS3.5中,通過將鄰近點(diǎn)背景像素沿著水平方向傳播至空洞的方式進(jìn)行填充。首先通過掩膜后的合成視點(diǎn)判斷空洞的位置,接著判斷該空洞點(diǎn)的下一個(gè)位置是否為空,直到判斷完整個(gè)水平方向。若為空則標(biāo)記空洞像素點(diǎn)加1,否則判斷該像素點(diǎn)的背景是否在右側(cè):若在右側(cè),則使用右邊的點(diǎn)進(jìn)行填充,否則使用左邊的點(diǎn)進(jìn)行填充,如圖3所示。整個(gè)填充過程中的重點(diǎn)在于引入深度數(shù)據(jù)區(qū)分背景像素是否在圖像的右邊。對(duì)于1 024×768的圖像來說至少需要786 432次循環(huán)才能完成,這有礙于高清視頻實(shí)時(shí)顯示。對(duì)于整幅半高清圖像來說,填充時(shí)每行的數(shù)據(jù)是不相關(guān)的,因此可以采用并行化實(shí)現(xiàn)。
圖3 VSRS中空洞填充算法流程圖
圖4為實(shí)現(xiàn)VSRS的硬件體系結(jié)構(gòu)。其中,合并的圖像存儲(chǔ)在外部存儲(chǔ)器中。處理單元(Processing Element, PE)通過數(shù)據(jù)輸入存儲(chǔ)器(Data Input Memory,DIM)將外部存儲(chǔ)中的數(shù)據(jù)加載到本地?cái)?shù)據(jù)存儲(chǔ)器中,計(jì)算掩模的類型,并將其反饋到全局控制器。全局控制器比較接收的掩模類型數(shù)據(jù)并將相應(yīng)的指令發(fā)送到PE的指令存儲(chǔ)器。
圖4 VSRS 算法的硬件體系結(jié)構(gòu)
全局控制器用于控制和管理陣列計(jì)算資源,包括操作指令的廣播、調(diào)用指令的分配和計(jì)算資源信息的收集。上層是指令存儲(chǔ)器,下層是由4×4個(gè)PE組成的陣列處理器。主要功能是在主機(jī)接口與陣列處理器之間形成一個(gè)層次化的編程網(wǎng)絡(luò),并利用層次化編程網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)組計(jì)算資源的控制和管理。為了得到簡(jiǎn)單的尋址,尋址過程的比特寬度可以逐級(jí)遞減,并且確保每個(gè)指令同時(shí)到達(dá)PE。分層編程網(wǎng)絡(luò)設(shè)計(jì)為通過H網(wǎng)絡(luò)加載指令。
為了節(jié)省硬件資源,本文利用視頻陣列處理器的動(dòng)態(tài)可重構(gòu)機(jī)制來切換深度圖預(yù)處理算法。其核心是在指令下發(fā)送網(wǎng)絡(luò),主要使用指令網(wǎng)絡(luò)中的指令廣播操作和指令發(fā)送操作,指令廣播操作負(fù)責(zé)執(zhí)行PE操作。該方法是在數(shù)組結(jié)構(gòu)中的每個(gè)PE的指令存儲(chǔ)器中存儲(chǔ)指令,然后通過指令廣播操作打開全部或部分PE。指令發(fā)送操作主要負(fù)責(zé)執(zhí)行模式的重新配置,通過發(fā)布指令將指令從全局指令存儲(chǔ)發(fā)送到指定PE。
可編程可重構(gòu)陣列處理器(Dynamic Reconfigurable Array Processor,DPR-CODEC)是由項(xiàng)目組自主研發(fā)的一款動(dòng)態(tài)視頻陣列處理器。本文基于DPR-CODEC來設(shè)計(jì)VSRS算法,DPR-CODEC的部分結(jié)構(gòu)如圖5所示。陣列處理器由32×32個(gè)PE以鄰接互連形式組成(圖5中僅以4×4結(jié)構(gòu)來示例),采用物理不分層、邏輯分層的劃分方式。由于視頻算法中數(shù)據(jù)的處理基本都是以N×N的矩形塊進(jìn)行,且可重構(gòu)陣列處理器能夠適應(yīng)不同場(chǎng)景,所以這種體系結(jié)構(gòu)相比其他結(jié)構(gòu)更加滿足視頻算法需求,能夠更有效地對(duì)視頻算法進(jìn)行并行化設(shè)計(jì)。
圖5 DPR-CODEC的結(jié)構(gòu)
VSRS算法分為深度圖預(yù)處理、邊界掩膜、3D-Warping和空洞填充,通過設(shè)計(jì)4個(gè)PEG(Processing Element Group, PEG)(每個(gè)算法用一個(gè)PEG)來完成整體映射,如圖6所示。具體映射步驟如下:左視圖深度圖(Deep Left, DL)、右視圖數(shù)據(jù)(Deep Right, DR)是兩個(gè)參考視圖深度圖,將其存儲(chǔ)在外部存儲(chǔ)中。首先,PEG10和PEG00同時(shí)從外存獲取深度圖數(shù)據(jù),進(jìn)行邊界掩膜和深度圖預(yù)處理操作。PEG10執(zhí)行完畢后通過PE1000、PE1001、PE1002、PE1003鄰接互連傳給PEG00,執(zhí)行完畢后通過PEG00簇的PE03、PE13、PE23、PE33鄰接互聯(lián)傳遞給PEG01。接著PEG01根據(jù)邊界掩膜信息和預(yù)處理后的圖像進(jìn)行像素點(diǎn)映射變換后產(chǎn)生的左視點(diǎn)深度圖(Deep virtual Left, DVL)和右視點(diǎn)深度圖(Deep virtual Right, DVR)存入外存。最后PEG02從外存加載變形后的深度圖進(jìn)行空洞填充,并將結(jié)果V存入外存。
圖6 可重構(gòu)虛擬視點(diǎn)合成算法映射方案
對(duì)測(cè)試模型VSRS3.5的配置文件進(jìn)行修改,得到測(cè)試數(shù)據(jù);通過b4d_bram_write函數(shù)將測(cè)試數(shù)據(jù)下發(fā)至FPGA中的left0、left1、left2、left3共享寄存器中;通過b4d_bram_read函數(shù)讀取共享寄存器result中的數(shù)據(jù),并將采集到的數(shù)據(jù)存儲(chǔ)在片外存儲(chǔ)器中,接著將并行程序的指令初始化為指令存儲(chǔ)器;用Questasim-64—10.1d對(duì)可重構(gòu)陣列的結(jié)構(gòu)進(jìn)行驗(yàn)證。在并行化方案的功能仿真中,對(duì)Bee4芯片VIETEX-6FF1759 LX550T FPGA[17]集成。實(shí)驗(yàn)表明,整個(gè)PE的工作頻率為159 MHz,片上資源利用率為57 280個(gè)LUT和84 850個(gè)Slice。
表2是在LoveBird1測(cè)試序列下實(shí)現(xiàn)虛擬視圖合成算法的視頻陣列結(jié)構(gòu)并行實(shí)現(xiàn)的周期統(tǒng)計(jì)??芍貥?gòu)陣列處理器兼顧專用硬件的高效性和通用處理器的靈活性,本文算法雖然占用了大量的資源,但工作頻率更接近專用硬件,其靈活性比專用硬件高。此外,本文采用可重構(gòu)陣列實(shí)現(xiàn)了中值濾波和均值濾波的預(yù)處理算法,以適應(yīng)不同的視頻場(chǎng)景。FPGA測(cè)試表明,對(duì)于分辨率為1 024×768的測(cè)試序列LoveBird1,處理速度可以達(dá)到124 fps,Y-PSNR為34.55。
表2 虛擬視點(diǎn)合成算法的執(zhí)行周期和時(shí)間統(tǒng)計(jì)
表3比較了10幀的PSNR的平均合成性能,使用捕獲的虛擬視圖和合成的視圖來計(jì)算合成的PSNR。綜合性能表明,本文算法的差分分別為0.043 dB和0.145 dB。
表3 10幀平均PSNR的比較
表4為在視頻陣列體系結(jié)構(gòu)中并行虛擬視點(diǎn)合成算法的性能比較。文獻(xiàn)[15]雖然帶寬減少,但圖像質(zhì)量較差,在LoviBrd1的相同測(cè)試序列下,PSNR在圖像質(zhì)量上提高了2.748 dB,吞吐量提高了40%。在文獻(xiàn)[17]中提出的實(shí)時(shí)自由視圖合成硬件使用了由607K LUT和303K寄存器組成的VixTeX-XC7VX85T FPGA,以實(shí)現(xiàn)175 MHz的工作頻率,吞吐量為720P@ 55 fps。本文使用一個(gè)由124K LUT和一個(gè)39K寄存器組成的VITEX-7 XC7VX85T FPGA,以達(dá)到191 MHz的工作頻率,吞吐量為720P@ 152 fps。與文獻(xiàn)[17]相比,本文提出的可重構(gòu)陣列結(jié)構(gòu)提高了176%的吞吐量,減少了82%的資源。提出的立體視圖多視圖轉(zhuǎn)換系統(tǒng)在文獻(xiàn)[18]中的硬件設(shè)計(jì)可以在160.2 MHz的最大時(shí)鐘頻率下操作,實(shí)時(shí)地通過HDMI接口每秒60幀輸出1 080P視頻,文獻(xiàn)[18]使用由40.2K LUT和87.7K寄存器組成的Stulx-3 FPGA,以實(shí)現(xiàn)160 MHz的工作頻率。與文獻(xiàn)[18]相比,本文提出的可重構(gòu)陣列結(jié)構(gòu)減少了14%的吞吐量,增加了27%的資源,雖然吞吐量略低于文獻(xiàn)[18],但圖像質(zhì)量PSNR提高了4.35 dB。此外,本文提出的架構(gòu)優(yōu)點(diǎn)在于:可以根據(jù)不同的視頻場(chǎng)景切換深度圖預(yù)處理操作,以實(shí)現(xiàn)更高質(zhì)量的合成視圖,具有更高的靈活性,更適合于市場(chǎng)應(yīng)用。
表4 不同硬件結(jié)構(gòu)的性能比較
為了兼顧3D-HEVC中VSRS算法處理速度與圖像質(zhì)量?jī)蓚€(gè)指標(biāo),提出了一種基于可重構(gòu)陣列處理器結(jié)構(gòu)的重構(gòu)方案,可用于近景預(yù)處理和遠(yuǎn)景預(yù)處理之間的切換。為了實(shí)現(xiàn)虛擬視圖合成算法,通過對(duì)3D-HEVC官網(wǎng)提供的七個(gè)典型序列進(jìn)行測(cè)試,結(jié)果表明該體系結(jié)構(gòu)可以達(dá)到實(shí)時(shí)處理的要求,并可以正確地切換預(yù)處理算法。與文獻(xiàn)[15]相比,該方案在相同資源占用的情況下,提高了40%左右的速度,PSNR提高了2.748 dB。與文獻(xiàn)[16]相比,該方案提高了176%左右的速度,減少了82%的資源。雖然吞吐量略低于文獻(xiàn)[18],但圖像質(zhì)量PSNR提高了4.35 dB。最突出的優(yōu)點(diǎn)是采用可重構(gòu)結(jié)構(gòu),方便了不同用戶的使用,具有較好的靈活性,更適合市場(chǎng)應(yīng)用的推廣。同時(shí),空洞填充是虛擬視點(diǎn)合成極為重要的部分,針對(duì)空洞填充部分的優(yōu)化,有待下一步改進(jìn),使得最終虛擬視點(diǎn)合成視頻的質(zhì)量更佳。