本發(fā)明涉及三維重建領(lǐng)域,具體是基于改進(jìn)的屏蔽泊松算法的三維點云重建方法。
背景技術(shù):
三維點云重建物體表面在計算機(jī)圖形學(xué)中是一個熱門研究問題,由于設(shè)備和采集方法會產(chǎn)生含有多種可造成表面重建方法缺陷的點云,對三維重建提出重大挑戰(zhàn)。
法向信息是表面重建的重要屬性,它的精確度決定著重建算法的精確性。由于點云數(shù)據(jù)間缺乏拓?fù)溥B接關(guān)系,使得法向量估計和重定向存在一定困難。對于法向的估計主要有基于Delaunay/Voronoi的方法、基于魯棒統(tǒng)計方法和基于局部表面擬合方法這3類?;贒elaunay/Voronoi的方法經(jīng)過Alliez等人改進(jìn)的算法具有全局劃分所帶來的優(yōu)勢,得到了更為可靠的法向量,但無法處理包含外點和具有尖銳特征的點云模型,同時算法也缺乏法向量的校驗。Fleishmen等人基于魯棒統(tǒng)計的方法能夠很好地處理點云模型中的噪聲、異常點和尖銳特征,但是由于需要將每個點的鄰域進(jìn)行分類,需要為每個點域模型設(shè)置合適的大小和距離闊值,這給法向量的估計及表面重建帶來了很大的重建開銷,因此,這種方法不能直接應(yīng)用于大規(guī)模點云。Hoppe等提出基于有向距離函數(shù)(SDF)的局部表面擬合方法,雖然該方法簡單有效,但對于復(fù)雜點云模型的計算精確度低。本文在此基礎(chǔ)上提出基于移動最小二乘法(MLS)曲面算法,通過選擇合適的權(quán)函數(shù)和基函數(shù)對法向量修正更加精確、曲面擬合具有較強(qiáng)魯棒性。
三維點云曲面重建有多種表達(dá)形式,比較常用的是隱氏曲面重建方法。一般大致分為局部方法和全局方法。局部重建方法將所有點云分割成很多小的數(shù)據(jù)塊,分別進(jìn)行局部重建,最后再將這些隱氏曲面用某種拼接函數(shù)拼接起來。該方法對曲面紋理特征有很好的保留,但很容易受到噪聲影響。全局曲面重建是對所有點云的逼近,通過求解極值等優(yōu)化重建隱式曲面,整體光滑度高,適合不規(guī)則,非均勻散亂數(shù)據(jù)的插值和空洞修復(fù)。常用的全局曲面重建主要有徑向基函數(shù)(RBF)方法和泊松重建方法。RBF主要是通過求解一個線性方程組來確定RBF對應(yīng)的權(quán)值,而不是人為指定,但算法復(fù)雜,徑向基函數(shù)過多而且各不相同,如果曲面重建出現(xiàn)平滑,容易忽略點云尖銳特征等缺點。而泊松重建方法兼具全局重建和局部重建的優(yōu)點,同時插入所有點,因而不借助啟發(fā)式的分割或合并,同時能允許對局部的函數(shù)劃分層次結(jié)構(gòu),能夠保證曲面整體光滑度,對噪聲具有較強(qiáng)的魯棒性,對孔洞也有很強(qiáng)的修補(bǔ)。但是泊松曲面重建算法過程不引入和模型形態(tài)相關(guān)的信息,因而容易在非封閉的點云自動重建產(chǎn)生大量不規(guī)則且不合適的偽曲面,影響曲面重建效果。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是針對現(xiàn)有技術(shù)存在的不足,提出一種基于改進(jìn)的屏蔽泊松算法的三維點云重建方法,能從整體上提高了法向量精確度,減少了法向估計誤差,能很好去除偽封閉曲面,同時對孔洞有良好填充,對表面信息豐富的物體模型點云數(shù)據(jù),能夠使紋理細(xì)節(jié)更顯著,重建效果好。
本發(fā)明基于屏蔽泊松算法的三維點云重建方法,包括如下具體步驟:
S1:獲取模型三維點云數(shù)據(jù);
隨著技術(shù)的發(fā)展,新的掃描技術(shù)和數(shù)據(jù)采集技術(shù)正在推動數(shù)據(jù)集表面重建的規(guī)模急劇增加,三維點云的獲取更加簡單,通過三維掃描儀掃描模型,獲取模型三維點云數(shù)據(jù)。
S2:引入屏蔽因子,通過引入點和梯度的約束來對泊松算法進(jìn)行預(yù)處理約束限制,避免指示函數(shù)發(fā)生偏移從而找不到合適的全局偏移量使得所有點平均值為0,無法得到最佳匹配算法;
給定一系列帶權(quán)重w的輸入點集P:P→R≥0,添加梯度約束和離散點的值約束來使方程在采樣點的誤差得到修正,即指示函數(shù)χ最小化公式為:
式中,p為輸入點集的一個樣本點p∈P,表示的是有向點集,表示的是指示函數(shù)梯度,屏蔽因子α表示一個權(quán)衡擬合梯度和擬合值重要與否的權(quán)值,Area(P)表示所重建表面的區(qū)域,其由局部采樣密度計算估計獲得。為方便計算,設(shè)置每一個采樣點的權(quán)值W(p)=1,公式(1)可簡化為:
其中所代表的是在單位立方體中(標(biāo)量值和矢量值)函數(shù)空間上的標(biāo)準(zhǔn)的內(nèi)積:
<.,.>(w.p)所代表的是在單位立方體體素中的函數(shù)空間上的形式,其具備的特性是雙線性、對稱性、非負(fù)以及半定性,<.,.>(w.p)是根據(jù)函數(shù)值的加權(quán)和而得到的:
S3:八叉樹分割
使用八叉樹分割對點云簡化去噪,壓縮存儲,建立點云間拓?fù)浣Y(jié)構(gòu),實現(xiàn)快速建立和高效查找八叉樹鄰節(jié)點;
設(shè)置函數(shù)空間:點樣本在模型表面均勻分布情況下,設(shè)置函數(shù)空間可將指示函數(shù)梯度進(jìn)行離散化,給定一個輸入數(shù)據(jù)集S,最大樹深為D,定義八叉樹σ為每個樣本點落在深度為D的葉子結(jié)點上的最小八叉樹;
定義函數(shù)空間為具有單位積分、尺度縮放和位置移動的基函數(shù)F:R3→R,其節(jié)點o∈σ可定義節(jié)點函數(shù)Fo,它以節(jié)點o為中心和寬度展開,則節(jié)點函數(shù)公式為:
其中o.c和o.w分別表示節(jié)點o的中心和寬度。
S4:對每個點云法向量進(jìn)行法向估計、重定向,減少法向指向的二義性;
使用移動最小二乘法(MLS)表面定義中的局部參考平面作為每個點的法向量,通過對點云中每個點p的所有相鄰點賦予高斯權(quán)值θ(·),距離當(dāng)前點較近的點將會對法向量估計結(jié)果產(chǎn)生相對較大的影響,從而可以得到更平滑的估計結(jié)果,局部參考平面公式為:
其中n為平面P的法向量,d為P到坐標(biāo)原點o的距離,P經(jīng)過k個最近點的質(zhì)心,法向量n需滿足||n||2=1,θ(·)以每個點到當(dāng)前點在參考平面的投影點p0的距離為參數(shù)。
令ni和nj為相鄰兩點ri和rj的法向量,如果<ni,nj>=-1,則進(jìn)行法向翻轉(zhuǎn)。對每個點云法向量進(jìn)行法向估計、重定向,減少法向指向的二義性,通過對點云法向量約束,進(jìn)一步約束法向傳播方向。
S5:計算向量場;
選擇一個基函數(shù)F使得向量場精確有效的表示為節(jié)點函數(shù)Fo的線性和,為達(dá)到子節(jié)點的精度,使用三次線性插值法分配樣本點到八個最鄰近的節(jié)點。這樣,指示函數(shù)的梯度場近似值公式為:
其中NgbrD(s)為最鄰近s.p的八個深度為D的節(jié)點,{αo.s}為三次線性插入的權(quán)值,如果最鄰近點不在八叉樹中,將對八叉樹進(jìn)行修改從而納入最鄰近點,表示為s.p的向內(nèi)曲面法線即
S6:求解屏蔽泊松方程,得到指示函數(shù);
根據(jù)方程(5)式得到向量場后,使用多重網(wǎng)格算法求屏蔽泊松方程的解;
操作子可定義為:因為操作子是正定的,因而上式方程為屏蔽泊松方程。
S7:對點云等值面提取,得到三維重建模型;
獲取了指示函數(shù)后,選擇一個等值,然后通過計算指示函數(shù)提取對應(yīng)的等值面,這樣就可以獲得模型表面
通過估計樣本點的位置來估計指示函數(shù)然后使用平均值來提取等值面:
指示函數(shù)的縮放操作對于等值面提取效果不會影響重建結(jié)果,后面采用優(yōu)化過移動立方體算法來進(jìn)行等值面的提取操作。
本發(fā)明方法與現(xiàn)有技術(shù)相比,采用改進(jìn)的屏蔽泊松重建算法進(jìn)行三維點云重建,有效克服了法向指向不一致性,可獲取點云精準(zhǔn)的向量場;三角網(wǎng)絡(luò)抽取時不含移動立方體中沒有點云的不會輸出三角網(wǎng)絡(luò)模型,很好去除偽封閉曲面。同時對孔洞有良好填充,對表面信息豐富的物體模型點云數(shù)據(jù),能夠使紋理細(xì)節(jié)更顯著。若掃描點云含有顏色信息可以利用點云顏色信息重建紋理表面顏色。本發(fā)明方法可大量應(yīng)用于醫(yī)學(xué)圖像、逆向工程、歷史文物修復(fù)等領(lǐng)域。
附圖說明
圖1是本發(fā)明三維點云重建的直觀圖例。
圖2是本發(fā)明三維點云重建方法的流程圖。
圖3是使用現(xiàn)有泊松算法實現(xiàn)老鷹模型重建的模型圖。
圖4是使用現(xiàn)有屏蔽泊松算法實現(xiàn)老鷹模型重建的模型圖。
圖5是使用本發(fā)明改進(jìn)的屏蔽泊松算法實現(xiàn)老鷹模型重建的模型圖。
圖6是使用現(xiàn)有泊松算法實現(xiàn)兔子模型重建的模型圖。
圖7是使用現(xiàn)有屏蔽泊松算法實現(xiàn)兔子模型重建的模型圖。
圖8是使用本發(fā)明改進(jìn)的屏蔽泊松算法實現(xiàn)兔子模型重建的模型圖。
具體實施方式
下面結(jié)合實施例和附圖對本發(fā)明內(nèi)容作進(jìn)一步的說明,但不是對本發(fā)明的限定。
實施例:
參照圖1,基于改進(jìn)的屏蔽泊松算法的方法,把點云的表面重建轉(zhuǎn)化為一個空間泊松問題。利用模型表面有向點集和指示函數(shù)(模型內(nèi)部的點定義為1,外部的點為0)梯度之間的內(nèi)在關(guān)系,對有向點集線性求和來近似計算這個曲面積分,然后通過三維指示函數(shù)的梯度場計算指示函數(shù),最后通過提取合適的等值面獲得重建的表面。如果直接計算梯度場會造成向量場在模型表面的邊緣無限大,因而先通過一個平滑濾波函數(shù)和指示函數(shù)進(jìn)行卷積運(yùn)算,再通過使用平滑后函數(shù)的梯度場。
下面是根據(jù)散度定理得到的平滑后指示函數(shù)的梯度與有向點集的內(nèi)在關(guān)系:
定義三維實體M的表面邊界為χM表示M的指示函數(shù),若表示p點的向內(nèi)曲面法線,為一個平滑濾波器,表示到p點平移。根據(jù)散度定理平滑后的指示函數(shù)的梯度等于平滑后的曲面法線場
由于模型表面的幾何未知,不能近似計算曲面積分。所以通過離散求和近似計算曲面積分,使用點集P把分割為不同的小曲片我們可以根據(jù)點樣本p的值和小面片的面積的乘積近似計算小面片上的積分:
求出向量場后可以解出指示函數(shù)使得但是與路徑無關(guān),不可積。因此精確解一般不存在。
參照圖2,本發(fā)明基于屏蔽泊松算法的三維點云重建方法,具體包括如下步驟:
S1:獲取模型三維點云數(shù)據(jù);
隨著技術(shù)的發(fā)展,新的掃描技術(shù)和數(shù)據(jù)采集技術(shù)正在推動數(shù)據(jù)集表面重建的規(guī)模急劇增加。由于傳統(tǒng)方式獲取的點云噪聲大,準(zhǔn)確度低,可靠性不強(qiáng),本發(fā)明選擇斯丹福大學(xué)提供的通過三維掃描設(shè)備獲取的模型點云。但設(shè)備和采集方法往往會產(chǎn)生含有多種可造成點云數(shù)據(jù)質(zhì)量不佳,比如點噪聲,點云孔洞,這對三維重建提出重大挑戰(zhàn)。
S2:引入屏蔽因子,通過引入點和梯度的約束來對泊松算法進(jìn)行預(yù)處理約束限制,避免指示函數(shù)發(fā)生偏移從而找不到合適的全局偏移量使得所有點平均值為0,無法得到最佳匹配算法;
給定一系列帶權(quán)重w的輸入點集P:P→R≥0,添加梯度約束和離散點的值約束來使方程在采樣點的誤差得到修正,即指示函數(shù)χ最小化公式為:
式中,p為輸入點集的一個樣本點p∈P,表示的是有向點集,表示的指示函數(shù)的梯度,屏蔽因子α表示一個權(quán)衡擬合梯度和擬合值重要與否的權(quán)值,Area(P)表示所重建表面的區(qū)域,其由局部采樣密度計算估計獲得。為方便計算,設(shè)置每一個采樣點的權(quán)值W(p)=1,公式(1)可簡化為:
其中所代表的是在單位立方體中(標(biāo)量值和矢量值)函數(shù)空間上的標(biāo)準(zhǔn)的內(nèi)積:
<.,.>(w.p)所代表的是在單位立方體體素中的函數(shù)空間上的形式,其具備的特性是雙線性、對稱性、非負(fù)以及半定性,<.,.>(w.p)是根據(jù)函數(shù)值的加權(quán)和而得到的:
S3:八叉樹分割
使用八叉樹分割對點云簡化去噪,壓縮存儲,建立點云間拓?fù)浣Y(jié)構(gòu),實現(xiàn)快速建立和高效查找八叉樹鄰節(jié)點;
設(shè)置函數(shù)空間:點樣本在模型表面均勻分布情況下,設(shè)置函數(shù)空間可將指示函數(shù)梯度進(jìn)行離散化,給定一個輸入數(shù)據(jù)集S,最大樹深為D,定義八叉樹σ為每個樣本點落在深度為D的葉子結(jié)點上的最小八叉樹;
定義函數(shù)空間為具有單位積分、尺度縮放和位置移動的基函數(shù)F:R3→R,其節(jié)點o∈σ可定義節(jié)點函數(shù)Fo,它以節(jié)點o為中心和寬度展開,則節(jié)點函數(shù)公式為:
其中o.c和o.w分別表示節(jié)點o的中心和寬度。
S4:對每個點云法向量進(jìn)行法向估計、重定向,減少法向指向的二義性;
使用移動最小二乘(MLS)表面定義中的局部參考平面(式(4))作為每個點的法向量,通過對點云中每個點p的所有相鄰點賦予高斯權(quán)值θ(·),距離當(dāng)前點較近的點將會對法向量估計結(jié)果產(chǎn)生相對較大的影響,從而可以得到更平滑的估計結(jié)果,局部參考平面公式為:
其中n為平面P的法向量,d為P到坐標(biāo)原點o的距離,P經(jīng)過k個最近點的質(zhì)心,法向量n需滿足||n||2=1,θ(·)以每個點到當(dāng)前點在參考平面的投影點p0的距離為參數(shù);
令ni和nj為相鄰兩點ri和rj的法向量,如果<ni,nj>=-1,則進(jìn)行法向翻轉(zhuǎn)。對每個點云法向量進(jìn)行法向估計、重定向,減少法向指向的二義性,通過對點云法向量約束進(jìn)一步約束法向傳播方向。
S5:計算向量場;
選擇一個基函數(shù)F使得向量場精確有效的表示為節(jié)點函數(shù)Fo的線性和,為達(dá)到子節(jié)點的精度,使用三次線性插值法分配樣本點到八個最鄰近的節(jié)點。這樣,指示函數(shù)的梯度場近似值公式為:
其中NgbrD(s)為最鄰近s.p的八個深度為D的節(jié)點,{αo.s}為三次線性插入的權(quán)值,表示為s.p的向內(nèi)曲面法線即如果最鄰近點不在八叉樹中,將對八叉樹進(jìn)行修改從而納入最鄰近點。
S6:求解屏蔽泊松方程,得到指示函數(shù);
根據(jù)方程(5)式得到向量場后,使用多重網(wǎng)格算法求屏蔽泊松方程的解;
由內(nèi)積和<.,.>(w.p)定義一種映射關(guān)系,這種關(guān)系將函數(shù)空間的和ζ(w.s)投影到這兩部分:
(ζ(w.s)(f))(g)=<f,g>(w.s)
則操作子可定義為:因為操作子是正定的,因而上式方程為屏蔽泊松方程;
當(dāng)基函數(shù){B1,B2,...,Bn}:R3→R被給定,即三次B樣本函數(shù)集合。則這離散化變成
因此,解本身就用基函數(shù)表示
解稀疏線性系統(tǒng)A·χ=b轉(zhuǎn)化為求解{χi}的系數(shù)解;
其中
和
對于八叉樹每個節(jié)點深度d都有一個線性系統(tǒng)Ad·χd=bd,相應(yīng)使用B樣條{B1d,B2d,...,Bnd}可以轉(zhuǎn)化為
求解χ主要有三種方法:直接法、迭代法和多重網(wǎng)絡(luò)求解法。雖直接法能得到精確值,但花費(fèi)的代價太大。迭代法和多重網(wǎng)絡(luò)求解法雖得到近似值,但求解所用的時間和所占內(nèi)存小很多。由于迭代法在迭代過程中能迅速將高頻分量衰減,但在處理低頻分量速度越來越慢,耗時較大。多重網(wǎng)格求解泊松方程速度快。本發(fā)明采用多重網(wǎng)絡(luò)算法求解泊松方程。通過迭代光滑在細(xì)網(wǎng)格將高頻分量衰減掉,然后將次高頻其約束到更粗一層網(wǎng)絡(luò),繼續(xù)粗網(wǎng)絡(luò)進(jìn)行衰減,直到誤差足夠光滑。然后通過插值將粗網(wǎng)絡(luò)的解迭代為上一層細(xì)網(wǎng)絡(luò)提高精準(zhǔn)的誤差校正結(jié)果,直到收斂精度。
S7:對點云等值面提取,得到三維重建模型;
獲取了指示函數(shù)后,選擇一個等值,然后通過計算指示函數(shù)提取對應(yīng)的等值面,這樣就可以獲得模型表面
通過估計樣本點的位置來估計指示函數(shù)然后使用平均值來提取等值面:
指示函數(shù)的縮放操作對于等值面提取效果不會影響重建結(jié)果,后面采用優(yōu)化過移動立方體算法來進(jìn)行等值面的提取操作。
參照圖3-5和圖6-8分別展示實現(xiàn)了老鷹和兔子重建的例子,圖3是使用現(xiàn)有泊松算法實現(xiàn)老鷹模型重建的模型圖;圖4是使用現(xiàn)有屏蔽泊松算法實現(xiàn)老鷹模型重建的模型圖;圖5是使用本發(fā)明改進(jìn)的屏蔽泊松算法實現(xiàn)老鷹模型重建的模型圖;圖6是使用現(xiàn)有泊松算法實現(xiàn)兔子模型重建的模型圖;圖7是使用現(xiàn)有屏蔽泊松算法實現(xiàn)兔子模型重建的模型圖;圖8是使用本發(fā)明改進(jìn)的屏蔽泊松算法實現(xiàn)兔子模型重建的模型圖。通過對比模型圖,使用本發(fā)明改進(jìn)的屏蔽泊松算法重建的模型能很好去除偽封閉曲面,模型紋理更加詳細(xì)。同時對孔洞有良好填充,對表面信息豐富的物體模型點云數(shù)據(jù),能夠使紋理細(xì)節(jié)更顯著。