溫佩芝,寧如花,吳曉軍,黃錦芳
(1.桂林電子科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣西 桂林 541004;2.哈爾濱工業(yè)大學(xué) 深圳研究生院機(jī)電工程與自動(dòng)化學(xué)院,廣東 深圳 518055)
隨著三維掃描技術(shù)的日益發(fā)展,三維點(diǎn)云模型已大量應(yīng)用于逆向工程[1-2]、計(jì)算機(jī)輔助設(shè)計(jì)(Computer Aided Design,CAD)[3]、機(jī)械制造、醫(yī)學(xué)影像、虛擬現(xiàn)實(shí)和動(dòng)漫等領(lǐng)域。但實(shí)際掃描獲得的三維點(diǎn)云數(shù)目較為龐大、邊緣模糊、模型的拓?fù)浣Y(jié)構(gòu)不清晰,給曲面重建帶來了很大的困難,尤其是非封閉曲面的三維重建,目前仍是計(jì)算機(jī)圖形學(xué)領(lǐng)域研究的一個(gè)難點(diǎn)問題。
在三維點(diǎn)云模型曲面重建方法中,已有多種曲面模型表達(dá)形式,比較常用的是隱式函數(shù)表達(dá)形式。隱式函數(shù)方法大致分為全局方法和局部方法。全局?jǐn)M合法通常定義隱式函數(shù)為以樣本點(diǎn)為中心的徑向基函數(shù)(Radial Basis Function,RBF)的加權(quán)和[4-6],但易產(chǎn)生平凡解,無法進(jìn)行重建,同時(shí)因其全局性對(duì)數(shù)據(jù)的要求是完整的、封閉的,對(duì)非封閉的模型往往不能重建出模型的曲面;局部擬合方案是利用八叉樹將散亂數(shù)據(jù)點(diǎn)集分割成多個(gè)小區(qū)域,在每個(gè)子區(qū)域中應(yīng)用分段二次曲面函數(shù)進(jìn)行擬合,然后用MPU(multi-level partition of unity)函數(shù)將各個(gè)子區(qū)域函數(shù)加權(quán)求和拼接出全局函數(shù)[7],該方法具有運(yùn)算速度快的優(yōu)勢(shì),但不具備抗噪性,要求點(diǎn)云模型不能含有噪聲。然而,采用MPU算法對(duì)非封閉的模型曲面進(jìn)行重建時(shí),在非封閉的模型邊緣易產(chǎn)生大量不規(guī)則且不合理的偽面片。
當(dāng)前曲面重建技術(shù)中的新熱點(diǎn)——泊松算法[8]結(jié)合了全局和局部擬合方法的優(yōu)點(diǎn)。因?yàn)樵撍惴ㄊ侨值?,所以在形成鄰近區(qū)域和調(diào)整權(quán)重時(shí)不涉及啟發(fā)式的決策,但是其基函數(shù)與周圍空間相關(guān)而不是與數(shù)據(jù)點(diǎn)相關(guān),是局部的,因此泊松重建算法具有多分辨率結(jié)構(gòu),從而產(chǎn)生一個(gè)稀疏的矩陣系統(tǒng),加快了計(jì)算的速度;泊松算法還能很好地捕捉曲面的細(xì)節(jié),重建精度高于其他隱式算法。然而,泊松曲面重建算法過程不引入與模型形態(tài)相關(guān)的信息,故泊松重建的模型是水密(watertight)的,對(duì)不封閉的點(diǎn)云模型,它會(huì)自動(dòng)重建出封閉的曲面,因此非封閉的模型曲面重建不能直接應(yīng)用泊松算法。
針對(duì)上述問題,受二維圖像分割大律法(OTSU)閾值方法[9]的啟示,本文提出一種基于曲面三角面片周長(zhǎng)的閾值分割方法,引入泊松算法實(shí)現(xiàn)了三維非封閉曲面的準(zhǔn)確重建。首先,利用泊松算法進(jìn)行三維曲面重建,然后根據(jù)生成曲面的小三角面片的周長(zhǎng)大小分布概率,從生成的三角面片中選出比對(duì)的樣本點(diǎn),計(jì)算樣本點(diǎn)與原始輸入點(diǎn)的距離,根據(jù)原始點(diǎn)到偽平面三角點(diǎn)的距離明顯大于原始點(diǎn)到模型曲面三角點(diǎn)距離的特性,將三角點(diǎn)分為偽平面三角點(diǎn)和模型曲面三角點(diǎn)兩類,計(jì)算原始輸入點(diǎn)到模型曲面三角點(diǎn)的平均最大距離,將其設(shè)為分割閾值T,保留距離小于T的點(diǎn)而去除距離大于T的點(diǎn),即可分割出非封閉的模型曲面。實(shí)驗(yàn)結(jié)果表明,該算法能準(zhǔn)確有效地去除偽封閉曲面而不影響原生成曲面的精度,算法復(fù)雜度低、時(shí)間效率高、魯棒性強(qiáng),從而解決了非封閉模型曲面三維重建的技術(shù)難題,拓展了泊松算法的實(shí)際應(yīng)用范圍。
S是輸入三維模型的點(diǎn)集,其中的一個(gè)樣本s∈S,每個(gè)樣本包含一個(gè)點(diǎn)s.p和一個(gè)內(nèi)法線s.N,給定一個(gè)三維實(shí)體M,其邊界為?M,用χM表示M 的指示函數(shù),即曲面內(nèi)的點(diǎn)定義為1,曲面外的點(diǎn)為0,N?M(p)表示p點(diǎn)(p∈?M)的向內(nèi)曲面法線(q)為
給定一個(gè)樣本點(diǎn)集S和最大深度D,定義八叉樹O為每個(gè)樣本點(diǎn)都落在深度為D的葉子節(jié)點(diǎn)上的最小八叉樹。
把物體表面?M分割為不同的小面片Ps??M,可以根據(jù)樣本點(diǎn)s.p的值和小面片面積的乘積近似計(jì)算小面片Ps上的積分[8]
式中o·c和o·w分別是節(jié)點(diǎn)o的中心和寬度。
為提高效率,本文用一個(gè)簡(jiǎn)化的函數(shù)來近似單位方差濾波器,使得計(jì)算的散度和拉普拉斯算子都是稀疏的,因此設(shè)F為一個(gè)盒濾波器的n階卷積[8],
為了達(dá)到子節(jié)點(diǎn)的精度,避免采用葉子節(jié)點(diǎn)的中心近似為采樣點(diǎn)的位置,取而代之的是使用三次線性插值法分配樣本點(diǎn)到八個(gè)最鄰近的節(jié)點(diǎn),這樣可以定義曲面函數(shù)梯度場(chǎng)的近似值
式中:NgbrD(s)為最鄰近s·p的8個(gè)深度為D 的節(jié)點(diǎn),{αo,s}為三次線性插值的權(quán)。
給定|O|維向量v,其第o個(gè)坐標(biāo)為vo=〈▽,V,F(xiàn)o〉,求解的目標(biāo)是解使得▽在空間FO,F(xiàn)上的投影盡可能接近▽·V的投影。對(duì)于每個(gè)o和o′,L在(o,o′)處的元素設(shè)為
圖1所示為MPU算法和泊松算法對(duì)圖1a模型重建曲面的效果。圖1a是不封閉的原始點(diǎn)云數(shù)據(jù)模型;圖1b是MPU算法重建的模型曲面,在非封閉模型曲面的邊界處,算法生成的曲面不規(guī)則且存在較多不合理的偽曲面;圖1c為泊松算法重建的效果圖。由圖1可見,泊松算法重建的曲面效果比MPU重建效果好,曲面結(jié)構(gòu)特征符合原始模型,所生成的曲面較光順。但從實(shí)驗(yàn)結(jié)果也可以明顯看出,對(duì)于原非封閉的曲面模型,泊松算法重建自動(dòng)生成了封閉的偽曲面,這給實(shí)際應(yīng)用帶來了諸多不便。
從上述實(shí)驗(yàn)結(jié)果可以看出,對(duì)于非封閉的模型,圖1b的MPU算法重構(gòu)的曲面不能正確表達(dá)原始模型的特征,邊緣處產(chǎn)生較多不規(guī)則的偽曲面。圖1c中泊松重建的曲面模型,重建曲面光順且能很好地反映模型的特征,但只能重建出watertight的封閉曲面。目前在實(shí)際應(yīng)用中,大多采用人工手動(dòng)割除重建生成的多余的偽曲面,這不但需要操作人員具有較高的專業(yè)水平,而且很難確定準(zhǔn)確的邊緣,效率較低。對(duì)此,受二維圖像閾值分割思想的啟發(fā),本文提出一種新的三維非封閉曲面重建自動(dòng)閾值分割算法。
為了將非封閉曲面重建出現(xiàn)的偽封閉曲面分割出去,借鑒二維圖像處理中OTSU閾值分割方法[5]的思想,OTSU算法是以圖像的一維直方圖為依據(jù),將圖像分成背景和目標(biāo)兩部分,以背景和目標(biāo)之間的類間方差最大為閾值選取準(zhǔn)則,此算法在二維圖像處理中能取得很好的分割效果。但是,本文分割的對(duì)象是由三維點(diǎn)云模型重構(gòu)的模型曲面,如何將二維圖像的分割思想轉(zhuǎn)換到三維模型空間,研究適用于三維模型的分割閾值算法,是本文研究的重點(diǎn)。以下為本算法的主要思想:
已知隱式曲面可視化是利用很多細(xì)小的三角面片去逼近實(shí)際模型表面,即重構(gòu)出的模型曲面由大量的三角面片構(gòu)成。假設(shè)構(gòu)成三角面片的三個(gè)頂點(diǎn)為v1,v2和v3,稱為三角點(diǎn);三角面片的三邊長(zhǎng)度分別為e1,e2和e3,則三角面片周長(zhǎng)L=e1+e2+e3。
由圖1d可見,泊松算法重建的封閉曲面,模型外三角面片的數(shù)目相對(duì)較少,構(gòu)成偽封閉曲面的三角面片周長(zhǎng)比模型曲面上的三角面片周長(zhǎng)要大,但在模型邊緣的曲面,三角面片面積逐漸增大、周長(zhǎng)逐漸增加,并沒有明顯的邊界區(qū)分,因此采用人工的方法很難準(zhǔn)確地對(duì)生成的封閉曲面進(jìn)行分割。
原始點(diǎn)云數(shù)據(jù)與重建曲面時(shí)生成的三角面片的三角點(diǎn)存在密切的關(guān)系。一般而言,三角點(diǎn)都落在原始輸入點(diǎn)附近,如圖2a所示的半圓球模型;泊松重建后得到封閉的圓球曲面,圖2b中深色點(diǎn)為生成的封閉圓球曲面三角面片的三角點(diǎn),淺色點(diǎn)為原始半圓球模型輸入數(shù)據(jù)點(diǎn),由圖可知,模型曲面上的三角點(diǎn)分布在原始輸入點(diǎn)附近,且與原始輸入點(diǎn)距離較近,而偽平面三角點(diǎn)分布在原始模型輸入點(diǎn)外側(cè),遠(yuǎn)離原始輸入點(diǎn);圖2c所示為圖2b中黑色方框放大后的點(diǎn)云分布情況,淺色點(diǎn)p為原始輸入點(diǎn),q1,q2和q3為三角點(diǎn),其中q3為偽平面的三角點(diǎn),q1和q2為模型曲面上的三角點(diǎn),可見p點(diǎn)到q1和q2的距離明顯比到q3的距離小。利用這一特性,根據(jù)重建曲面三角點(diǎn)的密度分布,求取原始輸入點(diǎn)到模型曲面單位圓內(nèi)三角點(diǎn)的平均最大距離,將其設(shè)定為分割閾值T,然后分別計(jì)算原始輸入點(diǎn)與重建曲面三角點(diǎn)間的距離,將距離大于閾值T的三角點(diǎn)去掉,保留小于閾值T的三角點(diǎn),從而準(zhǔn)確地重建出非封閉模型曲面。
由上述分析可知,要找到分割閾值,必須將模型曲面上的三角點(diǎn)與原始輸入點(diǎn)進(jìn)行距離比較。但是如果將模型曲面上所有三角點(diǎn)與原始輸入點(diǎn)進(jìn)行比較,則計(jì)算量較大,為了減少內(nèi)存消耗,采集模型曲面上的部分三角點(diǎn)作為比較的樣本。由圖2c可知,模型曲面的三角點(diǎn)基本上都落在原始輸入點(diǎn)附近,而偽封閉曲面的三角點(diǎn)離原始輸入點(diǎn)較遠(yuǎn)。因此,可以通過采集部分在模型曲面上的三角點(diǎn)作為比較的樣本點(diǎn)。因?yàn)槲挥谀P颓嫔系娜敲嫫荛L(zhǎng)較小,數(shù)目較多,出現(xiàn)相同周長(zhǎng)的概率越大,所以可以通過計(jì)算生成三角面片的周長(zhǎng),按相同周長(zhǎng)出現(xiàn)的概率大小采集樣本點(diǎn)來計(jì)算閾值。
假設(shè)泊松算法進(jìn)行模型重建時(shí)生成的三角面片的邊的集合A=a1i,a2i,a3i,i=1,…,Q,Q 為重建模型上全部三角面片的個(gè)數(shù)。則每個(gè)三角面片的周長(zhǎng)
按以下步驟采集樣本點(diǎn):
步驟1 按像素的概念將每個(gè)周長(zhǎng)Li同乘以一個(gè)倍數(shù),擴(kuò)大到整數(shù)L′i。
步驟2 將L′i的最小值標(biāo)記為L(zhǎng)′min、最大值標(biāo)記為L(zhǎng)′max,則三角面片周長(zhǎng)的大小范圍為[L′min,L′max],其中周長(zhǎng)為L(zhǎng)′j的三角面片的總個(gè)數(shù)為μj,分布概率為
步驟3 將分布概率由大到小進(jìn)行排列,選取前面分布概率大的g個(gè)周長(zhǎng)L′i(i=1,…,M)對(duì)應(yīng)的三角面片為樣本,每個(gè)周長(zhǎng)對(duì)應(yīng)3個(gè)三角點(diǎn),則一共有M′=3g個(gè)樣本點(diǎn),將樣本點(diǎn)集合記為X={xi|i=1,…,M′}。實(shí)際計(jì)算時(shí),可根據(jù)經(jīng)驗(yàn)隨機(jī)選取一個(gè)適當(dāng)?shù)膅來采集樣本點(diǎn)。
為了割除泊松算法對(duì)非封閉點(diǎn)云數(shù)據(jù)重建生成的偽封閉曲面,需要找到一個(gè)自適應(yīng)閾值來自動(dòng)保留非封閉曲面模型邊界內(nèi)的點(diǎn),而除去模型邊界外的點(diǎn)。首先計(jì)算以上獲得的M′個(gè)樣本點(diǎn)與原始輸入點(diǎn)的距離,假設(shè)原始輸入點(diǎn)的個(gè)數(shù)為k,則原始輸入點(diǎn)的集合P={p1,…,pk},對(duì)應(yīng)法向量的集合V={v1,…,vk},pi,vi∈R3,則每個(gè)樣本點(diǎn)到原始輸入點(diǎn)集的歐氏距離
將dij按列固定,每列由小到大進(jìn)行排列。設(shè)生成曲面模型對(duì)應(yīng)的點(diǎn)云數(shù)目為k′,則生成曲面前后點(diǎn)云數(shù)目的比例
如果輸入原始點(diǎn)云數(shù)據(jù)的密度為ρ(即以某點(diǎn)為中心的單位圓內(nèi)點(diǎn)的數(shù)目),則生成新的點(diǎn)云密度為
取dij的第[ρ′]行,計(jì)算平均值
步驟1 設(shè)生成曲面的點(diǎn)云數(shù)據(jù)的集合P′={p′1,…,p′N′},對(duì)應(yīng)法向量的集合V′={v′1,…,v′k′},遍歷每個(gè)p′i,如果滿足
則將p′i標(biāo)記為1,即保留此點(diǎn);如果不滿足,則標(biāo)記p′i為0,即為要割除的點(diǎn)。
步驟2 去除含有標(biāo)記為0的三角點(diǎn)的三角面片,保留標(biāo)記為1的三角點(diǎn)的三角面片,從而完成偽封閉曲面的割除,得到真實(shí)的非封閉模型曲面。
在VC++6.0和OpenGL環(huán)境中實(shí)現(xiàn)了上述算法,計(jì)算機(jī)硬件配置為PⅣ3.0GHz CPU,2.0 GB內(nèi)存。對(duì)20組非封閉的點(diǎn)云模型進(jìn)行泊松三維重建及分割實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,使用本文算法對(duì)泊松三維重建生成的偽封閉曲面均能取得較好的分割效果,且算法魯棒性強(qiáng)、穩(wěn)定可靠。下面給出部分實(shí)驗(yàn)結(jié)果,其中模型的分割閾值如表1所示。
圖3和圖4所示為明顯的不封閉模型。圖3是馬體模型的分割效果圖,從圖3a可以看出,原始點(diǎn)云是不封閉的模型,圖3b是泊松算法自動(dòng)重建出的模型封閉曲面,利用本文算法計(jì)算出分割閾值T=0.16,可以很好地將封閉的曲面分割出來,分割結(jié)果準(zhǔn)確,分割邊緣光順,如圖3c所示。對(duì)圖4的髖部非封閉模型,利用本算法也能準(zhǔn)確有效地將封閉的偽曲面分割出去,如圖4c所示。
表1 模型分割閾值T
圖3和圖4是一組比較理想的掃描模型,使用本算法對(duì)模型進(jìn)行分割能取得很好的效果。但在實(shí)際的三維模型采集中,采集的數(shù)據(jù)往往各式各樣,為了說明本算法的穩(wěn)健性,采用多組斯坦福大學(xué)采集的三維掃描數(shù)據(jù)[10]進(jìn)行實(shí)驗(yàn)。本文給出三組數(shù)據(jù)的實(shí)驗(yàn)結(jié)果及對(duì)比分析,帶有法向量的點(diǎn)云數(shù)據(jù)如圖5所示,圖5c和圖5d為兔子模型多視角的顯示效果。由圖5可知,掃描的三維數(shù)據(jù)由實(shí)際數(shù)據(jù)采集,模型都是不封閉且邊緣復(fù)雜不規(guī)則的,明顯增加了分割的難度。圖6所示為圖5中點(diǎn)云模型的泊松重建曲面模型,由圖可見,重建的模型都是封閉的。圖7所示為本文分割算法計(jì)算獲得的曲面模型,由圖可知,使用本算法能很好地將封閉曲面分割出來,且都很好地還原了原始模型復(fù)雜不規(guī)則的邊緣,對(duì)比圖5c、圖6c和圖7c黑色方框內(nèi)的曲面部分可知,本文算法能夠能很好地分割出點(diǎn)云的邊界,同時(shí)重建的曲面仍具有隱式曲面的特點(diǎn),而且能夠很好地還原模型的原始邊界特征。通過大量實(shí)驗(yàn)結(jié)果對(duì)比分析可知,采用本文所提算法能夠使絕大部分非封閉三維點(diǎn)云模型都能獲得高質(zhì)量的非封閉曲面模型,充分驗(yàn)證了本算法的穩(wěn)健性。
為進(jìn)一步驗(yàn)證本文算法的有效性,將圖5~圖7中的點(diǎn)云數(shù)據(jù)利用基于α-shape的算法進(jìn)行重建[11],結(jié)果如圖8所示。基于α-shape的算法是一種顯示方法,當(dāng)點(diǎn)云質(zhì)量不好或較稀疏時(shí),基于αshape的結(jié)果并不理想,如圖8c黑色方框中Bunny模型的耳朵部分重建曲面出現(xiàn)了明顯的殘缺。而本文所提算法是建立在隱式曲面重建的基礎(chǔ)上,因此對(duì)點(diǎn)云質(zhì)量較差和密度稀疏的情況均能獲得理想的結(jié)果。對(duì)比圖7c黑色方框中Bunny模型耳朵部分的重建效果可以看出,本文方法能取得更好的重建結(jié)果。
本文提出一種自動(dòng)閾值分割的非封閉曲面三維重建方法,能快速、準(zhǔn)確地對(duì)泊松算法生成的封閉曲面進(jìn)行分割,自動(dòng)去除非封閉曲面重建時(shí)生成的多余偽曲面。大量實(shí)驗(yàn)證明,使用本算法可得到精確的分割效果,算法的魯棒性強(qiáng)、算法復(fù)雜度低,所需的時(shí)間復(fù)雜度為O(N),而且算法簡(jiǎn)單易實(shí)現(xiàn),為泊松曲面重建算法在逆向工程領(lǐng)域中的非封閉點(diǎn)云數(shù)據(jù)進(jìn)行直接重建奠定了良好的基礎(chǔ)。本文所提方法是在泊松算法重建得到偽封閉模型曲面的基礎(chǔ)上,采用閾值分割的方法除去偽曲面而得到與點(diǎn)云一致的非封閉模型。如何能對(duì)非封閉點(diǎn)云數(shù)據(jù)直接進(jìn)行高質(zhì)量的曲面重建,進(jìn)一步提高算法的通用性,是今后研究的重點(diǎn)。
[1]LU Zhen,KE Yinglin,SUN Qing,et al.Extraction of blend surface feature in reverse engineering[J].Computer Integrated Manufacturing Systems,2003,9(2):154-157(in Chinese).[呂 震,柯映林,孫 慶,等.反求工程中過渡曲面特征提取算法研究[J].計(jì)算機(jī)集成制造系統(tǒng),2003,9(2):154-157.]
[2]CHENG Siyuan,YU Guoxin,ZHANG Xiangwei.Surface model reconstruction methodologies in reverse engineering system[J].Computer Integrated Manufacturing Systems,2008,14(10):1934-1939(in Chinese).[成思源,余國(guó)鑫,張湘?zhèn)ィ嫦蛳到y(tǒng)曲面模型重建方法研究[J].計(jì)算機(jī)集成制造系統(tǒng),2008,14(10):1934-1939.]
[3]SHI Baoquan,LIANG Jin,LIU Qing,et al.Precision inspection of point cloud &CAD model based on constraint search sphere[J].Computer Integrated Manufacturing Systems,2010,16(5):929-934(in Chinese).[史寶全,梁 晉,劉 青,等.基于約束搜索球的點(diǎn)云數(shù)據(jù)與CAD模型精確比對(duì)檢測(cè)[J].計(jì)算機(jī)集成制造系統(tǒng),2010,16(5):929-934.]
[4]OHTAKE Y,BELYAEV A,SEIDEL H P.Multi-scale approach to 3Dscattered data interpolation with compactly supported basis functions[C]//Proceedings of Shape Modeling International.Washington,D.C.,USA:IEEE,2003:153-161.
[5]CARR J C,BEATSON R K,CHERRIE J B,et al.Reconstruction and representation of 3Dobjects with radial basis functions[C]//Proceedings of the 28Annual Conference on Computer Graphics and Interactive Techniques.New York,N.Y.,USA:ACM,2001:67-76.
[6]ZHANG Taohong,HAN Yanling,TU Mengfu,et al.Application of radial basis function net works in reconstruction of virtual machining object[J].Computer Integrated Manufacturing Systems,2007,13(5):945-949(in Chinese).[張?zhí)壹t,韓彥嶺,涂孟夫,等.徑向基函數(shù)網(wǎng)絡(luò)在虛擬加工對(duì)象重構(gòu)中的應(yīng)用[J].計(jì)算機(jī)集成制造系統(tǒng),2007,13(5):945-949.]
[7]OHTAKE Y ,BELYAEV A,ALEX M,et al.Multi-level partition of unity implicits[C]//Proceedings of ACM SIGGRAPH.New York,N.Y.,USA:ACM,2003:463-470.
[8]KAZHDAN M,BOLITHO M,HOPPE H.Poisson surface reconstruction[C]//Proceedings of the 4th Eurographics Symposium on Geometry Processing.Aire-la-Ville,Switzerland:Eurographics Association,2006:61-70.
[9]FU Zhongliang.Some new methods for image threshold selection[J].Computer Applications,2000,10(10):13-15(in Chinese).[付忠良.一些新的圖像閾值選取方法[J].計(jì)算機(jī)應(yīng)用,2000,10(10):13-15.]
[10]The stanford 3Dscanning repository[EB/OL].(2011-09-06)[2012-01-20].http://graphics.stanford.edu/data/3Dscanrep/.
[11]EDELSBRUNNER H,MUCKE E P.Three-dimensional alpha shapes[J].ACM Transactions on Graphics,1994,13(1):43-72.