本發(fā)明涉及一種對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行邊緣提取的方法,尤其涉及一種應(yīng)用八鄰域深度差的點(diǎn)云邊緣提取方法。
背景技術(shù):
:
隨著激光測(cè)量技術(shù)的不斷發(fā)展,激光測(cè)量設(shè)備不斷推出,使逆求工程技術(shù)得到不斷發(fā)展。在逆求工程設(shè)計(jì)中,可以將某個(gè)產(chǎn)品表面表達(dá)為大量的離散點(diǎn),即點(diǎn)云。通過點(diǎn)云可進(jìn)行逆求工程設(shè)計(jì),如何從點(diǎn)云信息中提取產(chǎn)品的一些幾何特征,成為逆求工程的設(shè)計(jì)核心。
點(diǎn)云邊緣是指能夠表達(dá)產(chǎn)品特征的一些邊緣測(cè)量點(diǎn)。邊緣不僅能表達(dá)產(chǎn)品的幾何特征,而且在產(chǎn)品識(shí)別、重建曲面模型的品質(zhì)和精度中起著重要的作用?;邳c(diǎn)云的邊緣提取在曲面重構(gòu)、空洞修補(bǔ)、曲面特征檢測(cè)得到廣泛應(yīng)用。
點(diǎn)云包括孔洞與非孔洞兩類。目前,提取非孔洞點(diǎn)云邊緣輪廓的方法有:利用點(diǎn)云分割方法的凸包算法提取點(diǎn)云邊緣;利用KD樹建立空間拓?fù)潢P(guān)系,通過鄰近點(diǎn)構(gòu)成的最小二乘平面投影點(diǎn)的角度差算法提取點(diǎn)云邊緣。提取孔洞點(diǎn)云邊緣輪廓的方法有:利用網(wǎng)格的拓?fù)潢P(guān)系提取點(diǎn)云邊緣;利用alpha-shape算法提取點(diǎn)云邊緣,可想象為一個(gè)半徑為α的圓在點(diǎn)云里滾動(dòng),當(dāng)α滿足一定條件,圓會(huì)在點(diǎn)云邊緣滾動(dòng),其滾動(dòng)的痕跡就是點(diǎn)云的邊緣。
對(duì)于點(diǎn)云數(shù)據(jù),運(yùn)用上述方法均難以實(shí)現(xiàn)對(duì)目標(biāo)特征邊界的快速提取。
技術(shù)實(shí)現(xiàn)要素:
:
發(fā)明目的:
為了克服現(xiàn)有的點(diǎn)云邊緣提取速度慢的缺點(diǎn),本發(fā)明提出了基于八鄰域深度差的點(diǎn)云邊緣提取方法,能夠精確、快速地對(duì)點(diǎn)云邊緣進(jìn)行提取。
技術(shù)方案:
本發(fā)明是通過以下技術(shù)方案來實(shí)現(xiàn)的:
基于八鄰域深度差的點(diǎn)云邊緣提取方法,其特征在于:先根據(jù)目標(biāo)特征的點(diǎn)云,對(duì)每個(gè)點(diǎn)沿深度方向進(jìn)行垂直投影并對(duì)投影點(diǎn)進(jìn)行柵格劃分,計(jì)算出每個(gè)柵格內(nèi)投影點(diǎn)所對(duì)應(yīng)深度的平均值作為該柵格的深度值;然后比較每個(gè)柵格與其八鄰域柵格的深度差,根據(jù)深度差判斷該柵格內(nèi)是否存在邊緣點(diǎn),并采用排列法從柵格內(nèi)篩選出點(diǎn)云邊緣點(diǎn)。
采用Kinect傳感器和Atos掃描儀獲取的點(diǎn)云數(shù)據(jù),具體步驟為:
(1)對(duì)獲取的點(diǎn)云數(shù)據(jù)沿深度方向垂直投影:對(duì)沿深度方向獲取的單面點(diǎn)云數(shù)據(jù),沿深度方向進(jìn)行投影;
(2)對(duì)投影點(diǎn)進(jìn)行柵格數(shù)據(jù)組織:對(duì)于投影點(diǎn),統(tǒng)計(jì)其橫縱坐標(biāo)最小與最大的四個(gè)值,根據(jù)柵格的劃分次數(shù),計(jì)算出單個(gè)柵格的大小,然后將各投影點(diǎn)分配到各個(gè)柵格且進(jìn)行編號(hào);
(3)計(jì)算柵格的深度差:根據(jù)編號(hào)的任意柵格,統(tǒng)計(jì)柵格內(nèi)投影點(diǎn)數(shù)目,若投影點(diǎn)數(shù)目為零,則將該柵格的深度值設(shè)定零;若柵格內(nèi)投影點(diǎn)數(shù)目大于零,則將投影點(diǎn)所對(duì)應(yīng)的深度值進(jìn)行加權(quán)平均,將加權(quán)平均值作為該柵格的深度值;
(4)比較柵格與八鄰域柵格的深度差:對(duì)每個(gè)柵格進(jìn)行判斷,若該柵格的深度值不為零,計(jì)算其與八鄰域柵格里每個(gè)柵格的深度差,若存在深度差大于設(shè)定閾值,則該柵格為存在邊緣點(diǎn)柵格;
(5)柵格內(nèi)點(diǎn)云邊緣點(diǎn)篩選:對(duì)于存在邊緣點(diǎn)的柵格,統(tǒng)計(jì)出柵格內(nèi)投影點(diǎn)個(gè)數(shù),然后對(duì)投影點(diǎn)所對(duì)應(yīng)的深度值進(jìn)行升序排列;當(dāng)投影點(diǎn)個(gè)數(shù)為奇數(shù),柵格邊緣點(diǎn)為中間位置所對(duì)應(yīng)的投影點(diǎn);當(dāng)投影點(diǎn)個(gè)數(shù)為偶數(shù),該柵格邊緣點(diǎn)為中間兩個(gè)值所對(duì)應(yīng)的任一投影點(diǎn),根據(jù)投影點(diǎn)提取其所對(duì)應(yīng)的三維點(diǎn)。
優(yōu)點(diǎn)及效果:
對(duì)均勻分布和非均勻分布的點(diǎn)云有較好的魯棒性,對(duì)非孔洞點(diǎn)云數(shù)據(jù)和孔洞點(diǎn)云數(shù)據(jù)都有很好的提取效果。
點(diǎn)云邊緣提取準(zhǔn)確性高,耗時(shí)短。
附圖說明:
圖1為3×3柵格劃分圖。
圖2為柵格的深度平均值圖。
圖3為柵格存在邊緣點(diǎn)示意圖。
圖4為柵格深度篩選示意圖。
具體實(shí)施方式:
本發(fā)明涉及一種基于八鄰域深度差(8N-DD)的點(diǎn)云邊緣提取方法,一種準(zhǔn)確性高、耗時(shí)短的點(diǎn)云邊緣提取方法,先根據(jù)目標(biāo)特征的點(diǎn)云,對(duì)每個(gè)點(diǎn)沿深度方向進(jìn)行垂直投影并對(duì)投影點(diǎn)進(jìn)行柵格劃分,計(jì)算出每個(gè)柵格內(nèi)投影點(diǎn)所對(duì)應(yīng)深度的平均值作為該柵格的深度值;然后比較每個(gè)柵格與其八鄰域柵格的深度差,根據(jù)深度差判斷該柵格內(nèi)是否存在邊緣點(diǎn),并采用排列法從柵格內(nèi)篩選出點(diǎn)云邊緣點(diǎn)。
采用Kinect傳感器和Atos掃描儀獲取的點(diǎn)云數(shù)據(jù),具體步驟如下:
(1)對(duì)獲取的點(diǎn)云數(shù)據(jù)沿深度方向垂直投影:對(duì)沿深度方向獲取的單面點(diǎn)云數(shù)據(jù),沿深度方向進(jìn)行投影;
(2)對(duì)投影點(diǎn)進(jìn)行柵格數(shù)據(jù)組織:對(duì)于投影點(diǎn),統(tǒng)計(jì)其橫縱坐標(biāo)最小與最大的四個(gè)值,根據(jù)柵格的劃分次數(shù),計(jì)算出單個(gè)柵格的大小,然后將各投影點(diǎn)分配到各個(gè)柵格且進(jìn)行編號(hào);
(3)計(jì)算柵格的深度差:根據(jù)編號(hào)的任意柵格,統(tǒng)計(jì)柵格內(nèi)投影點(diǎn)數(shù)目,若投影點(diǎn)數(shù)目為零,則將該柵格的深度值設(shè)定零;若柵格內(nèi)投影點(diǎn)數(shù)目大于零,則將投影點(diǎn)所對(duì)應(yīng)的深度值進(jìn)行加權(quán)平均,將加權(quán)平均值作為該柵格的深度值;
(4)比較柵格與八鄰域柵格的深度差:對(duì)每個(gè)柵格進(jìn)行判斷,若該柵格的深度值不為零,計(jì)算其與八鄰域柵格里每個(gè)柵格的深度差,若存在深度差大于設(shè)定閾值,則該柵格為存在邊緣點(diǎn)柵格;
(5)柵格內(nèi)點(diǎn)云邊緣點(diǎn)篩選:對(duì)于存在邊緣點(diǎn)的柵格,統(tǒng)計(jì)出柵格內(nèi)投影點(diǎn)個(gè)數(shù),然后對(duì)投影點(diǎn)所對(duì)應(yīng)的深度值進(jìn)行升序排列;當(dāng)投影點(diǎn)個(gè)數(shù)為奇數(shù),柵格邊緣點(diǎn)為中間位置所對(duì)應(yīng)的投影點(diǎn);當(dāng)投影點(diǎn)個(gè)數(shù)為偶數(shù),該柵格邊緣點(diǎn)為中間兩個(gè)值所對(duì)應(yīng)的任一投影點(diǎn),根據(jù)投影點(diǎn)提取其所對(duì)應(yīng)的三維點(diǎn)。
該方法對(duì)均勻分布和非均勻分布的點(diǎn)云有較好的魯棒性,同時(shí)對(duì)含有孔洞和非孔洞點(diǎn)云均能有效進(jìn)行邊緣提取。
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的說明:
基于八鄰域深度差的點(diǎn)云邊緣提取方法,步驟如下:
(1)對(duì)點(diǎn)云沿深度方向垂直投影
對(duì)沿深度方向獲取的單面點(diǎn)云數(shù)據(jù),沿深度方向z進(jìn)行投影(相當(dāng)于垂直投影到x,y平面上)。
點(diǎn)云數(shù)據(jù)可表示為:
P={Pi|Pi=(xi,yi,zi),i∈[1,n]}
式中:Pi表示空間(xi,yi,zi)處位置坐標(biāo);n表示點(diǎn)云個(gè)數(shù)。
投影點(diǎn)可表示為:
P'={Pi'|Pi'=(xi,yi),i∈[1,n]}
式中:Pi'表示(xi,yi)處位置坐標(biāo)。
(2)對(duì)投影點(diǎn)進(jìn)行柵格數(shù)據(jù)組織
對(duì)于投影點(diǎn)P',統(tǒng)計(jì)其橫縱坐標(biāo)最小與最大的四個(gè)值Xmin、Xmax、Ymin、Ymax;根據(jù)柵格的劃分次數(shù)m,計(jì)算出單個(gè)柵格的大小為axb,其中:
[]表示取整;
[]表示取整;
將各投影點(diǎn)分配到各個(gè)柵格且進(jìn)行編號(hào):首先根據(jù)當(dāng)前投影點(diǎn)坐標(biāo)(x,y),計(jì)算該點(diǎn)所在柵格的行r和列c;然后將該點(diǎn)添加到第r行和c列的柵格中,且將該柵格編號(hào)為G(r,c),如圖1所示,其中:
[]表示取整;
[]表示取整;
如圖1所示,柵格是3×3柵格,從柵格左上角對(duì)柵格進(jìn)行編號(hào),第一行第一列柵格為G(0,0),第一行第二列柵格為G(0,1),直到將第三行第三列柵格編號(hào)為G(2,2)。
(3)計(jì)算柵格的深度值
根據(jù)編號(hào)的任意柵格G(i,j),統(tǒng)計(jì)柵格內(nèi)投影點(diǎn)的數(shù)目,若投影點(diǎn)數(shù)目為零,則將該柵格的深度值設(shè)定為Z=0,如圖2所示;若柵格內(nèi)投影點(diǎn)數(shù)目大于零,則將投影點(diǎn)所對(duì)應(yīng)的深度值進(jìn)行加權(quán)平均,將加權(quán)平均值Zave作為該柵格的深度值,柵格深度值可表示為:
式中:Dm表示柵格內(nèi)投影點(diǎn)所對(duì)應(yīng)的深度值;L表示柵格內(nèi)投影點(diǎn)的個(gè)數(shù)。
圖2給出了3×3柵格的深度值設(shè)定,柵格G(0,0),G(1,0)和G(2,2)柵格中無投影點(diǎn),則柵格的深度值設(shè)為零;其它柵格內(nèi)都存在投影點(diǎn),則柵格的深度值設(shè)定為對(duì)應(yīng)的加權(quán)平均值,如:Z1,Z2,Z3,Z4,Z5,Z6。
(4)柵格間深度比較
對(duì)每個(gè)柵格進(jìn)行判斷,若該柵格的深度值不為零,計(jì)算其與八鄰域柵格里每個(gè)柵格的深度差,若存在深度差大于閾值T,則該柵格為存在邊緣點(diǎn)柵格,圖3給出了判斷柵格存在邊緣點(diǎn)的示意圖。
如圖3所示,對(duì)于任意柵格G(i,j),以其八鄰域柵格中G(i-1,j)柵格為例,其與柵格G(i,j)的深度差為D,D大于閾值T,判斷出柵格G(i,j)存在邊緣點(diǎn)。
(5)柵格內(nèi)點(diǎn)云邊緣點(diǎn)篩選
對(duì)于存在邊緣點(diǎn)的柵格G(i,j),統(tǒng)計(jì)出柵格內(nèi)投影點(diǎn)個(gè)數(shù)k,然后對(duì)投影點(diǎn)所對(duì)應(yīng)的深度值進(jìn)行升序排列。當(dāng)k為奇數(shù),柵格邊緣點(diǎn)為位置所對(duì)應(yīng)的投影點(diǎn);當(dāng)k為偶數(shù),該柵格邊緣點(diǎn)為或位置所對(duì)應(yīng)的投影點(diǎn),根據(jù)投影點(diǎn)提取其所對(duì)應(yīng)的三維點(diǎn),圖4給出了邊緣點(diǎn)篩選示意圖。
如圖4所示,存在邊緣點(diǎn)的柵格G(i,j)中有4個(gè)投影點(diǎn),對(duì)4個(gè)投影點(diǎn)所對(duì)應(yīng)的深度值排序?yàn)閆1,Z2,Z3和Z4,所以Z2或Z3所對(duì)應(yīng)的投影點(diǎn)為邊緣點(diǎn),根據(jù)邊緣點(diǎn)提取其三維點(diǎn)P。