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