本發(fā)明屬于計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)視覺、逆向工程和計(jì)算機(jī)輔助幾何設(shè)計(jì)領(lǐng)域,具體為保持銳利特征的三維重建方法及系統(tǒng)。
背景技術(shù):
::三維重建技術(shù)是指對(duì)物體在計(jì)算機(jī)上建立合適的數(shù)學(xué)表示和處理模型,將真實(shí)物體在計(jì)算機(jī)中進(jìn)行客觀重現(xiàn)的技術(shù)。根據(jù)三維點(diǎn)云數(shù)據(jù)獲取方式的差異,三維重建技術(shù)大概分為以下兩種:基于多張圖像進(jìn)行三維重建和基于具有深度信息的點(diǎn)云數(shù)據(jù)進(jìn)行三維重建?;诙鄰垐D像進(jìn)行三維重建通過相機(jī)進(jìn)行圖像采集,得到待重建物體不同角度的序列圖像,通過圖像之間的特征聯(lián)系和位置關(guān)系進(jìn)行點(diǎn)云的估計(jì),然后再對(duì)點(diǎn)云進(jìn)行重建。這類方法的優(yōu)勢(shì)在于它使用的設(shè)備簡單、成本低廉;但是它的缺點(diǎn)是需要經(jīng)過一系列運(yùn)算才能得到點(diǎn)云位置信息,過程較為繁瑣并且重建結(jié)果的好壞受圖像角度和張數(shù)的影響較大,同時(shí)對(duì)于拍攝環(huán)境較為敏感,很難完成具有較高精度需求的三維重建。基于具有深度信息的點(diǎn)云數(shù)據(jù)進(jìn)行三維重建通過光柵掃描、激光掃描等方式獲取具有深度信息的三維點(diǎn)云,通過點(diǎn)云的空間關(guān)系進(jìn)行重建。此類方法的優(yōu)點(diǎn)是能夠直接獲取精確度較高的點(diǎn)云信息,但是它需要比較昂貴和專業(yè)的設(shè)備,并且在數(shù)據(jù)采集的時(shí)候需要進(jìn)行校準(zhǔn),來滿足獲取點(diǎn)云數(shù)據(jù)的準(zhǔn)確性。在通過點(diǎn)云進(jìn)行三維重建的過程中,為了使重建后模型的測(cè)量和拼接工作能夠順利進(jìn)行,如何保持物體在表面邊緣的銳利特征是一個(gè)關(guān)鍵環(huán)節(jié)。張?chǎng)蔚?張?chǎng)?王章野,范涵奇,等.保特征的三維模型的三邊濾波去噪算法[j].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2009,21(7):936-942.)通過使用三邊濾波函數(shù)對(duì)點(diǎn)云中的法向量進(jìn)行濾波,保持點(diǎn)云表面的特征。該方法主要思想是通過每個(gè)點(diǎn)以及它鄰域中的點(diǎn)擬合出表面近似的模型。它能夠?qū)﹄x散曲線擬合的模型產(chǎn)生較好的重建效果。但是此方法為了追求準(zhǔn)確性,需要不斷進(jìn)行迭代,擬合的過程比較耗時(shí)。sahayp等(sahayp,rajagopalanan.geometricinpaintingof3dstructures[c]//proceedingsoftheieeeconferenceoncomputervisionandpatternrecognitionworkshops.2015:1-7.)針對(duì)殘缺的三維模型提出“補(bǔ)洞”方法,補(bǔ)洞后的區(qū)域能夠保持整個(gè)模型的特征。這類方法在保持物體表面特征時(shí)直接對(duì)三維模型進(jìn)行處理但是它們主要關(guān)注于物體在缺失區(qū)域的特征與整體模型的契合度,而對(duì)物體在邊緣處的特征沒有進(jìn)行過多探討。qianj等(qianj,zhangy.sharpfeaturepreservationinoctree-basedhexahedralmeshgenerationforcadassemblymodels[m]//proceedingsofthe19thinternationalmeshingroundtable.2009:243-262.)使用基于八叉樹的方法對(duì)cad模型在邊界處進(jìn)行特征的保持。它是直接作用于cad模型中,即通過改變模型的形狀生成不同的模型。雖然不是直接在點(diǎn)云中進(jìn)行操作,但是上述方法為本發(fā)明提供了參考,即可以直接在模型上進(jìn)行保持特征的操作而不需要間接在點(diǎn)云中進(jìn)行這樣的操作。wangj等(wangj,yuz,zhuw,etal.feature-preservingsurfacereconstructionfromunoriented,noisypointdata[j].computergraphicsforum,2013,32(1):164–176.)提出了一種能夠保持物體表面特征的三維重建算法:通過計(jì)算每個(gè)點(diǎn)的“最合適切面”找出點(diǎn)云中的離群點(diǎn),并計(jì)算出物體的特征點(diǎn)和非特征點(diǎn),將點(diǎn)云分割成幾部分,最后通過保持特征的方法對(duì)點(diǎn)云進(jìn)行重建。這類方法應(yīng)用在物體的表面重建中,取得不錯(cuò)的效果,然而他們提出的特征點(diǎn)檢測(cè)方法和最后的表面重建并沒有相關(guān)性,在表面重建中并沒有利用到前面處理的先驗(yàn)知識(shí),使得處理的過程更加復(fù)雜。綜上所述,雖然基于點(diǎn)云進(jìn)行保持銳利特征的三維重建方法已經(jīng)取得了一定的成果,但是,為了滿足實(shí)際應(yīng)用的要求,迫切需要在重建時(shí)間、重建精度方面做出進(jìn)一步的改進(jìn)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例的目的在于提供保持銳利特征的三維重建方法及系統(tǒng),旨在解決現(xiàn)有的三維重建方法中無法完全保持邊緣附近的銳利特征、重建時(shí)間需要提高、魯棒性不強(qiáng)等問題,具體技術(shù)方案如下。保持銳利特征的三維重建方法,其通過對(duì)點(diǎn)云各階段處理的優(yōu)化和表面重建過程的改進(jìn),完成從點(diǎn)云重建出三維模型的過程并且在重建的過程中保持模型表面邊緣附近的銳利特征。具體包括以下步驟:(1)采用擴(kuò)展到三維空間的二維圖像濾波方法對(duì)輸入并經(jīng)過粗配準(zhǔn)的點(diǎn)云進(jìn)行平滑去噪;(2)采用改進(jìn)的區(qū)域生長方法對(duì)平滑后的粗配準(zhǔn)點(diǎn)云進(jìn)行離群點(diǎn)移除;(3)采用基于kd-tree(k-dimensionaltree)加速的icp(iterativeclosestpoint,迭代最近點(diǎn))算法對(duì)移除離群點(diǎn)后的粗配準(zhǔn)點(diǎn)云進(jìn)行精配準(zhǔn);(4)采用基于鄰域查找和邊界點(diǎn)檢測(cè)的融合方法對(duì)精配準(zhǔn)點(diǎn)云進(jìn)行融合;(5)采用基于特征點(diǎn)檢測(cè)和自適應(yīng)步長更新方法對(duì)融合后的精配準(zhǔn)點(diǎn)云進(jìn)行表面重建。進(jìn)一步,步驟(1)所述對(duì)輸入并經(jīng)過粗配準(zhǔn)的點(diǎn)云進(jìn)行平滑去噪指:將二維圖像的平滑濾波方法擴(kuò)展應(yīng)用于三維點(diǎn)云的平滑去噪,將點(diǎn)云數(shù)據(jù)點(diǎn)(x,y,z)的x,y當(dāng)做平面定位標(biāo)識(shí),將z當(dāng)做二維圖像中的像素值,對(duì)點(diǎn)云塊逐點(diǎn)進(jìn)行z值的平滑去噪,所述點(diǎn)云塊指相同視角下采集的點(diǎn)云;所述粗配準(zhǔn)的點(diǎn)云指采用經(jīng)典坐標(biāo)變換方法對(duì)不同拍攝角度的系列點(diǎn)云塊pq進(jìn)行過坐標(biāo)變換的點(diǎn)云;進(jìn)一步,所述對(duì)點(diǎn)云塊逐點(diǎn)進(jìn)行z值的平滑去噪指:以當(dāng)前(x,y)為中心的鄰域內(nèi)采集z值,根據(jù)經(jīng)驗(yàn)選用二維圖像平滑濾波方法對(duì)z值進(jìn)行平滑處理,所述以(x,y)為中心的鄰域?yàn)檎叫?,邊長在3~15內(nèi)選取。進(jìn)一步,所述保持銳利特征的三維重建方法,其特征在于,步驟(2)所述采用改進(jìn)的區(qū)域生長方法對(duì)平滑后的粗配準(zhǔn)點(diǎn)云進(jìn)行離群點(diǎn)移除指:采用knn(k-nearestneighbor,k最近鄰)聚類方式統(tǒng)計(jì)由kd-tree劃分的點(diǎn)云區(qū)域中的點(diǎn)數(shù),通過對(duì)當(dāng)前區(qū)域內(nèi)點(diǎn)數(shù)進(jìn)行判斷移除離群點(diǎn);進(jìn)一步,所述離群點(diǎn)指與主點(diǎn)云有別的孤立點(diǎn)云,所述主點(diǎn)云即隸屬重建對(duì)象表面的點(diǎn)云,所述孤立點(diǎn)云包括孤立點(diǎn)和稀疏點(diǎn)云,稀疏點(diǎn)云是密度小于整體點(diǎn)云密度的40%或預(yù)設(shè)值的局部點(diǎn)云,稀疏點(diǎn)云可能離主點(diǎn)云較近;具體算法如下:1)對(duì)點(diǎn)云p={pi,i=1,2,3,…,n},pi為點(diǎn)云中的點(diǎn),n(n>1)為點(diǎn)云的點(diǎn)數(shù),計(jì)算p密度ρ;pi標(biāo)志位flag的標(biāo)志值為flagnum,初值flagnum=0,flag=flagnum,利用kd-tree劃分點(diǎn)云p,i=0;2)使i增加1;3)若pi的flag=0,則對(duì)pi,flagnum=flagnum+1,flag=flagnum并將pi壓入棧s,否則返回2);4)彈出s棧頂,記為ps,使用半徑搜索算法尋找以ps為中心、r為半徑的區(qū)域中的點(diǎn)云pr(pj,j=1,2,…,nr),nr為pr中的點(diǎn)個(gè)數(shù);計(jì)算pr密度ρr;若ρr≤0.4ρ,則剔除ps即剔除稀疏點(diǎn),若ρr=0,跳轉(zhuǎn)6);5)對(duì)pr中flag=0的點(diǎn)pzero(pk′,k=1,2,…,nzero),nzero為pzero中的點(diǎn)個(gè)數(shù),若nzero≥1,逐點(diǎn)執(zhí)行pk′的flag=flagnum,并壓入s;6)若s非空,返回4);7)若i≤n,返回2);8)統(tǒng)計(jì)逐個(gè)聚類點(diǎn)云的點(diǎn)數(shù)量numl={lj,j=1,2,…,flagnum},當(dāng)lj<th(th為預(yù)設(shè)閾值),剔除稀疏點(diǎn)云。進(jìn)一步,所述保持銳利特征的三維重建方法,其特征在于,步驟(3)所述采用基于kd-tree加速icp算法對(duì)移除離群點(diǎn)后的粗配準(zhǔn)點(diǎn)云進(jìn)行精配準(zhǔn)指,對(duì)經(jīng)過粗配準(zhǔn)的系列點(diǎn)云pq進(jìn)行精細(xì)配準(zhǔn),具體算法如下:1)建立點(diǎn)云q的rt變換矩陣,變換矩陣初值為置0,i=0;2)使i增加1,查找相鄰pq的點(diǎn)對(duì):遍歷點(diǎn)云p{pi,i=1,2,3,…,np}中的點(diǎn)pi,對(duì)點(diǎn)云q{qj,j=1,2,3,…,nq}建立kd-tree,搜索離pi最近的qj;3)通過點(diǎn)對(duì)系列piqj映射求得旋轉(zhuǎn)矩陣r和平移矩陣t;4)更新點(diǎn)云q的rt變換矩陣;5)計(jì)算點(diǎn)云q經(jīng)rt變換后pq間的均方差σ,若σ≥th(th為預(yù)設(shè)閾值)或迭代次數(shù)n≤nmax(nmax為預(yù)設(shè)最大迭代次數(shù)),返回2);6)點(diǎn)云精配準(zhǔn)結(jié)束。進(jìn)一步,步驟(4)所述采用基于鄰域查找和邊界點(diǎn)檢測(cè)的融合方法對(duì)精配準(zhǔn)點(diǎn)云進(jìn)行融合包括:所述領(lǐng)域查找方法即通過空間柵格分割點(diǎn)云,再采用kd-tree精細(xì)劃分當(dāng)前鄰域;進(jìn)一步,所述空間柵格分割法指計(jì)算當(dāng)前待搜索點(diǎn)云區(qū)域的最小外接長方體(即包圍盒),再以設(shè)定邊長將當(dāng)前包圍盒分為多個(gè)小正方體;所述設(shè)定邊長即為當(dāng)前包圍盒最短邊長的5%;進(jìn)一步,所述邊界點(diǎn)檢測(cè)方法指將當(dāng)前點(diǎn)的鄰域點(diǎn)集投影到當(dāng)前點(diǎn)的微切平面中,判斷當(dāng)前點(diǎn)與鄰域點(diǎn)集夾角的最大值θmax是否滿足:θmax>θth(θth為設(shè)定閾值),若是,則認(rèn)為當(dāng)前點(diǎn)屬邊界點(diǎn)并進(jìn)行標(biāo)記。進(jìn)一步,所述對(duì)精配準(zhǔn)點(diǎn)云進(jìn)行融合指移除精配準(zhǔn)點(diǎn)云中的冗余點(diǎn)云;所述冗余點(diǎn)云指首先判斷當(dāng)前點(diǎn)云pi(i=1,2,……,n-1)附近是否存在鄰接點(diǎn)云pi+1的點(diǎn),若存在,進(jìn)一步判斷該點(diǎn)是否屬于邊界點(diǎn),若是,保留該點(diǎn)以維持點(diǎn)云的連貫性,否則作為冗余點(diǎn)剔除;具體算法如下:1)設(shè)i=0,j=0,pi(i=1,2,……,n-1);2)使i增加1,pi記為當(dāng)前已經(jīng)拼接好的點(diǎn)云pc,計(jì)算pc包圍盒,并使用空間柵格將包圍盒分割為多個(gè)小正方體;3)使j增加1,遍歷pi中的點(diǎn)vj(j=1,2,……,m);4)若vj不在pc包圍盒中,vj并入pc,且若j≤m,返回3);5)判斷vj所在小正方體及鄰近的多個(gè)小正方體(共27個(gè))中的點(diǎn)集v′(不含vj)是否在pc包圍盒中,若否,vj并入pc,且若j≤m,返回3);6)對(duì)pc創(chuàng)建kd-tree,以vj為圓心,r為半徑的鄰域內(nèi)搜索隸屬pc的點(diǎn)集v″(不含vj)并統(tǒng)計(jì)點(diǎn)數(shù)l,若l≤th(th為預(yù)設(shè)閾值),vj并入pc,且若j≤m,返回3);7)判斷vj鄰域內(nèi)是否存在邊界點(diǎn)集v″′(不含vj),若存在,vj并入pc,否則移除vj,且若j≤m,返回3);8)i<n,返回2);9)點(diǎn)云融合結(jié)束。進(jìn)一步,步驟(5)所述采用基于特征點(diǎn)檢測(cè)和自適應(yīng)步長更新方法對(duì)融合后的精配準(zhǔn)點(diǎn)云進(jìn)行表面重建包括:1)改進(jìn)的泊松表面重建算法;2)銳利特征點(diǎn)檢測(cè)算法;3)更新三角網(wǎng)格銳利頂點(diǎn)坐標(biāo)的算法。進(jìn)一步,所述改進(jìn)的泊松表面重建算法指:在保留經(jīng)典泊松表面重建算法的補(bǔ)洞效果的前提下移除擴(kuò)張區(qū)域的三角面片。具體算法如下:1)針對(duì)點(diǎn)云p,采用經(jīng)典泊松三維表面重建算法獲得三角網(wǎng)格mesh={vi&tj,i=1,3,……,nv,j=1,2,……,nt},vi表示三角網(wǎng)格頂點(diǎn),tj為三角網(wǎng)格中的面片,nv為三角網(wǎng)格中頂點(diǎn)數(shù)量,nt為三角網(wǎng)格中的面片數(shù)量;2)逐點(diǎn)設(shè)置vi標(biāo)志位removeflag為false,j=0;3)使j增加1,對(duì)p進(jìn)行柵格劃分,計(jì)算tj=(vj1,vj2,vj3)所處的柵格位置;4)尋找tj所處柵格和tj附近柵格(共27個(gè)小正方體)中是否存在p中的點(diǎn),若否,則逐一將(vj1,vj2,vj3)的標(biāo)志位removeflag置為true,且若j≤nt,返回3);5)使用區(qū)域生長法對(duì)removeflag為true的三角網(wǎng)格點(diǎn)進(jìn)行聚類,并逐區(qū)域統(tǒng)計(jì)點(diǎn)個(gè)數(shù)areanum,若存在區(qū)域:其areanum≤threc(threc為預(yù)設(shè)域值),則當(dāng)前為true的點(diǎn)復(fù)位為false;6)對(duì)mesh逐個(gè)過濾tj,若存在含true的tj(vj1,vj2,vj3)頂點(diǎn),則移除tj。進(jìn)一步,所述銳利特征點(diǎn)檢測(cè)算法指:對(duì)當(dāng)前點(diǎn)云p進(jìn)行銳利邊緣點(diǎn)檢測(cè)和標(biāo)記,銳利邊緣點(diǎn)集p′中點(diǎn)所在微平面的法向量分布差異性顯著;具體算法如下:1)i=0,使用kd-tree建立p的拓?fù)浣Y(jié)構(gòu);2)使i增加1,以p中任意一點(diǎn)pi為圓心,r為半徑搜索點(diǎn)集pnei(不含pi),pnei中任意點(diǎn)pj(j=1,2,…,nnei,其中nnei為pnei中法向量的個(gè)數(shù))的法向量ηj,pnei中所有點(diǎn)的法向量集記作γnei,即ηj∈γnei,pi的法向量γi與ηj的夾角為θtj;所述r半徑按p密度的1.5倍設(shè)定;3)計(jì)算所有夾角θtj(j=1,2,…)的標(biāo)準(zhǔn)差σt,若σt≤σhold(σhold為預(yù)設(shè)閾值),返回2),否則,認(rèn)為pi可能為銳利邊緣點(diǎn);4)計(jì)算θtj中的最大夾角θmax與最小夾角θmin,若(θmax-θmin)≤δθhold(δθhold為預(yù)設(shè)閾值),返回2),否則,認(rèn)為pi可能為銳利邊緣點(diǎn);5)將θtj映射至單位球面并進(jìn)行高斯聚類,若類別為1,當(dāng)前區(qū)域?qū)倨教箙^(qū)域,否則pi處于銳利邊緣或銳利角點(diǎn)并進(jìn)行標(biāo)記。進(jìn)一步,在p′上建立kd-tree,對(duì)三角網(wǎng)格進(jìn)行逐點(diǎn)搜索找出p′附近的頂點(diǎn),并標(biāo)記為三角網(wǎng)格中的銳利邊緣點(diǎn)。進(jìn)一步,所述更新三角網(wǎng)格銳利頂點(diǎn)坐標(biāo)的算法指:針對(duì)上述所獲得的三角網(wǎng)格銳利點(diǎn),通過法向量雙邊過濾算法和自適應(yīng)步長迭代,快速準(zhǔn)確地調(diào)整已標(biāo)記三角網(wǎng)格銳利點(diǎn)坐標(biāo),恢復(fù)保持銳利特征的物體表面;具體算法如下:1)針對(duì)重建表面三角網(wǎng)格mesh{vi&tj,i=1,3,……,nv,j=1,2,……,nt}中已標(biāo)記銳利點(diǎn)的三角面片tj′(j=1,2,……,nloc),nloc為含銳利點(diǎn)的三角面片的個(gè)數(shù),使用雙邊過濾算法(1)逐tj′(vj1′,vj2′,vj3′)獲取nloc個(gè)法向量nj′(j=1,2,……,nloc):其中,i=1,2,…,cj和ci分別代表當(dāng)前和鄰域三角面片的重心位置坐標(biāo),為(|cj-ci|)的標(biāo)準(zhǔn)高斯函數(shù),σc是(|cj-ci|)的標(biāo)準(zhǔn)差,為(nj·(nj-ni))的標(biāo)準(zhǔn)高斯函數(shù),nj·(nj-ni)表示相鄰三角網(wǎng)格法向量之差在當(dāng)前三角網(wǎng)格法向量上的投影,σd是(nj·(nj-ni))的標(biāo)準(zhǔn)差;2)l=0,(l為循環(huán)次數(shù))定義匹配函數(shù)p(tl)為獲取更新后的點(diǎn)與當(dāng)前面法向量的匹配程度,如(2)式,其中,∑的下標(biāo)f代表mesh中的任意三角面片,∑表示遍歷mesh中f對(duì)(2)式中的算式求和,(vi′,vj′,v′k)為三角面片中的三個(gè)點(diǎn)(i,j,k代表任意三角面片的三個(gè)不同頂點(diǎn),不存在數(shù)值意義),設(shè)定p(t)的初始值p(t0)為較大值,步長λ=λ0(λ0為預(yù)設(shè)步長);p(tl)=∑f((nj′·(vi′-vj′))2+(nj′·(vi′-v′k))2+(nj′·(v′k-vj′))2)(2)3)使l增加1,由(2)式計(jì)算p(tl);4)由(3)式更新mesh中已標(biāo)記銳利點(diǎn)的坐標(biāo);vj′=vj+λ∑j∈fnf′.nf′·(vi-vj)+nf′.nf′·(vk-vj)(3)其中,f是點(diǎn)vj所關(guān)聯(lián)的三角面片,(vi,vj,vk)為所關(guān)聯(lián)的三角面片中的三個(gè)點(diǎn)。即將點(diǎn)vj向法向量為nf′的三角面片方向“拉伸”5)若p(tl)≤p(tl-1),則返回3),6)l=l-1,若λ<0.04時(shí),令λ=λ/2,否則λ=λ-0.02,返回4);7)δp(v)≥pth且l≤lmax(pth代表由(2)式求得的當(dāng)前值與上一次值之間差值的閾值,lmax代表最大循環(huán)次數(shù)),則返回3);8)結(jié)束。本發(fā)明還提供了實(shí)現(xiàn)保持銳利特征的三維重建方法的系統(tǒng),其包括:點(diǎn)云預(yù)處理模塊、點(diǎn)云合并模塊、表面重建模塊;所述點(diǎn)云預(yù)處理模塊,采用平滑去噪的方法對(duì)不同點(diǎn)云的噪聲進(jìn)行去除,并通過使用改進(jìn)的區(qū)域生長方法進(jìn)行聚類,根據(jù)聚類的結(jié)果移除點(diǎn)云中的離群點(diǎn);點(diǎn)云預(yù)處理模塊對(duì)應(yīng)所述三維重建方法中的步驟(1)和步驟(2);所述點(diǎn)云合并模塊,用于對(duì)預(yù)處理后的多塊點(diǎn)云進(jìn)行配準(zhǔn)和融合,包括使用基于kd-tree加速的方法對(duì)點(diǎn)云進(jìn)行配準(zhǔn)以及點(diǎn)云融合中使用的邊界點(diǎn)檢測(cè)方法;點(diǎn)云合并模塊對(duì)應(yīng)三維重建方法中的步驟(3)和步驟(4);所述表面重建模塊,對(duì)融合后的整塊點(diǎn)云進(jìn)行表面重建,包括使用特征點(diǎn)檢測(cè)以及自適應(yīng)步長更新的方法加速保持模型表面銳利特征的過程;該點(diǎn)云合并模塊對(duì)應(yīng)三維重建方法中的步驟(5)。本發(fā)明提供的保持銳利特征的三維重建方法,與現(xiàn)有的三維重建技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn)和效果:通過改進(jìn)的區(qū)域生長法在預(yù)處理的過程中對(duì)點(diǎn)云的離群點(diǎn)進(jìn)行移除,不僅能夠產(chǎn)生較符合原物體真實(shí)形狀的點(diǎn)云數(shù)據(jù),而且能夠減少后續(xù)點(diǎn)云配準(zhǔn)過程中離群點(diǎn)產(chǎn)生的噪聲帶來的影響;基于鄰域查找和邊界點(diǎn)檢測(cè)的方法對(duì)配準(zhǔn)后的點(diǎn)云進(jìn)行融合,能夠更加準(zhǔn)確地去除冗余點(diǎn)云,降低點(diǎn)云密度以及后續(xù)表面重建需要耗費(fèi)的計(jì)算開銷;使用基于特征點(diǎn)檢測(cè)和自適應(yīng)步長更新的方法對(duì)融合后的點(diǎn)云進(jìn)行保持邊緣銳利特征的表面重建,能夠在更短的時(shí)間內(nèi)達(dá)到更高的重建精度,同時(shí),還能夠在以較大初始值為步長的情況下,根據(jù)匹配函數(shù)的比較縮小步長,保證不會(huì)在迭代點(diǎn)坐標(biāo)的過程中出現(xiàn)錯(cuò)誤情況。本發(fā)明適合對(duì)邊緣處具有豐富銳利特征的點(diǎn)云進(jìn)行三維重建,如通過逆向工程采集的工業(yè)金屬零件點(diǎn)云等。本系統(tǒng)在處理數(shù)量級(jí)為十萬的點(diǎn)云中,移除離群點(diǎn)的時(shí)間在2.5秒左右,點(diǎn)云融合的時(shí)間在3秒左右,表面重建的時(shí)間在8.5秒左右,能較好滿足實(shí)際應(yīng)用需求。附圖說明圖1是本發(fā)明實(shí)施例提供的保持銳利特征的三維重建方法流程圖;圖2是本發(fā)明實(shí)施例提供的保持銳利特征的三維重建系統(tǒng)結(jié)構(gòu)示意圖;圖中:a、點(diǎn)云預(yù)處理模塊;b、點(diǎn)云合并模塊;c、表面重建模塊;圖3是本發(fā)明實(shí)施例提供的移除點(diǎn)云中離群點(diǎn)方法流程圖;圖4a是本發(fā)明實(shí)施例中移除孤立點(diǎn)云前的原點(diǎn)云分布圖;圖4b是本發(fā)明實(shí)施例中移除孤立點(diǎn)云后的點(diǎn)云分布圖;圖5是本發(fā)明實(shí)施例提供的離群點(diǎn)算法運(yùn)行效率的實(shí)施例圖;圖6是本發(fā)明實(shí)施例提供的點(diǎn)云融合方法流程圖;圖7a是本發(fā)明實(shí)施例中點(diǎn)云融合前的第一塊點(diǎn)云分布圖;圖7b是本發(fā)明實(shí)施例中點(diǎn)云融合前的第二塊點(diǎn)云分布圖;圖7c是本發(fā)明實(shí)施例中點(diǎn)云融合后的點(diǎn)云分布圖;圖8是本發(fā)明實(shí)施例提供的點(diǎn)云融合算法運(yùn)行效率的實(shí)施例圖;圖9是本發(fā)明實(shí)施例提供的保持銳利特征的表面重建方法流程圖。圖10a是本發(fā)明實(shí)施例中表面重建前原點(diǎn)云分布圖;圖10b是本發(fā)明實(shí)施例中使用改進(jìn)的泊松重建算法進(jìn)行表面重建后的三角網(wǎng)格樣式圖;圖10c是本發(fā)明實(shí)施例中使用保持銳利特征的重建算法進(jìn)行表面重建后的三角網(wǎng)格樣式圖。具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明的應(yīng)用原理作進(jìn)一步描述。如圖1所示,本發(fā)明實(shí)施例的保持銳利特征的三維重建方法包括以下步驟:s101,采用擴(kuò)展到三維空間的二維圖像濾波方法對(duì)輸入并經(jīng)過粗配準(zhǔn)的點(diǎn)云進(jìn)行平滑去噪;s102,采用改進(jìn)的區(qū)域生長方法對(duì)平滑后的粗配準(zhǔn)點(diǎn)云進(jìn)行離群點(diǎn)移除;s103,采用基于kd-tree加速的icp算法對(duì)移除離群點(diǎn)后的粗配準(zhǔn)點(diǎn)云進(jìn)行精配準(zhǔn);s104,采用基于鄰域查找和邊界點(diǎn)檢測(cè)的融合方法對(duì)精配準(zhǔn)點(diǎn)云進(jìn)行融合;s105,采用基于特征點(diǎn)檢測(cè)和自適應(yīng)步長更新方法對(duì)融合后的精配準(zhǔn)點(diǎn)云進(jìn)行表面重建。步驟s101所述對(duì)輸入并經(jīng)過粗配準(zhǔn)的點(diǎn)云進(jìn)行平滑去噪指:將二維圖像的平滑濾波方法擴(kuò)展應(yīng)用于三維點(diǎn)云的平滑去噪,將點(diǎn)云數(shù)據(jù)點(diǎn)(x,y,z)的x,y當(dāng)做平面定位標(biāo)識(shí),將z當(dāng)做二維圖像中的像素值,對(duì)點(diǎn)云塊逐點(diǎn)進(jìn)行z值的平滑去噪,所述點(diǎn)云塊指相同視角下采集的點(diǎn)云;所述粗配準(zhǔn)的點(diǎn)云指采用經(jīng)典坐標(biāo)變換方法對(duì)不同拍攝角度的系列點(diǎn)云塊pq進(jìn)行過坐標(biāo)變換的點(diǎn)云;步驟s101所述對(duì)點(diǎn)云塊逐點(diǎn)進(jìn)行z值的平滑去噪指:以當(dāng)前(x,y)為中心的鄰域內(nèi)采集z值,根據(jù)經(jīng)驗(yàn)選用二維圖像平滑濾波方法對(duì)z值進(jìn)行平滑處理,所述以(x,y)為中心的鄰域?yàn)檎叫?,邊長在3~15內(nèi)選取。步驟s102所述采用改進(jìn)的區(qū)域生長方法對(duì)平滑后的粗配準(zhǔn)點(diǎn)云進(jìn)行離群點(diǎn)移除指:采用knn聚類方式統(tǒng)計(jì)由kd-tree劃分的點(diǎn)云區(qū)域中的點(diǎn)數(shù),通過對(duì)當(dāng)前區(qū)域內(nèi)點(diǎn)數(shù)進(jìn)行判斷移除離群點(diǎn);進(jìn)一步地,所述離群點(diǎn)指與主點(diǎn)云有別的孤立點(diǎn)云,所述主點(diǎn)云即隸屬重建對(duì)象表面的點(diǎn)云,所述孤立點(diǎn)云包括孤立點(diǎn)和稀疏點(diǎn)云,稀疏點(diǎn)云是密度小于整體點(diǎn)云密度的40%或預(yù)設(shè)值的局部點(diǎn)云,稀疏點(diǎn)云可能離主點(diǎn)云較近。步驟s103所述采用基于kd-tree加速icp算法對(duì)移除離群點(diǎn)后的粗配準(zhǔn)點(diǎn)云進(jìn)行精配準(zhǔn)指,對(duì)經(jīng)過粗配準(zhǔn)的系列點(diǎn)云pq進(jìn)行精細(xì)配準(zhǔn)。步驟s104所述采用基于鄰域查找和邊界點(diǎn)檢測(cè)的融合方法對(duì)精配準(zhǔn)點(diǎn)云進(jìn)行融合包括:所述領(lǐng)域查找方法即通過空間柵格分割點(diǎn)云,再采用kd-tree精細(xì)劃分當(dāng)前鄰域;進(jìn)一步地,所述空間柵格分割法指計(jì)算當(dāng)前待搜索點(diǎn)云區(qū)域的最小外接長方體(即包圍盒),再以設(shè)定邊長將當(dāng)前包圍盒分為多個(gè)小正方體;所述設(shè)定邊長即為當(dāng)前包圍盒最短邊長的5%。步驟s104所述邊界點(diǎn)檢測(cè)方法指將當(dāng)前點(diǎn)的鄰域點(diǎn)集投影到當(dāng)前點(diǎn)的微切平面中,判斷當(dāng)前點(diǎn)與鄰域點(diǎn)集夾角的最大值θmax是否滿足:θmax>θth(θth為設(shè)定閾值),若是,則認(rèn)為當(dāng)前點(diǎn)屬邊界點(diǎn)并進(jìn)行標(biāo)記。步驟s104所述對(duì)精配準(zhǔn)點(diǎn)云進(jìn)行融合指移除精配準(zhǔn)點(diǎn)云中的冗余點(diǎn)云;所述冗余點(diǎn)云指首先判斷當(dāng)前點(diǎn)云附近是否存在鄰接點(diǎn)云的點(diǎn),若存在,進(jìn)一步判斷該點(diǎn)是否屬于邊界點(diǎn),若是,保留該點(diǎn)以維持點(diǎn)云的連貫性,否則作為冗余點(diǎn)剔除。步驟s105所述采用基于特征點(diǎn)檢測(cè)和自適應(yīng)步長更新方法對(duì)融合后的精配準(zhǔn)點(diǎn)云進(jìn)行表面重建包括:1)改進(jìn)的泊松表面重建算法;2)銳利特征點(diǎn)檢測(cè)算法;3)更新三角網(wǎng)格銳利頂點(diǎn)坐標(biāo)的算法。步驟s105所述改進(jìn)的泊松表面重建算法指:在保留經(jīng)典泊松表面重建算法的補(bǔ)洞效果的前提下移除擴(kuò)張區(qū)域的三角面片;所述銳利特征點(diǎn)檢測(cè)算法指:根據(jù)銳利邊緣點(diǎn)集中點(diǎn)所在微平面法向量分布差異的顯著性,對(duì)當(dāng)前點(diǎn)云進(jìn)行銳利邊緣點(diǎn)檢測(cè)和標(biāo)記;所述更新三角網(wǎng)格銳利頂點(diǎn)坐標(biāo)的算法指:針對(duì)之前所獲得的三角網(wǎng)格銳利點(diǎn),通過法向量雙邊過濾算法和自適應(yīng)步長迭代,快速準(zhǔn)確地調(diào)整已標(biāo)記三角網(wǎng)格銳利點(diǎn)坐標(biāo),恢復(fù)保持銳利特征的物體表面。如圖2所示,本發(fā)明實(shí)施例的保持銳利特征的三維重建系統(tǒng)主要由點(diǎn)云預(yù)處理模塊a、點(diǎn)云合并模塊b、表面重建模塊c組成。點(diǎn)云預(yù)處理模塊a,采用平滑去噪的方法對(duì)不同點(diǎn)云的噪聲進(jìn)行去除,并通過使用改進(jìn)的區(qū)域生長方法進(jìn)行聚類,根據(jù)聚類的結(jié)果移除點(diǎn)云中的離群點(diǎn)。該模塊對(duì)應(yīng)三維重建方法中的步驟s101和步驟s102。點(diǎn)云合并模塊b,用于對(duì)預(yù)處理后的多塊點(diǎn)云進(jìn)行配準(zhǔn)和融合,包括使用基于kd-tree加速的方法對(duì)點(diǎn)云進(jìn)行配準(zhǔn)以及點(diǎn)云融合中使用的邊界點(diǎn)檢測(cè)方法。該模塊對(duì)應(yīng)三維重建方法中的步驟s103和步驟s104。表面重建模塊c,對(duì)融合后的整塊點(diǎn)云進(jìn)行表面重建,包括使用特征點(diǎn)檢測(cè)以及自適應(yīng)步長更新的方法加速保持模型表面銳利特征的過程。該模塊對(duì)應(yīng)三維重建方法中的步驟s105。本發(fā)明的具體實(shí)施例:本發(fā)明方法的整體流程如圖1所示,本發(fā)明方法主體包括三部分:1.點(diǎn)云預(yù)處理中基于改進(jìn)的區(qū)域生長法對(duì)點(diǎn)云離群點(diǎn)進(jìn)行移除的方法;2.點(diǎn)云合并中基于鄰域查找和邊界點(diǎn)檢測(cè)對(duì)點(diǎn)云進(jìn)行融合的方法;3.表面重建中基于特征點(diǎn)檢測(cè)和自適應(yīng)步長更新來保持重建模型邊緣銳利特征的方法。1.點(diǎn)云移除離群點(diǎn)點(diǎn)云移除離群點(diǎn)的操作在點(diǎn)云平滑濾波之后,用于處理點(diǎn)云數(shù)據(jù)中離主點(diǎn)云距離較遠(yuǎn)的點(diǎn)云和靠近主點(diǎn)云但是點(diǎn)云密度較為稀疏的點(diǎn)云。點(diǎn)云移除離群點(diǎn)的流程圖如圖3,主要包括基于kd-tree的劃分方法、改進(jìn)區(qū)域生長的聚類方法和基于統(tǒng)計(jì)分析的移除點(diǎn)云方法。1.1基于kd-tree的劃分方法由于點(diǎn)云的數(shù)量龐大,在點(diǎn)云進(jìn)行局部鄰域搜索前,需要對(duì)點(diǎn)云的空間進(jìn)行劃分,提高搜索效率?;趉d-tree的劃分方法具體步驟為:計(jì)算出當(dāng)前待搜索區(qū)域點(diǎn)云的包圍盒,使用包圍盒長度最長的那條邊作為分割空間的分割軸;使用垂直于該分割軸的平面分割該分割軸,并通過判斷當(dāng)前點(diǎn)是位于分割平面的左側(cè)或右側(cè),將這個(gè)點(diǎn)分配到當(dāng)前樹的左子樹或右子樹;然后使用遞歸的方式一直劃分當(dāng)前點(diǎn)所在空間,直到空間中只包含一個(gè)數(shù)據(jù)點(diǎn)。該方法在訪問的時(shí)候能夠按照分割時(shí)采用的規(guī)則進(jìn)行訪問,實(shí)現(xiàn)較為簡單。1.2改進(jìn)區(qū)域生長的聚類方法移除點(diǎn)云中離群點(diǎn)的一般思路是,通過區(qū)域生長的聚類方法對(duì)點(diǎn)云進(jìn)行聚類,找出主點(diǎn)云,然后移除非主點(diǎn)云的點(diǎn)。但是在實(shí)際的去除過程中會(huì)發(fā)現(xiàn)一些緊挨稠密點(diǎn)云的稀疏點(diǎn)云對(duì)之后的重建過程不能產(chǎn)生很好的重建效果,可以將其作為離群點(diǎn)進(jìn)行剔除。但是使用區(qū)域生長的方法進(jìn)行聚類的時(shí)候,這些稀疏的點(diǎn)云都會(huì)被保留下來。為了解決上述問題,本發(fā)明改進(jìn)區(qū)域生長方法,具體的思想如下:在每個(gè)點(diǎn)進(jìn)行區(qū)域生長的過程中,使用基于knn搜索的方法搜索當(dāng)前點(diǎn)附近的點(diǎn);然后計(jì)算這些附近點(diǎn)離搜索點(diǎn)的平均距離,作為該點(diǎn)鄰域點(diǎn)的密度判斷;若該點(diǎn)周圍點(diǎn)的密度遠(yuǎn)小于整塊點(diǎn)云密度,則將該點(diǎn)剔除,不作為區(qū)域生長的點(diǎn),并標(biāo)記出稀疏點(diǎn)。1.3基于統(tǒng)計(jì)分析的移除點(diǎn)云方法為了獲取并去除這些可能存在的離群點(diǎn)云,我們使用基于半徑搜索的聚類方式查找點(diǎn)云區(qū)域,然后統(tǒng)計(jì)每塊區(qū)域點(diǎn)云數(shù)量,通過設(shè)定的閾值去除離群點(diǎn)云。具體的步驟如算法1所示。算法1,移除離群點(diǎn)云算法:1)對(duì)點(diǎn)云p={pi,i=1,2,3,…,n},pi為點(diǎn)云中的點(diǎn),n(n>1)為點(diǎn)云的點(diǎn)數(shù),計(jì)算p密度ρ;pi標(biāo)志位flag的標(biāo)志值為flagnum,初值flagnum=0,flag=flagnum,利用kd-tree劃分點(diǎn)云p,i=0;2)使i增加1;3)若pi的flag=0,則對(duì)pi,flagnum=flagnum+1,flag=flagnum并將pi壓入棧s,否則返回2);4)彈出s棧頂,記為ps,使用半徑搜索算法尋找以ps為中心、r為半徑的區(qū)域中的點(diǎn)云pr(pj,j=1,2,…,nr),nr為pr中的點(diǎn)個(gè)數(shù);計(jì)算pr密度ρr;若ρr≤0.4ρ,則剔除ps即剔除稀疏點(diǎn),若ρr=0,跳轉(zhuǎn)6);5)對(duì)pr中flag=0的點(diǎn)pzero(pk′,k=1,2,…,nzero),nzero為pzero中的點(diǎn)個(gè)數(shù),若nzero≥1,逐點(diǎn)執(zhí)行pk′的flag=flagnum,并壓入s;6)若s非空,返回4);7)若i≤n,返回2);8)統(tǒng)計(jì)逐個(gè)聚類點(diǎn)云的點(diǎn)數(shù)量numl={lj,j=1,2,…,flagnum},當(dāng)lj<th(th為預(yù)設(shè)閾值),剔除稀疏點(diǎn)云。本發(fā)明對(duì)不同數(shù)量級(jí)的點(diǎn)云進(jìn)行移除離群點(diǎn)的操作,圖4a為原點(diǎn)云的分布情況,圖4b為移除孤立點(diǎn)云后點(diǎn)云的分布,可以很明顯看出,在點(diǎn)云下半部分較為稀疏的離群點(diǎn)被很好得去除。該算法的運(yùn)行效率如圖5所示,該算法運(yùn)行的時(shí)間和點(diǎn)云個(gè)數(shù)呈現(xiàn)出接近線性的關(guān)系,對(duì)于一塊數(shù)量為十萬的點(diǎn)云,平均運(yùn)行時(shí)間在2.5秒左右。作為預(yù)處理階段的一個(gè)環(huán)節(jié),這樣的運(yùn)行效率在一個(gè)可接受的范圍內(nèi)。2.點(diǎn)云融合點(diǎn)云融合在點(diǎn)云配準(zhǔn)之后,用于解決配準(zhǔn)后的點(diǎn)云在一些區(qū)域有重疊區(qū)域造成點(diǎn)云密度分布不均勻的問題。本發(fā)明借鑒基于空間柵格劃分的思想進(jìn)行點(diǎn)云過濾,并使用基于kd-tree劃分的方法進(jìn)行點(diǎn)云鄰域的精細(xì)查找。該算法的主要思想是:首先使用粗略查找,設(shè)置較大邊長的間隔進(jìn)行空間柵格劃分,將當(dāng)前點(diǎn)云劃分成多個(gè)小正方體區(qū)域。對(duì)于每個(gè)新進(jìn)來的點(diǎn),如果在它所在柵格以及周圍柵格中沒有其它點(diǎn)云存在,則將該點(diǎn)進(jìn)行過濾,認(rèn)為它不是重疊區(qū)域的點(diǎn)云;然后基于kd-tree使用較小半徑進(jìn)行精細(xì)查找,判斷新進(jìn)來的點(diǎn)周圍是否存在之前的點(diǎn)云,如果存在則認(rèn)為該點(diǎn)處于重疊區(qū)域,需要被剔除。但是上述方法中通過判斷鄰域中是否存在之前點(diǎn)云中的點(diǎn),即判斷新進(jìn)去點(diǎn)云和之前點(diǎn)云是否有重疊區(qū)域,對(duì)重疊區(qū)域的點(diǎn)進(jìn)行剔除。但是該算法會(huì)產(chǎn)生比較大的問題,就是如果新進(jìn)入點(diǎn)云pi在之前點(diǎn)云pc的邊界附近存在點(diǎn)的話,那么上述的判斷中,會(huì)將此邊界附近的點(diǎn)都剔除。這樣會(huì)造成在點(diǎn)云融合的過程中在之前點(diǎn)云的邊界線附近出現(xiàn)帶狀空洞區(qū)域。因此本發(fā)明點(diǎn)云融合的方法需要經(jīng)過邊界點(diǎn)檢測(cè)和鄰域上述鄰域查找過程,具體流程圖如圖6所示。2.1邊界點(diǎn)檢測(cè)算法根據(jù)以上討論,基于考慮本發(fā)明在進(jìn)行點(diǎn)云融合前需要對(duì)每塊點(diǎn)云的邊界點(diǎn)進(jìn)行檢測(cè),保留邊界點(diǎn)附近的點(diǎn)云,保持點(diǎn)云的完整結(jié)構(gòu)。邊界點(diǎn)檢測(cè)算法的主要思想是邊界點(diǎn)會(huì)存在于曲率和周圍點(diǎn)分布變化比較大的點(diǎn)上。算法的具體流程如下。算法2,提取點(diǎn)云pc邊界點(diǎn)算法:1)對(duì)當(dāng)前點(diǎn)云pc構(gòu)建kd-tree,遍歷pc中所有點(diǎn)vc,確定當(dāng)前點(diǎn)vc的鄰域點(diǎn)集vt;2)根據(jù)求得的當(dāng)前點(diǎn)vc的法向量,將鄰域點(diǎn)集vt投影到微切平面上;3)將vc在微切平面上的點(diǎn)vc′分別和vt在切平面上點(diǎn)集vt′中所有點(diǎn)連接成邊e;4)計(jì)算e中兩相鄰兩邊的夾角,記錄當(dāng)前夾角最大值θmax;5)根據(jù)設(shè)定的閾值θthreshold,當(dāng)θmax>θthreshold時(shí),標(biāo)記當(dāng)前點(diǎn)vc為邊界點(diǎn)。2.2改進(jìn)的點(diǎn)云融合算法得到點(diǎn)云pc的邊界點(diǎn)標(biāo)志后,需要對(duì)新進(jìn)來的點(diǎn)進(jìn)行判斷:使用kd-tree查詢到該點(diǎn)附近的點(diǎn)中,如果存在邊界點(diǎn),則將該點(diǎn)進(jìn)行保存。經(jīng)過改進(jìn)的融合算法具體步驟如下。算法3,改進(jìn)的點(diǎn)云融合算法:1)設(shè)i=0,pi(i=1,2,……,n-1)2)使i增加1,pi記為當(dāng)前已經(jīng)拼接好的點(diǎn)云pc,計(jì)算pc包圍盒,并使用空間柵格將包圍盒分割為多個(gè)小正方體;3)使j增加1,遍歷pi中的點(diǎn)vj(j=1,2,……,m);4)若vj不在pc包圍盒中,vj并入pc,且若j≤m,返回3);5)判斷vj所在小正方體及鄰近的多個(gè)小正方體(共27個(gè))中的點(diǎn)集v′(不含vj)是否在pc包圍盒中,若否,vj并入pc,且若j≤m,返回3);6)對(duì)pc創(chuàng)建kd-tree,以vj為圓心,r為半徑的鄰域內(nèi)搜索隸屬pc的點(diǎn)集v″(不含vj)并統(tǒng)計(jì)點(diǎn)數(shù)l,若l≤th(th為預(yù)設(shè)閾值),vj并入pc,且若j≤m,返回3);7)判斷vj鄰域內(nèi)是否存在邊界點(diǎn)集v″′(不含vj),若存在,vj并入pc,否則移除vj,且若j≤m,返回3);8)i<n,返回2);9)點(diǎn)云融合結(jié)束。本發(fā)明使用該點(diǎn)云融合算法對(duì)不同點(diǎn)云進(jìn)行融合,圖7a和圖7b為待融合的兩塊點(diǎn)云,圖7c為兩塊點(diǎn)云的融合結(jié)果,可以看出點(diǎn)云在融合的過程中能夠在去除冗余點(diǎn)云的同時(shí),保持點(diǎn)云模型的基本結(jié)構(gòu)特征。算法的運(yùn)行效率如圖8所示,點(diǎn)云融合運(yùn)行的時(shí)間和點(diǎn)云個(gè)數(shù)之間呈現(xiàn)出接近線性的關(guān)系,每二十萬點(diǎn)云的融合時(shí)間約為6秒,融合速度較快。3.表面重建點(diǎn)云經(jīng)過預(yù)處理、配準(zhǔn)和融合之后,從結(jié)構(gòu)上來說已經(jīng)接近原物體,但是還是需要使用幾何模型來構(gòu)造當(dāng)前物體的幾何結(jié)構(gòu)而非零散的點(diǎn)云。普通的表面重建方法如泊松表面重建的方法在對(duì)物體進(jìn)行表面重建的時(shí)候,重建出的面片在尖銳邊緣或銳利頂點(diǎn)處過于平滑,沒法保持原物體本身的樣式。本實(shí)施例可以保持重建模型在表面處的銳利特征,如圖9流程圖所示,具體分兩步實(shí)施:第一通過特征點(diǎn)檢測(cè)方法加速特征點(diǎn)附近點(diǎn)云坐標(biāo)的迭代,避免需要對(duì)所有點(diǎn)都進(jìn)行迭代更新;第二使用自適應(yīng)的步長迭代法對(duì)點(diǎn)云坐標(biāo)進(jìn)行更新,以更短時(shí)間獲取更加精確的重建模型。3.1銳利特征點(diǎn)檢測(cè)處于銳利邊緣附近的點(diǎn)法向量分布差異明顯,而處于平坦區(qū)域附近的點(diǎn)法向量分布較為均勻。基于法向量分布差異的區(qū)別,本發(fā)明提出的銳利特征點(diǎn)檢測(cè)算法主要的思想為:第一通過計(jì)算當(dāng)前點(diǎn)法向量和它鄰域內(nèi)法向量夾角的標(biāo)準(zhǔn)差以及最大間隔,分析當(dāng)前點(diǎn)是否可能處于邊緣銳利的區(qū)域;第二通過使用高斯映射的方式,將當(dāng)前點(diǎn)鄰域內(nèi)的法向量映射到單位球體中,即將所有經(jīng)過歸一化的法向量的初始點(diǎn)移動(dòng)到單位球體中心上,然后他們的結(jié)尾點(diǎn)代表它們的方向,在這種情況下,方向相同或相似的點(diǎn)在球體表面的距離會(huì)比較接近,因此使用基于距離的區(qū)域生長方法對(duì)映射到球體表面的各法向量的終止結(jié)點(diǎn)進(jìn)行聚類,根據(jù)得到的類別判定當(dāng)前點(diǎn)周圍法向量的變化情況。算法的具體步驟如下。算法4,特征點(diǎn)檢測(cè)算法:1)輸入需要進(jìn)行重建的點(diǎn)云pc,使用kd-tree建立當(dāng)前點(diǎn)云的拓?fù)浣Y(jié)構(gòu),對(duì)于pc中任意一點(diǎn)pi,使用radiussearch尋找pi附近的點(diǎn)pnei,記錄pnei中所有點(diǎn)的法向量nnei;2)對(duì)于所有法向量ni∈nnei,與點(diǎn)pi法向量pnj的夾角θti;3)計(jì)算所有夾角θti的標(biāo)準(zhǔn)差σt,當(dāng)σt>σthreshold(σthreshold為預(yù)先設(shè)定的標(biāo)準(zhǔn)差閾值)時(shí),認(rèn)為該點(diǎn)可能為銳利點(diǎn),否則返回步驟1)遍歷下一個(gè)點(diǎn);4)計(jì)算θti中最大夾角θmax和最小夾角θmin,當(dāng)θmax-θmin>δθthreshold(δθthreshold為預(yù)先設(shè)定的最大和最小角度差值的閾值)時(shí),認(rèn)為該點(diǎn)可能為銳利點(diǎn),否則返回步驟1)遍歷下一個(gè)點(diǎn);5)使用高斯映射聚類的方式將θti映射到單位球平面進(jìn)行聚類,當(dāng)聚類類別為1的時(shí)候,認(rèn)為這是平坦的區(qū)域,否則則將其認(rèn)為是組成銳利邊緣的點(diǎn)或銳利角點(diǎn)上的點(diǎn)進(jìn)行標(biāo)記。3.2自適應(yīng)步長更新保持銳利特征本發(fā)明提出基于銳利特征點(diǎn)檢測(cè)的表面重建方法,直接對(duì)泊松重建后組成表面三角網(wǎng)格的點(diǎn)進(jìn)行位置調(diào)整,使調(diào)整后的三角網(wǎng)格能夠保持原物體表面銳利的特征。保持模型表面銳利特征的主要思想是:第一使用雙邊過濾的方法更新銳利邊緣點(diǎn)附近每個(gè)網(wǎng)格的法向量,使銳利邊緣左右兩側(cè)的法向量更加接近于它們這一側(cè)的整體法向量值,而不是單獨(dú)于兩側(cè)處于中間方向的法向值;第二根據(jù)網(wǎng)格法向量更新后的結(jié)果更新組成三角網(wǎng)格的點(diǎn),使得更新后的點(diǎn)組成的三角網(wǎng)格的法向量盡量接近于經(jīng)過濾波產(chǎn)生的法向量值。在迭代的過程中,定義的匹配函數(shù)p(t)的值越來越小,越能夠靠近期望的點(diǎn)的坐標(biāo)。設(shè)定迭代更新的收斂條件為δp(t)<pth,即兩次更新前后的匹配函數(shù)差小于某一閾值的時(shí)候,停止更新點(diǎn)坐標(biāo)。其中迭代的步長λ的取值在此過程中起到了關(guān)鍵的作用,在求解最優(yōu)化的問題當(dāng)中,步長太大的話會(huì)使得迭代的時(shí)候直接跳過最小值,而步長太小的話會(huì)導(dǎo)致需要花很長時(shí)間達(dá)到最優(yōu)解。本發(fā)明使用基于匹配函數(shù)變化的自適應(yīng)步長更新方法,迭代更新點(diǎn)的最新坐標(biāo),以達(dá)到保持物體表面銳利特征的目的。具體步驟如下。算法5,保持特征的表面重建算法:1)針對(duì)重建表面三角網(wǎng)格mesh{vi&tj,i=1,3,……,nv,j=1,2,……,nt}中已標(biāo)記銳利點(diǎn)的三角面片tj′(j=1,2,……,nloc),nloc為含銳利點(diǎn)的三角面片的個(gè)數(shù),使用雙邊過濾算法(1)逐tj′(vj1′,vj2′,vj3′)獲取nloc個(gè)法向量nj′(j=1,2,……,nloc):其中,i=1,2,…,cj和ci分別代表當(dāng)前和鄰域三角面片的重心位置坐標(biāo),為(|cj-ci|)的標(biāo)準(zhǔn)高斯函數(shù),σc是(|cj-ci|)的標(biāo)準(zhǔn)差,為(nj·(nj-ni))的標(biāo)準(zhǔn)高斯函數(shù),nj·(nj-ni)表示相鄰三角網(wǎng)格法向量之差在當(dāng)前三角網(wǎng)格法向量上的投影,σd是(nj·(nj-ni))的標(biāo)準(zhǔn)差;2)j=0,定義匹配函數(shù)p(t)為獲取更新后的點(diǎn)與當(dāng)前面法向量的匹配程度,如(2)式,其中f為mesh中的三角面片,(vi′,vj′,v′k)為三角面片中的三個(gè)點(diǎn)。設(shè)定p(t)的初始值p(t0)為較大值,步長λ=λ0(λ0為預(yù)設(shè)步長);pt)=∑f((nj′·(vi′-vj′))2+(nj′·(vi′-v′k))2+(nj′·(v′k-vj′))2)(2)3)使j增加1,由(2)式計(jì)算p(tj);4)由(3)式更新mesh中已標(biāo)記銳利點(diǎn)的坐標(biāo);vj′=vj+λ∑j∈fn′f·nf′·(vi-vj)+n′f·nf′·(vk-vj)(3)其中,f是點(diǎn)vj所關(guān)聯(lián)的三角面片,(vi,vj,vk)為三角面片中的三個(gè)點(diǎn)。即將點(diǎn)vj向靠近向量nf′的方向“拉伸”5)若p(tj)≤p(tj-1),則返回3),否則令j=j(luò)-1且當(dāng)λ<0.04時(shí),令λ=λ/2,反之λ=λ-0.02,返回4);6)δp(v)≥pth或num≤nummax,則返回3);7)結(jié)束。使用本發(fā)明對(duì)輸入點(diǎn)云進(jìn)行保持特征的表面重建,圖10a為原點(diǎn)云的分布,圖10b為使用改進(jìn)的泊松重建進(jìn)行表面重建的結(jié)果,可以看出此時(shí)在邊緣處表面太過“圓滑”,圖10c為使用該發(fā)明進(jìn)行保持銳利特征的表面重建結(jié)果,明顯看出重建后的模型在邊緣處更加銳利,更能夠反映原點(diǎn)云本身的分布情況。同時(shí)使用本發(fā)明中使用自適應(yīng)方法與普通固定步長方法的比較見表1,使用自適應(yīng)的步長比使用固定步長達(dá)到相同的精確值,需要消耗的迭代次數(shù)更少,即本發(fā)明能夠在更短的時(shí)間內(nèi)達(dá)到更高的精確度。除此之外,本發(fā)明能夠在以較大初始值為步長的情況下,通過自適應(yīng)的方式縮小步長,保證不會(huì)出現(xiàn)迭代錯(cuò)誤的情況。表1自適應(yīng)迭代方法和固定步長方法比較結(jié)果上所述僅為本發(fā)明的實(shí)施例,本發(fā)明并不完全受此限制,凡在本發(fā)明原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁12當(dāng)前第1頁12