楊坤
(四川大學(xué)計算機學(xué)院,成都 610065)
目前3D 視覺體驗面臨嚴厲挑戰(zhàn):既具有優(yōu)越的交互性,又能自由切換任意視點。面臨這種挑戰(zhàn),自由視點視屏頻(Free-Viewpoint Video,F(xiàn)VV)可以作為重要的突破點,激發(fā)出蘊含的生機和活力。但又出現(xiàn)一個問題:不可能對任意視點進行數(shù)據(jù)采樣。解決該問題的思路是利用已知視點信息獲取未知視點信息。
現(xiàn)存的繪制虛擬視點技術(shù)以兩大方式為主:基于模型的繪制方法(Model Based erringring,MBR)[4]和基于圖像的繪制方法(Image Based Rendering,IBR)[5]。其中,IBR 中的DIBR 被廣泛用于解決視圖合成問題,即利用參考視點的紋理和深度信息來合成目標視點信息。然而合成的視圖又普遍存在空洞問題,這主要源于遮擋形成的像素不可見性。
因此,本文提出一種空洞填充的視點繪制算法流程。首先,根據(jù)每個參考視點視圖,分別生成對應(yīng)的中間結(jié)果視圖。然后,合并中間結(jié)果視圖,得到帶有空洞的結(jié)果視圖。最后,利用高斯混合模型(GMM)[6]聚類算法尋找該空洞點周圍最遠的視差平面,并以該平面上的有效像素對該空洞點進行填充。
目前,DIBR 包含單參考視點方法和多參考視點方法。兩種方法都面臨著裂紋問題、重疊問題、偽影問題、空洞問題。裂紋問題是由于參考視點處的整數(shù)像素點映射到虛擬視點處的非整數(shù)位置時,對非整數(shù)像素取整運算,導(dǎo)致目標視圖出現(xiàn)很多細小的裂紋,主流的解決方案包含逆向映射法和臨近像素賦值法。重疊問題是多點像素映射到同一目標位置,由于選取不當(dāng)?shù)南袼攸c,導(dǎo)致前景點被背景點所覆蓋,主流解決方案包含z-buffer 算法和極線排序算法。偽影問題由于繪制虛擬視點時,遇到深度值突變的邊緣區(qū)域,無法通過深度信息正確的劃分前景和背景像素,造成背景含有明顯的前景輪廓,從而降低繪制的目標圖像質(zhì)量,常見處理方法包含形態(tài)學(xué)處理和深度圖修正,空洞問題是由于在參考視點的存在遮擋現(xiàn)象,導(dǎo)致部分場景信息不可見性,該信息以空洞的形式存在目標圖像上??梢岳蒙疃刃畔ⅲ嗷蛘呃猛ㄟ^紋理、極線、顏色等特征,來作為輔助空洞修復(fù)過程。
視差圖以視差值為像素點,反映的是同一場景在兩個不同視點的成像像素的位置差異。
假如視差圖上某一像素點,對應(yīng)視差值為d,那么左、右攝像機之間的視點,視差值取值范圍是0~d。
下文將左右參考視點分別歸一化到基線位置0 和1 處。位于α(0<α<1)處的虛擬視點視圖,根據(jù)公式(1),將左參考視圖像素位置按照α或者右參考視圖像素位置按照1-α縮放比例進行水平移動即可。
圖1(a)和圖1(b)是利用單視點合成視點RGB 視圖和視差圖,黃色方框標記的區(qū)域是典型的裂紋問題,黑色方框標記的區(qū)域是典型的重疊性問題,紫色方框標記的區(qū)域是典型的偽影問題,紅色方框標記的區(qū)域是典型空洞問題。
圖1
圖2(a)是單參考視點合成視圖,圖2(b)是雙參考視點方法效果更好,顯然雙參考視點方法更好,在一定程度上抑制了裂紋問題、重疊性問題和偽影問題,以及空洞問題。
圖2
對于非整數(shù)列映射點V(r,y),這里采用臨近像素填充法的思想[8],將V(r,y)分別映射到兩個位置,以便降低裂紋效應(yīng)。
在圖3 中,顯然利用(4)式,裂紋問題得到妥善的解決。
圖3
當(dāng)多個出現(xiàn)d1,d1,…,dn多個像素點映射到同一目標像素位置V 時,參考z-buffer 算法[4,7],保存視差值最大的那個像素值:
圖4 中,利用(5)式,重疊性問題得到妥善解決。
由于視差圖經(jīng)過精確校正,利用視差的差值或者梯度進行邊緣檢測便可以達到Canny 邊緣檢測[9]的效果??紤]時間性能,以及視差圖邊緣突變特征,這里利用梯度值進行邊緣檢測,然后膨脹該邊緣,然后區(qū)分膨脹區(qū)域的前后背景,對膨脹區(qū)域?qū)?yīng)的映射像素,采用帶有權(quán)重的中值濾波[9]。在圖4 顯示,采偽影問題得到一定的抑制作用。
圖4
圖5
合成的RGB 視圖VI和視差圖VD中出現(xiàn)的空洞問題,一方面由于參考視圖的采樣率不足的緣故,在新視點中,物體占據(jù)的像素比參考視點中的物體占據(jù)的像素多得多,這時空洞是平面的一部分。另一方面是由可見性引起的遮擋問題,參考視圖中被前景遮擋的區(qū)域在新視圖中是可見的,這時,空洞可能是背景的一部分,這時當(dāng)然可以考慮相鄰視差平面上的像素作為空洞填補的候選,也就是尋找該空洞點周圍最遠的視差平面上的像素。
對于空洞S,分析S 周圍的相鄰像素的視差分布,首先,根據(jù)(6)式,對S 的4 階相鄰像素采用凝聚式層次聚類[10],獲取聚類類別數(shù)k,然后根據(jù)k 值,利用Kmeans 聚類方法重新對空洞S 聚類,接著依據(jù)K-means聚類得到的各個簇,計算出高斯混合模型的初始值,其中質(zhì)心作為均值向量,每個簇中樣本的協(xié)方差矩陣作為協(xié)方差矩陣,每個簇中樣本占總體樣本的比例作為混合系數(shù),最后,運用高斯混合模型聚類方法重新聚類[6]。
其中P,Q為集群,每個簇視為一個視差平面,簇之間的相互距離都大于τd,停止合并流程。
對空洞Si周圍像素聚類后,選定最遠的剩余集群C(Si),利用C(Si)中像素,從邊界開始逐步恢復(fù)Si。最后,根據(jù)(7)式,對于Si中的像素進行中值濾波。
其中y∈N4(x)∩C(Si),N4為4 階領(lǐng)域,每次填充完成后,C(Si)會增加對應(yīng)x。
圖6(a)是沒有進行空洞填補的視差圖,圖6(b)是采用空洞填補的視差,顯然空洞問題得到妥善的解決。
圖6
為了更好地保持邊邊緣信息,這里用雙邊濾波[11]的變體取代中值濾波,根據(jù)公式(8),完成填補空洞的工作。
其中,ws(y),wi(y),wd是被標準化過。
ws(y)用來衡量y 和x 空間相近性的權(quán)重,取值公式為:
wi(y)用來衡量像素值域中輻射差異,取值公式為:
wd用來衡量深度或者視差相近性的權(quán)重,能夠防止被表示其他深度平面像素污染,取值公式為:
對于填充后的彩色圖像和空洞圖片,可能會出現(xiàn)平滑鋸齒偽影,這里可以采用中值濾波進行平滑處理。圖7(a)是沒有進行空洞填補的視圖,圖7(b)是進行空洞填補視圖,顯然效果不錯。
圖7
為了與三種最新算法做對比,選取6 個共同的測數(shù)據(jù),該測試集均來自Middlebury stereo 數(shù)據(jù)集(2005、2006)上被校正過的圖像,對應(yīng)歸一化位置依次為:0.25,0.75,選取0.5 作為虛擬視點位置,選用PSNR 和SSIM 的得分作為客觀的評價標準。在表1 中,與其他三種算法相比提出算法的PSNR 平均值為36.02,SSIM平均值為0.99,取得了一定的效果。
表1 提出的算法和其他三種方法的評估對比表
本文提出一種聚類的視點合成算法流程,運用雙路參考視點合成虛擬視點。針對視圖中的空洞問題,利用高斯混合模型(GMM)的聚類算法,尋找空洞點周圍最遠視差平面,并以此平面上的有效像素對空洞進行填充和修復(fù)。評估結(jié)果表明算法取得了較好的效果。