趙文博, 劉賢明, 趙德斌, 高 文,2
(1 哈爾濱工業(yè)大學 計算機科學與技術學院, 哈爾濱150001; 2 北京大學 電子工程與計算機學院, 北京100871)
隨著計算機圖形學技術的發(fā)展,三維模型被越來越多的應用在不同的領域中,如工業(yè)設計,虛擬現(xiàn)實,電影,電腦游戲等等。 隨著計算能力的進步,三維模型的精度也越來越高,如今,單個三維模型可包含上萬至數(shù)百萬個頂點與面,這種尺度的模型通過人工進行繪制十分困難。 為了獲取高精度的模型,通常會通過不同的設備掃描真實物體來創(chuàng)建物體表面的點云數(shù)據(jù),再將點云重構為三維模型。 然而,通過這種方法獲得的模型,由于掃描設備精度的限制,不可避免的帶有一定的噪聲,故在使用這些模型之前,去噪是必不可少的步驟。
三維模型去噪的主要目標是在移除噪聲的同時保持特征的形狀。 由于三維模型的分段平滑特性,對三維模型的面法向量進行去噪,隨后更新頂點坐標,比直接對三維模型的頂點坐標進行去噪更加高效。 而在面法向量去噪的研究中,有相當一部分研究是將圖像算法中的相關濾波算法遷移至三維模型去噪中,例如:雙邊濾波,中值濾波,引導向量濾波等等。 然而,這些方法多半為利用局部信息進行去噪,而在圖像去噪算法中,非局部相似性已經得到了充分的利用[1-2]。 由于三維模型具有不規(guī)則的結構,在三維模型中尋找與利用相似結構并非易事,相關研究也較少。 部分研究以頂點為尋找相似結構的基本單位,通過構建局部描述算符來尋找相似結構,并對頂點坐標進行去噪[3-5]。 然而,對面法向量進行去噪,再更新頂點坐標比直接更新頂點坐標更為有效,因此基于頂點的方法并不能獲得很好的結果。故本文首先提出了一種將面組織為k 環(huán)結構,并通過計算k 環(huán)結構的相似性來尋找相似結構的方法。隨后提出了一種結合非局部相似性與局部面法向量的濾波方法。
圖像去噪中,通常以像素塊為基本單位來尋找相似結構。 類似的,在三維模型去噪中需要定義一種結構,作為尋找相似結構的基本單位。 本文選擇將面組合為k 環(huán)結構:設三維模型中的某個面為fi,以其為中心生成的k 環(huán)結構稱為Pi。 最開始,Pi中只包含fi,而k 環(huán)結構是通過將所有與Pi相鄰的面加入Pi,迭代執(zhí)行該過程k 次得到的。 本文認為,如果兩個面至少有一個共同的頂點,則可以認為兩個面是相鄰的。 圖1 中展示了一個2 環(huán)結構,該結構的中心面為粉色,其余面為藍色。
圖1 2 環(huán)結構的例子Fig. 1 An example of a 2-ring patch
接下來給出計算兩個k 環(huán)結構相似度的方法,設待計算相似度的兩個k 環(huán)結構為Pi與Pj。 考慮到在圖像去噪中,需要將兩個像素塊重合,再計算相似度。 由于三維模型具有不規(guī)則的結構,無法做到精確的重合兩個k 環(huán)結構。 因此這里選擇將Pi與Pj的重心重合,以減少噪聲對形狀的影響。 隨后,考慮到兩個像素塊的相似度是通過計算每個相同位置的像素的差距得到的,而對于k 環(huán)結構,即使將2個結構重合,也無法得到每個面的對應面。 因此,需要為每個面找到一個與之對應的面,并計算出對應面的相似性。 假設fi與fj是分別來自于Pi與Pj的面,從2 個角度考慮它們之間的相似性:(1)兩者的形狀相似度;(2)兩者的位置相似度。
對于形狀相似度,選擇使用面法向量來衡量。因為面法向量是用頂點坐標計算出來的,能在一定程度上代表面的形狀。 兩個面的法向量差距越大,相似度越低。 另一方面,兩個像素塊之間的像素是精確對應的,僅僅需要考慮像素值的差距。 在三維模型中,兩個對應面之間會有一定的距離,需要考慮距離對相似度的影響,可以通過計算兩個面之間的重心距離來衡量。 顯然,兩個面的重心距離越遠,其相似度就越低。 綜上所述, fi與fj的相似度Sf( fi,fj) 計算公式(1)為:
其中,ci,cj是fi與fj的重心,ni,nj是fi與fj的法向量,法向量之差加上1 是為了處理兩個面的法向量相同,但是距離很遠的情況。 通過公式(1)計算出來的值越小,兩個面的相似度就越高,而相似度最高的兩個面,就可以認為它們是對應面。
為每個面找到對應的面后,即可計算Pi與Pj的相似度。 兩個結構的相似度可以視為所有對應面的相似度的加權和。 由于每個面的大小不一,較大的面理應具有較大的權重。 兩個結構的相似性的計算公式(2)如下:
其中,aj是fj的面積。
在實際應用中,一般使用2 環(huán)結構,過小的結構會受到噪聲的干擾,而較大的結構會大幅度提高計算相似度的時間復雜度。 對于每個面,將在5 環(huán)范圍內尋找相似結構,5 環(huán)內大致包含200 個面,這樣可以將尋找相似結構的時間控制在合理的范圍內。 在圖2中,給出該算法在兩個噪聲模型上尋找相似結構的結果。 為了方便演示,圖2 中僅僅顯示找到的相似結構的中心。 圖2(a)中,粉色的面為目標面,位于特征的邊緣,而找到的相似結構的中心均位于特征邊緣;圖2(b)中,粉色的面位于一段曲面上,這段曲面沒有明顯的特征結構,該算法還是能夠找到正確的相似結構。 這證明了該算法的有效性與魯棒性。
圖2 在有噪聲模型上尋找相似結構的結果Fig. 2 The results of finding similar structures on noisy meshes
圖像去噪通常會將相似結構中的像素加入濾波中,在三維模型中也可以使用類似的方法。 選擇以引導向量濾波為基礎,在對面fi進行濾波時,除了對局部結構中的面進行濾波,還將與Pi相似的若干個結構中與fi相對應的面加入到濾波中,以此利用非局部相似性優(yōu)化濾波結果。 具體的,對于三維模型中的某個面fi,利用相似結構的對應面與局部結構進行濾波的公式(3)為:
其中,Ni是以fi為中心的1 環(huán)結構,也就是局部結構中的面的集合; gi,gj是引導向量; SFi是與Pi相似的結構中與fi相對的面的集合,即非局部相似結構,該集合的大小為CS; Gd,Gg與GS是高斯權重函數(shù), 對應的權重參數(shù)為σd,σg與σs;ei是歸一化因子,保證最后得到的向量的模長為1。
公式(3)中,如果僅僅使用相似面進行加權,會在特征邊形成很明顯的帶狀區(qū)域,圖3 中展示了僅使用相似結構時產生的帶狀區(qū)域。 可以看到在邊緣處,以及距離邊緣一個面的位置,形成了明顯的帶狀區(qū)域。 這是因為在這些區(qū)域,參與濾波的相似面會呈現(xiàn)類似的帶狀分布。 這種現(xiàn)象會嚴重影響主觀評價結果。 故在濾波中同時使用局部與非局部面是必要的。
圖3 由濾波產生的帶狀區(qū)域Fig. 3 An example of banding region after filtering
本文使用的5 個實驗模型為:Fandisk, Sphere,Julius, Twelve, Block,其中Twelve 模型添加了脈沖噪聲,而其他模型添加了不同等級的高斯噪聲。 同時,選擇如下的方法進行實驗結果對比:雙邊面法向量濾波(BNF),引導向量法向量濾波(GNF),基于L0 優(yōu)化的去噪(L0M),快速保持特征的濾波算法(FE), 本文中的算法則稱為SE。 由于本文算法是一個對GNF 進行優(yōu)化的算法,因此去噪流程與GNF相同,其參數(shù)設置接近于GNF。 對于每個模型,需要進行Nf次面法向量濾波,每次濾波后需進行Nv次更新頂點坐標,σd等于該模型的平均重心距離的2 倍,其他參數(shù)的設置見表1。
表1 本文算法的參數(shù)設置Tab. 1 Parameter settings of SE
表2 中給出客觀實驗結果包含兩部分:面法向量誤差Ea與頂點位置誤差Ev, 每個模型的最優(yōu)客觀結果將被加粗。 由于模型尺度的不同,頂點誤差尺度也有較大的區(qū)別。 為了便于比較,Ev將以科學計數(shù)法表示,且冪次數(shù)寫在表格前面,在計算平均值時,忽略冪次數(shù)。
表2 本文與其他算法的客觀實驗結果對比Tab. 2 Performance comparisons between SE and the state-of-the-art methods
從表2 中可以看出,該算法在兩個指標上表現(xiàn)優(yōu)異,在10 個結果中,該算法獲得了8 個最優(yōu)值,平均結果大幅度領先于其他算法,這充分證明了該算法的有效性。 值得注意的是, Sphere 與Julius 這兩個模型中的曲面較多,故幾乎未考慮特征恢復,重視平滑的BNF 算法表現(xiàn)較好。
最后,進行主觀結果的比較,圖4、圖5 中給出Sphere 與Twelve 兩個模型的主觀結果。 圖4 中,本文的算法在曲面與特征恢復方面均取得了良好的效果,而L0M 與GNF 在曲面恢復時結果不夠平滑,FE與BNF 雖然可以較好的恢復曲面,但是在特征邊上留下了鋸齒狀的噪聲。 圖5 中,BNF、FE 與L0M 均無法恢復特征,GNF 與本文的算法則可以正確的恢復角部特征,但是對于邊緣,本文的算法由于使用了非局部信息,恢復出的邊緣更加平直,GNF 的結果中,邊緣則有一定程度的彎曲。
圖4 Sphere 模型的去噪結果對比Fig. 4 Illustration of thedenoising results of Sphere
圖5 Twelve 模型的去噪結果對比Fig. 5 Illustration of the denoising results of Twelve
本文提出了一種基于非局部相似性的三維模型去噪算法。 為了在不規(guī)則的三維模型上尋找相似結構,我們定義了k 環(huán)結構,并給出了計算兩個k 環(huán)結構相似性的方法。 在面法向量去噪時,為了避免產生帶狀區(qū)域,該算法同時利用了非局部相似結構與局部面法向量進行濾波。 實驗結果表明,該算法在主觀與客觀對比上均能取得良好的結果,并且在特征恢復方面有獨特的優(yōu)勢。