陳璐瑤,陳思潔,岑 寬,朱 威,2
1(浙江工業(yè)大學(xué) 信息工程學(xué)院,杭州 310023) 2(浙江省嵌入式系統(tǒng)聯(lián)合重點(diǎn)實(shí)驗(yàn)室,杭州 310023)
隨著科學(xué)技術(shù)的進(jìn)步和生活水平的不斷提高,人們對(duì)影音娛樂(lè)的需求愈發(fā)的多樣化[1],一些新的視頻技術(shù)逐漸走進(jìn)我們的生活.自由視點(diǎn)視頻[2,3]是一種允許用戶自由改變觀看視角的交互式視頻技術(shù),能為用戶提供新穎的沉浸式的視覺(jué)體驗(yàn).近年來(lái),它在體育賽事直播、視頻會(huì)議、3D電視、遠(yuǎn)程教育等領(lǐng)域中已經(jīng)得到了應(yīng)用[4].傳統(tǒng)的多視點(diǎn)視頻需要稠密的多路彩色視頻,會(huì)消耗巨大的傳送帶寬和存儲(chǔ)資源,而且由于視點(diǎn)個(gè)數(shù)不能無(wú)限制增加,視點(diǎn)間的角度切換過(guò)渡不自然,用戶體驗(yàn)不佳.因此,新一代的自由視點(diǎn)視頻采用有限視角的彩色視頻搭配對(duì)應(yīng)深度視頻的形式,使用虛擬視點(diǎn)繪制技術(shù)以獲得任意角度的視點(diǎn),同時(shí)也大幅減少視頻數(shù)據(jù)量.
虛擬視點(diǎn)繪制是一種根據(jù)單個(gè)或多個(gè)已知的參考視點(diǎn)圖像來(lái)繪制空間中另一個(gè)位置虛擬視點(diǎn)所看到圖像的技術(shù),根據(jù)其實(shí)現(xiàn)原理的不同可以分為基于模型的繪制(Model-based Rendering,MBR)和基于圖像的繪制(Image Based Rendering,IBR)[5].基于模型的繪制技術(shù)需要進(jìn)行三維建模,過(guò)程較為復(fù)雜,不適合用于實(shí)時(shí)高的應(yīng)用場(chǎng)合.在基于圖像的繪制技術(shù)中,基于深度圖的繪制技術(shù)(Depth Image Based Rendering,DIBR)僅根據(jù)參考視點(diǎn)的深度信息和相機(jī)內(nèi)外參數(shù)來(lái)繪制虛擬視點(diǎn)圖像,具有較好的圖像質(zhì)量和較快的繪制速度,是目前虛擬視點(diǎn)繪制領(lǐng)域的研究熱點(diǎn).
原始的DIBR方法存在空洞、偽影等問(wèn)題,嚴(yán)重影響了圖像質(zhì)量.目前已經(jīng)有不少相關(guān)文獻(xiàn)對(duì)空洞問(wèn)題進(jìn)行了研究,總體來(lái)說(shuō),雙參考視點(diǎn)合成[6-9]能比單視點(diǎn)繪制[10-15]獲得更好的圖像質(zhì)量,應(yīng)用也更為廣泛.文獻(xiàn)[13]提取歷史幀中的背景信息用于填補(bǔ)空洞,但是需要等待多幀數(shù)據(jù)才能得到穩(wěn)定的效果,也不適用于動(dòng)態(tài)背景的情況.文獻(xiàn)[14]將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于繪制圖像的修復(fù),但需要大量數(shù)據(jù)提前進(jìn)行訓(xùn)練且計(jì)算量較高.文獻(xiàn)[16]研究了利用多個(gè)參考視點(diǎn)消除空洞的方法,但增加視點(diǎn)個(gè)數(shù)也影響了計(jì)算性能.除此之外,目前大多數(shù)的研究還是在CPU平臺(tái)上進(jìn)行.DIBR方法由于每個(gè)像素點(diǎn)都要分別計(jì)算,在CPU串行計(jì)算的條件下,計(jì)算量較大,很難滿足實(shí)時(shí)性的要求.如文獻(xiàn)[9]采用雙視點(diǎn)融合和迭代逐層縮小空洞,取得了不錯(cuò)的效果,但其在CPU上每幀耗時(shí)約30秒,遠(yuǎn)未達(dá)到實(shí)時(shí)性要求.文獻(xiàn)[17-19]已經(jīng)將GPU加速應(yīng)用到DIBR方法上,使得虛擬視點(diǎn)繪制速度得到顯著提高,但其還存在單視點(diǎn)繪制圖像質(zhì)量不佳或虛假邊緣處理方法不完善等問(wèn)題.文獻(xiàn)[20]則僅對(duì)部分繪制過(guò)程進(jìn)行了GPU加速,加速效果還不足以滿足實(shí)時(shí)處理需求.
為了實(shí)現(xiàn)自由視點(diǎn)視頻的實(shí)時(shí)交互顯示,本文提出了一種高圖像質(zhì)量的虛擬視點(diǎn)繪制方法并對(duì)其進(jìn)行GPU加速.針對(duì)傳統(tǒng)DIBR方法存在的圖像質(zhì)量問(wèn)題,本文通過(guò)對(duì)虛擬視點(diǎn)深度圖中值濾波來(lái)改善小空洞問(wèn)題,設(shè)計(jì)了基于邊緣檢測(cè)的空洞膨脹方法消除虛假邊緣,還進(jìn)行了雙視點(diǎn)亮度校正并融合雙視點(diǎn)圖像,最后通過(guò)考慮深度的插值方法填補(bǔ)剩余空洞.針對(duì)傳統(tǒng)DIBR方法存在的計(jì)算性能問(wèn)題,本文設(shè)計(jì)了GPU加速解決方案,主要計(jì)算環(huán)節(jié)均在GPU上運(yùn)行,主機(jī)設(shè)備之間僅來(lái)回拷貝一次數(shù)據(jù),使虛擬視點(diǎn)繪制的處理速度達(dá)到實(shí)時(shí)處理的需求.
L.McMillan[21]提出的三維圖像變換(3D Image Warping)方法是DIBR技術(shù)的核心.根據(jù)針孔相機(jī)模型,可以推導(dǎo)出圖像上一點(diǎn)的像素坐標(biāo)和其對(duì)應(yīng)的空間點(diǎn)的世界坐標(biāo)的關(guān)系如式(1)所示,式中,(u,v)為空間點(diǎn)的像素坐標(biāo),Zc為該點(diǎn)的深度值,(Xw,Yw,Zw)為該點(diǎn)的世界坐標(biāo),M為相機(jī)的投影矩陣,由相機(jī)的內(nèi)參矩陣和外參矩陣相乘得到.
(1)
3D Image Warping方程就是利用了這個(gè)關(guān)系,將參考視點(diǎn)中的像素點(diǎn)逐一映射到三維空間中,再?gòu)娜S空間中將該點(diǎn)映射到虛擬視點(diǎn)圖像中.在這一過(guò)程中,只需用到參考視點(diǎn)、虛擬視點(diǎn)相機(jī)的投影矩陣,以及參考視點(diǎn)的深度信息.投影矩陣由相機(jī)的內(nèi)外參數(shù)構(gòu)成,可以通過(guò)相機(jī)標(biāo)定事先得到.深度信息可以通過(guò)深度相機(jī)直接獲取,或通過(guò)雙目相機(jī)進(jìn)行深度估計(jì)等方式得到.虛擬視點(diǎn)映射過(guò)程如圖1所示.
圖1 三維圖像變換過(guò)程示意圖Fig.1 Process of 3D image warping
微軟研究院提供的“Ballet”和“Breakdancers”多視點(diǎn)加深度自由視點(diǎn)測(cè)試序列[22],共有8個(gè)參考視點(diǎn),每?jī)蓚€(gè)視點(diǎn)物理間隔20cm.本文通過(guò)對(duì)外參矩陣進(jìn)行線性插值,在每?jī)蓚€(gè)參考視點(diǎn)中間插入40個(gè)虛擬視點(diǎn),使得用戶視點(diǎn)可以在8個(gè)參考視點(diǎn)組成的視野范圍內(nèi)無(wú)縫的過(guò)渡切換.為實(shí)現(xiàn)虛擬視點(diǎn)的實(shí)時(shí)繪制并解決傳統(tǒng)DIBR方法中存在的空洞等問(wèn)題,本文首先對(duì)參考視點(diǎn)深度圖進(jìn)行邊緣檢測(cè)并向前映射,向前映射過(guò)程中需要將邊緣標(biāo)記一同映射到虛擬視點(diǎn),同時(shí)還要處理重疊問(wèn)題;然后對(duì)虛擬視點(diǎn)深度圖進(jìn)行中值濾波,再根據(jù)處理后的深度圖進(jìn)行反向映射得到虛擬視點(diǎn)的彩色圖像;接著對(duì)空洞掩模圖中被標(biāo)記的虛假邊緣位置進(jìn)行膨脹處理,再融合兩幅經(jīng)過(guò)亮度校正的虛擬視點(diǎn)圖像以填補(bǔ)大空洞;最后通過(guò)考慮深度的快速插值的方法填充剩余的空洞.在每一個(gè)環(huán)節(jié)中,圖像的各個(gè)像素是在不同線程中獨(dú)立計(jì)算的,當(dāng)整幅
圖2 本文提出方法的流程圖Fig.2 Flow chart of the proposed method
圖的所有像素計(jì)算完成,方法進(jìn)入下一個(gè)處理環(huán)節(jié).本文提出方法的流程如圖2所示.
視角移動(dòng)后,部分前景將與原來(lái)的背景像素位置重合.此時(shí)前景理應(yīng)將背景遮擋,但若不加處理,由于計(jì)算順序問(wèn)題,可能導(dǎo)致背景像素將前景像素覆蓋,造成如圖3(a)所示的圖像問(wèn)題.該問(wèn)題需要在向前映射的過(guò)程中處理,通常采用Z-Buffer算法,即開(kāi)辟一個(gè)緩存用于保存映射到同一個(gè)像素的n個(gè)像素點(diǎn),通過(guò)排序保留深度值最小的像素,如式(2):
d=min(d1,d2,…,dn)
(2)
為了節(jié)省內(nèi)存、簡(jiǎn)化計(jì)算,本文方法在處理每一個(gè)像素時(shí),若目標(biāo)像素位置已經(jīng)存在像素值,則比較兩者深度值大小,并保留深度值較小的像素.由于在并行操作時(shí)存在數(shù)據(jù)競(jìng)爭(zhēng)現(xiàn)象,比較過(guò)程需要重復(fù)5次以保證結(jié)果正確.
圖3 重疊問(wèn)題處理前后對(duì)比圖Fig.3 Comparison of dealing with the problem of overlapping
使用DIBR技術(shù)繪制虛擬視點(diǎn)經(jīng)常會(huì)產(chǎn)生空洞.根據(jù)產(chǎn)生原因的不同,空洞可以分為小空洞和大空洞兩種類(lèi)型.其中,小空洞呈不規(guī)則的裂縫狀或小塊狀,產(chǎn)生的原因有三種:一是由于像素值為整數(shù),坐標(biāo)在映射過(guò)程中產(chǎn)生了舍入誤差;二是由于視點(diǎn)轉(zhuǎn)換后圖像所需的像素點(diǎn)數(shù)量可能會(huì)增大;三是由于深度圖采集時(shí)的誤差造成深度信息的不連續(xù).這三種原因?qū)е铝嗽谟成溥^(guò)程中有部分虛擬視點(diǎn)像素沒(méi)有被映射到,從而形成裂紋般的細(xì)小空洞.
對(duì)于小空洞,本文方法先將參考視點(diǎn)深度圖向前映射到虛擬視點(diǎn)深度圖,接著對(duì)虛擬視點(diǎn)深度圖進(jìn)行中值濾波,消除大部分細(xì)小空洞,再根據(jù)處理后的深度圖反向映射得到虛擬視點(diǎn)彩色圖像.中值濾波對(duì)于細(xì)小空洞這類(lèi)椒噪聲有良好的平滑作用.濾波前后的虛擬視點(diǎn)深度圖如圖4所示.
大空洞面積較大,產(chǎn)生原因是遮擋導(dǎo)致的圖像信息缺失.由于視角的移動(dòng),原本被前景遮擋的背景信息顯露出來(lái),或者原本在參考視點(diǎn)拍攝范圍之外的景象進(jìn)入新的視點(diǎn),導(dǎo)致了這部分圖像信息的缺失.因此,大空洞會(huì)出現(xiàn)在前景的邊緣和整幅圖像的邊緣,形狀也與前景形狀和視點(diǎn)移動(dòng)方向有關(guān).對(duì)于大空洞,本文方法將不同方向的兩個(gè)參考視點(diǎn)映射到同一個(gè)虛擬視點(diǎn),再進(jìn)行圖像的融合,從而互補(bǔ)了各自缺失的圖像信息,保留場(chǎng)景的原始特征.具體的融合方法如式(3):
(3)
式中,IL和IR分別表示左右參考視點(diǎn)映射到虛擬視點(diǎn)之后的像素值,α為左參考視點(diǎn)與虛擬視點(diǎn)間的距離占兩個(gè)參考視點(diǎn)總間距的比例,即距離越小權(quán)重越大.圖像融合效果如圖5所示,可見(jiàn)在圖像融合之后,大部分空洞能被有效填充.
圖5 融合前后虛擬視點(diǎn)圖像Fig.5 Virtual viewpoint image before and after image fusion
偽影問(wèn)題是指圖像中出現(xiàn)本沒(méi)有的形態(tài)特征,虛擬視點(diǎn)繪制中的偽影問(wèn)題主要有兩個(gè),一個(gè)是虛假邊緣問(wèn)題,另一個(gè)是亮度差異[8,17]問(wèn)題.一般來(lái)說(shuō),彩色圖像的物體邊緣會(huì)存在2至3個(gè)像素的平滑過(guò)渡現(xiàn)象,而深度圖的前景邊緣往往十分銳利.這種邊緣寬度的差異導(dǎo)致前景外輪廓的部分像素的深度值錯(cuò)誤,被映射到背景上,形成一條虛假的邊緣,其寬度一般在1-2個(gè)像素.
對(duì)于虛假邊緣問(wèn)題,傳統(tǒng)的空洞膨脹處理方法能有效解決,但也導(dǎo)致了部分空洞面積增大,使得后期需要更多的插值處理.當(dāng)空洞出現(xiàn)在前景邊緣時(shí),傳統(tǒng)方法還會(huì)導(dǎo)致前景邊緣像素?fù)p失.文獻(xiàn)[8]提出了一種基于深度信息的不對(duì)稱膨脹方法,能夠解決前景邊緣損失的問(wèn)題,但仍存在不必要的膨脹處理.為此,本文設(shè)計(jì)了一種基于邊緣檢測(cè)的虛假邊緣處理方法.本文在向前映射之前,首先用3×3大小的模板膨脹參考視點(diǎn)的原始深度圖,再用Canny算子檢測(cè)邊緣并標(biāo)記邊緣像素,得到前景的外輪廓信息,如圖6(b).接著把標(biāo)記信息也映射到虛擬視點(diǎn)圖像中,如圖6(c).然后對(duì)空洞掩模圖進(jìn)行選擇性的膨脹處理,若將要膨脹的像素位于之前被標(biāo)記的邊緣位置處,則進(jìn)行處理,否則不改變?cè)撓袼氐闹?用符號(hào)⊕表示膨脹處理,本文空洞膨脹方法可如式(4):
(4)
其中,holeMap表示空洞掩模圖,edgeMap表示三維映射后的邊緣標(biāo)記圖,elem為5×5大小的矩形模板.最終虛假邊緣標(biāo)記結(jié)果如圖6(d)所示,可見(jiàn)本文方法能有效減少不必要的膨脹處理,同時(shí)保護(hù)前景邊緣不會(huì)損失.該方法對(duì)最終圖像質(zhì)量的提升會(huì)在后續(xù)插值處理之后表現(xiàn)出來(lái),詳見(jiàn)3.4節(jié).
圖6 本文空洞膨脹方法的中間過(guò)程圖Fig.6 Process of proposed hole extension method
由于不同參考視點(diǎn)由不同位置的不同攝像機(jī)拍攝,其無(wú)論是內(nèi)部的感光元件還是外部的光照環(huán)境都存在一定的差別,導(dǎo)致兩個(gè)視點(diǎn)得到的圖像在亮度、色彩上面也存在一定的差異.這個(gè)問(wèn)題導(dǎo)致了兩個(gè)視點(diǎn)圖像融合后,其填充區(qū)域與周邊存在一定的色彩差異,形成偽影.
對(duì)于亮度差異問(wèn)題,本文在圖像融合時(shí),參考了文獻(xiàn)[8]的亮度校正方法,將兩幅圖像轉(zhuǎn)換到HSV顏色空間,求取兩幅圖公共部分的像素的亮度比值的均值,然后以一個(gè)視點(diǎn)為參考,對(duì)另一個(gè)視點(diǎn)圖像的亮度進(jìn)行縮放,再轉(zhuǎn)換回RGB空間.采用上述方法處理偽影的前后對(duì)比如圖7所示.
圖7 不同方法處理偽影問(wèn)題效果對(duì)比圖Fig.7 Comparison of different methods for the problem of ghost artifacts
圖像融合之后得到的虛擬視點(diǎn)圖像一般已經(jīng)沒(méi)有了因遮擋產(chǎn)生的大空洞,但還可能剩余一些空洞.現(xiàn)有基于樣本的圖像修復(fù)方法[23-25]比較耗時(shí),為了達(dá)到計(jì)算實(shí)時(shí)性,本文提出了一種較為快速的空洞插值方法:對(duì)于每個(gè)空洞像素,分別向上下左右4個(gè)方向搜尋到最近的非空像素值,然后計(jì)算4個(gè)像素值的加權(quán)平均值為插值結(jié)果,權(quán)重與像素距離成反比,如式(5):
(5)
式中,n為采樣點(diǎn)的數(shù)量,I代表像素值,d為采樣點(diǎn)與當(dāng)前像素的距離.
但是,當(dāng)兩個(gè)參考視點(diǎn)與虛擬視點(diǎn)的空間位置相距較遠(yuǎn)時(shí),可能會(huì)出現(xiàn)兩個(gè)參考視點(diǎn)圖像信息也無(wú)法完全填充大空洞的情況,導(dǎo)致空洞出現(xiàn)在前景邊緣.注意到因遮擋產(chǎn)生的大空洞缺失的都是背景信息,若空洞產(chǎn)生在前景邊緣,由于前景背景差異大,這種插值方法以及基于樣本的圖像修復(fù)方法[23]會(huì)使得前景的色彩混雜到背景空洞中,效果并不理想,如圖8(b)所示.于是本文進(jìn)一步對(duì)上述方法進(jìn)行了改進(jìn):在插值前判斷插值采樣點(diǎn)的深度值,對(duì)4個(gè)采樣點(diǎn)的深度值進(jìn)行排序,然后對(duì)相鄰的每?jī)蓚€(gè)深度值求差,若差值大于閾值THd,則舍棄較小一側(cè)的所有點(diǎn),保留深度值較大的背景像素點(diǎn),再進(jìn)行插值.本文中THd取值為10,插值效果如圖8(d)所示.與圖8(c)相比,經(jīng)過(guò)3.3小節(jié)所述的空洞膨脹,圖8(d)的前景邊緣沒(méi)有損失,具有更豐富的圖像細(xì)節(jié),可見(jiàn)本文的膨脹方法具有保護(hù)前景邊緣的作用.本文方法計(jì)算較為簡(jiǎn)單,在并行運(yùn)算時(shí)無(wú)須迭代,一次處理就能填充完畢,滿足視頻實(shí)時(shí)播放的要求.此外,本文方法還可以通過(guò)增加更多方向的采樣點(diǎn)從而獲得更好的效果.
圖8 插值效果對(duì)比圖Fig.8 Comparison of different inpainting methods
CUDA是針對(duì)英偉達(dá)GPU的通用并行計(jì)算架構(gòu),它提供了一個(gè)兩層的線程層次結(jié)構(gòu),由線程塊和網(wǎng)格組成.若干個(gè)線程塊組成一個(gè)網(wǎng)格,由核函數(shù)啟動(dòng).CUDA可以組織三維的網(wǎng)格和塊,每個(gè)線程都會(huì)被分配一個(gè)唯一的索引號(hào),用于區(qū)分線程.這種編程模型為矩陣運(yùn)算而設(shè)計(jì),二維的網(wǎng)格和塊就可以看作一幅二維圖像,每一個(gè)線程就對(duì)應(yīng)處理圖像中的一個(gè)像素點(diǎn)或一塊區(qū)域,如圖9所示.
圖9 線程組織方式示意圖Fig.9 Organization of threads
CUDA采用了單指令多線程(SIMT)的架構(gòu),每32個(gè)線程為1個(gè)線程束,是基本的執(zhí)行單元[26].因此,在組織線程的時(shí)候,既要盡量保證一個(gè)線程塊中的線程數(shù)為32的整數(shù)倍,還要盡可能避免線程束分化,從而提高性能.由于涉及到硬件資源的分配,線程塊的大小會(huì)影響性能.以流處理器占用率最大化為原則,可以使用官方API函數(shù)來(lái)計(jì)算得核函數(shù)的最佳線程塊大小,然后根據(jù)圖像分辨率和線程塊大小計(jì)算得網(wǎng)格的大小.
由于DIBR方法中每一個(gè)像素點(diǎn)都要計(jì)算,且各個(gè)像素點(diǎn)的運(yùn)算之間沒(méi)有數(shù)據(jù)關(guān)聯(lián),使得DIBR方法使用多線程運(yùn)算時(shí)有相當(dāng)高的并行度[17].本文采用了二維索引的方式組織線程,每個(gè)線程僅處理一個(gè)像素點(diǎn),以獲得最高的并行度.此時(shí)同一指令的不同像素之間是并行計(jì)算的,線程的索引號(hào)與像素坐標(biāo)一致,但從程序整體來(lái)說(shuō),各項(xiàng)操作之間還是順序執(zhí)行.本文方法的數(shù)據(jù)流如圖10所示.為了避免數(shù)據(jù)在CPU內(nèi)存和GPU內(nèi)存之間多次拷貝,提高運(yùn)行速度,本文將主要計(jì)算皆放在GPU上運(yùn)行.首先將CPU讀取的左右參考視點(diǎn)彩色圖和深度圖從CPU內(nèi)存拷貝到GPU內(nèi)存;再按第3節(jié)所述方法對(duì)兩參考視點(diǎn)分別進(jìn)行相同的處理,過(guò)程中產(chǎn)生深度邊緣標(biāo)記圖、虛擬視點(diǎn)深度圖、空洞掩模圖、虛擬視點(diǎn)彩色圖等中間數(shù)據(jù);最后經(jīng)過(guò)圖像融合和空洞插值得到虛擬視點(diǎn)繪制結(jié)果,并將其拷貝回CPU內(nèi)存.
圖10 本文方法數(shù)據(jù)流圖Fig.10 Data flow diagram of proposed method
并行計(jì)算也會(huì)引入新的問(wèn)題,在處理重疊問(wèn)題和亮度校正時(shí),存在多個(gè)線程同時(shí)修改同一個(gè)數(shù)據(jù)的競(jìng)爭(zhēng)現(xiàn)象.數(shù)據(jù)競(jìng)爭(zhēng)會(huì)導(dǎo)致計(jì)算結(jié)果不可預(yù)料.CUDA提供的原子操作可以保證多線程對(duì)同一數(shù)據(jù)的訪問(wèn)是互斥的,本文將其用于亮度校正時(shí)對(duì)亮度比值的累加,保證結(jié)果正確.但由于原子操作缺少對(duì)double數(shù)據(jù)類(lèi)型的支持,對(duì)于重疊問(wèn)題本文采用多次比較深度值大小并進(jìn)行線程同步的方式處理.原子操作會(huì)使得計(jì)算強(qiáng)制串行化,會(huì)犧牲一定的性能,但整體下降有限.此外,本文還使用了OpenCV提供的CUDA模塊,使用GpuMat類(lèi)來(lái)存儲(chǔ)和操作圖像數(shù)據(jù).相比于使用CUDA原生的API,這樣能便于內(nèi)存管理,在編程上更加方便.
為驗(yàn)證本文方法的有效性,實(shí)驗(yàn)選取了5個(gè)自由視點(diǎn)視頻序列進(jìn)行測(cè)試,并與現(xiàn)有方法進(jìn)行了圖像客觀質(zhì)量對(duì)比.“Ballet”、“Breakdancers”和“BookArrival”序列的分辨率為1024×768,為室內(nèi)場(chǎng)景,同時(shí)包含多個(gè)靜止和運(yùn)動(dòng)的物體.“PoznanHall2”和“PoznanStreet”序列的分辨率為1920×1088,其中“PoznanHall2”序列為室內(nèi)場(chǎng)景,包含兩個(gè)行人,其相機(jī)是運(yùn)動(dòng)的,“PoznanStreet”序列為戶外場(chǎng)景,存在自然光照,有多輛運(yùn)動(dòng)的汽車(chē).
峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結(jié)構(gòu)相似度(Structural Similarity Index,SSIM)是常用的圖像客觀質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn),值越高說(shuō)明圖像質(zhì)量越好.PSNR的計(jì)算方法如式(6)所示:
(6)
式中,MSE是兩圖像之間的均方誤差,n是每個(gè)采樣值的比特?cái)?shù).SSIM的計(jì)算方法如式(7)所示:
(7)
式中,μx和μy分別代表圖像x和圖像y的均值,σxy為x和y的協(xié)方差,σx2和σy2代表方差,c1=(k1L)2和c2=(k2L)2為常數(shù),L為像素值的動(dòng)態(tài)范圍,k1=0.01,k2=0.03.實(shí)驗(yàn)采用PSNR和SSIM評(píng)價(jià)各序列虛擬視點(diǎn)圖像和真實(shí)相機(jī)拍攝圖像的相似度,記錄各序列所有幀測(cè)試結(jié)果的平均值,見(jiàn)表1.表中視點(diǎn)編號(hào)欄,中間為虛擬視點(diǎn)編號(hào),其余為兩參考視點(diǎn)編號(hào).
表1 本文方法在不同視頻序列下的圖像客觀質(zhì)量評(píng)價(jià)Table 1 Objective quality evaluation of images in differentvideo sequences
對(duì)于表1中測(cè)試序列,本文方法的PSNR范圍為30.7433 dB到34.2147dB,SSIM范圍為0.849到0.8813,整體表現(xiàn)良好.其中,“Ballet”序列的指標(biāo)整體上要好于“Breakdancers”和“BookArrival”序列,這主要是由于該序列具有更高質(zhì)量的深度圖和較為單調(diào)的背景紋理.實(shí)驗(yàn)進(jìn)一步同現(xiàn)有方法進(jìn)行對(duì)比,如表2所示.本文方法的SSIM比文獻(xiàn)[15]稍低,但圖像質(zhì)量總體上好于文獻(xiàn)[12]和文獻(xiàn)[15]中的單視點(diǎn)方法;對(duì)于雙視點(diǎn)方法,本文方法的PSNR也高于文獻(xiàn)[1]和文獻(xiàn)[7]中的雙視點(diǎn)方法,SSIM與文獻(xiàn)[7]基本持平.因此,本文方法具有較好的客觀圖像質(zhì)量.
表2 本文方法與其它文獻(xiàn)方法的圖像客觀質(zhì)量對(duì)比Table 2 Comparison of objective quality of images in thispaper and other paper methods
圖11是本文方法的虛擬視點(diǎn)圖像與真實(shí)圖像的主觀對(duì)比.將圖片放大來(lái)看,可見(jiàn)虛擬視點(diǎn)圖像中的部分細(xì)節(jié)有所損失,存在一些插值造成的模糊痕跡.但整體來(lái)看,虛擬視點(diǎn)圖像與實(shí)際圖像相比沒(méi)有明顯瑕疵,具有一致的主觀質(zhì)量.總體來(lái)說(shuō),本文方法穩(wěn)定性強(qiáng),得到的虛擬視點(diǎn)圖像主客觀質(zhì)量都較好.
圖11 虛擬視點(diǎn)圖像與真實(shí)圖像對(duì)比圖Fig.11 Comparison of virtual view images and real images
本小節(jié)實(shí)驗(yàn)在2個(gè)硬件平臺(tái)上進(jìn)行了計(jì)算性能測(cè)試,平臺(tái)1為Intel i7-8550U和Nvidia MX150,平臺(tái)2為Intel E5-2678和Nvidia Titan Xp.本文方法在處理“Ballet”序列時(shí),各階段具體時(shí)間如表3所示.由于三維映射計(jì)算過(guò)程較為復(fù)雜,除性能較強(qiáng)的GPU平臺(tái)2之外,三維映射及中值濾波環(huán)節(jié)都占據(jù)了50%以上的總耗時(shí).Canny邊緣檢測(cè)在GPU平臺(tái)上也是耗時(shí)較多的環(huán)節(jié),由于在CPU上調(diào)用了已經(jīng)過(guò)優(yōu)化的OpenCV庫(kù)函數(shù),邊緣檢測(cè)的加速效果并不明顯.從總時(shí)間來(lái)看,“Ballet”序列在兩個(gè)平臺(tái)上進(jìn)行GPU加速后都能進(jìn)行流暢的自由視點(diǎn)視頻播放.
表3 本文方法各階段的平均耗時(shí)情況(ms)Table 3 Average time of each step of the proposed method
實(shí)驗(yàn)對(duì)所有序列進(jìn)行了加速比測(cè)試,結(jié)果如表4所示,表中不包含數(shù)據(jù)拷貝的時(shí)間.從表中可以看出,分辨率相同的序
表4 算法對(duì)不同序列的單幀平均處理時(shí)間對(duì)比Table 4 Comparison of average processing time of singleframe for different sequences
列處理時(shí)間相近,而“PoznanHall2”和“PoznanStreet”序列由于分辨率更高,耗時(shí)比其它幾個(gè)序列要更長(zhǎng),且時(shí)間之比約等于像素?cái)?shù)量之比(2.66倍),可見(jiàn)圖像分辨率大小是影響本文算法處理速度的主要因素.由于更多的核心數(shù)量、更高的核心頻率和更高的顯存帶寬,GPU2帶來(lái)的加速效果要明顯好于GPU1,加速比在平臺(tái)1上達(dá)到35倍左右,在平臺(tái)2上則達(dá)到210倍左右.對(duì)于不同的序列,本文方法的加速效果比較穩(wěn)定.
為了實(shí)現(xiàn)自由視點(diǎn)視頻的實(shí)時(shí)交互顯示,本文提出一種高圖像質(zhì)量的虛擬視點(diǎn)繪制方法并進(jìn)行GPU加速.該方法主要使用中值濾波改善小空洞問(wèn)題,通過(guò)基于邊緣檢測(cè)的空洞膨脹以消除虛假邊緣的影響,且減少了不必要的膨脹操作,保護(hù)了前景邊緣;采用基于HSV顏色空間的亮度校正,使得兩視點(diǎn)融合填充的大空洞顯得較為自然;最后還利用考慮深度信息的快速插值方法,有效改善前景邊緣處的空洞插值效果.本文方法獲得的虛擬視點(diǎn)主觀客觀圖像質(zhì)量良好.此外,本文進(jìn)一步采用CUDA編程技術(shù)對(duì)虛擬視點(diǎn)繪制方法進(jìn)行GPU并行加速,將主要計(jì)算環(huán)節(jié)都放在GPU內(nèi)進(jìn)行,并在每個(gè)環(huán)節(jié)為每個(gè)像素單獨(dú)分配線程,實(shí)現(xiàn)像素級(jí)的并行處理,使繪制方法達(dá)到實(shí)時(shí)處理的要求.