本发明涉及一种对点云数据进行边缘提取的方法,尤其涉及一种应用八邻域深度差的点云边缘提取方法。
背景技术:
:
随着激光测量技术的不断发展,激光测量设备不断推出,使逆求工程技术得到不断发展。在逆求工程设计中,可以将某个产品表面表达为大量的离散点,即点云。通过点云可进行逆求工程设计,如何从点云信息中提取产品的一些几何特征,成为逆求工程的设计核心。
点云边缘是指能够表达产品特征的一些边缘测量点。边缘不仅能表达产品的几何特征,而且在产品识别、重建曲面模型的品质和精度中起着重要的作用。基于点云的边缘提取在曲面重构、空洞修补、曲面特征检测得到广泛应用。
点云包括孔洞与非孔洞两类。目前,提取非孔洞点云边缘轮廓的方法有:利用点云分割方法的凸包算法提取点云边缘;利用KD树建立空间拓扑关系,通过邻近点构成的最小二乘平面投影点的角度差算法提取点云边缘。提取孔洞点云边缘轮廓的方法有:利用网格的拓扑关系提取点云边缘;利用alpha-shape算法提取点云边缘,可想象为一个半径为α的圆在点云里滚动,当α满足一定条件,圆会在点云边缘滚动,其滚动的痕迹就是点云的边缘。
对于点云数据,运用上述方法均难以实现对目标特征边界的快速提取。
技术实现要素:
:
发明目的:
为了克服现有的点云边缘提取速度慢的缺点,本发明提出了基于八邻域深度差的点云边缘提取方法,能够精确、快速地对点云边缘进行提取。
技术方案:
本发明是通过以下技术方案来实现的:
基于八邻域深度差的点云边缘提取方法,其特征在于:先根据目标特征的点云,对每个点沿深度方向进行垂直投影并对投影点进行栅格划分,计算出每个栅格内投影点所对应深度的平均值作为该栅格的深度值;然后比较每个栅格与其八邻域栅格的深度差,根据深度差判断该栅格内是否存在边缘点,并采用排列法从栅格内筛选出点云边缘点。
采用Kinect传感器和Atos扫描仪获取的点云数据,具体步骤为:
(1)对获取的点云数据沿深度方向垂直投影:对沿深度方向获取的单面点云数据,沿深度方向进行投影;
(2)对投影点进行栅格数据组织:对于投影点,统计其横纵坐标最小与最大的四个值,根据栅格的划分次数,计算出单个栅格的大小,然后将各投影点分配到各个栅格且进行编号;
(3)计算栅格的深度差:根据编号的任意栅格,统计栅格内投影点数目,若投影点数目为零,则将该栅格的深度值设定零;若栅格内投影点数目大于零,则将投影点所对应的深度值进行加权平均,将加权平均值作为该栅格的深度值;
(4)比较栅格与八邻域栅格的深度差:对每个栅格进行判断,若该栅格的深度值不为零,计算其与八邻域栅格里每个栅格的深度差,若存在深度差大于设定阈值,则该栅格为存在边缘点栅格;
(5)栅格内点云边缘点筛选:对于存在边缘点的栅格,统计出栅格内投影点个数,然后对投影点所对应的深度值进行升序排列;当投影点个数为奇数,栅格边缘点为中间位置所对应的投影点;当投影点个数为偶数,该栅格边缘点为中间两个值所对应的任一投影点,根据投影点提取其所对应的三维点。
优点及效果:
对均匀分布和非均匀分布的点云有较好的鲁棒性,对非孔洞点云数据和孔洞点云数据都有很好的提取效果。
点云边缘提取准确性高,耗时短。
附图说明:
图1为3×3栅格划分图。
图2为栅格的深度平均值图。
图3为栅格存在边缘点示意图。
图4为栅格深度筛选示意图。
具体实施方式:
本发明涉及一种基于八邻域深度差(8N-DD)的点云边缘提取方法,一种准确性高、耗时短的点云边缘提取方法,先根据目标特征的点云,对每个点沿深度方向进行垂直投影并对投影点进行栅格划分,计算出每个栅格内投影点所对应深度的平均值作为该栅格的深度值;然后比较每个栅格与其八邻域栅格的深度差,根据深度差判断该栅格内是否存在边缘点,并采用排列法从栅格内筛选出点云边缘点。
采用Kinect传感器和Atos扫描仪获取的点云数据,具体步骤如下:
(1)对获取的点云数据沿深度方向垂直投影:对沿深度方向获取的单面点云数据,沿深度方向进行投影;
(2)对投影点进行栅格数据组织:对于投影点,统计其横纵坐标最小与最大的四个值,根据栅格的划分次数,计算出单个栅格的大小,然后将各投影点分配到各个栅格且进行编号;
(3)计算栅格的深度差:根据编号的任意栅格,统计栅格内投影点数目,若投影点数目为零,则将该栅格的深度值设定零;若栅格内投影点数目大于零,则将投影点所对应的深度值进行加权平均,将加权平均值作为该栅格的深度值;
(4)比较栅格与八邻域栅格的深度差:对每个栅格进行判断,若该栅格的深度值不为零,计算其与八邻域栅格里每个栅格的深度差,若存在深度差大于设定阈值,则该栅格为存在边缘点栅格;
(5)栅格内点云边缘点筛选:对于存在边缘点的栅格,统计出栅格内投影点个数,然后对投影点所对应的深度值进行升序排列;当投影点个数为奇数,栅格边缘点为中间位置所对应的投影点;当投影点个数为偶数,该栅格边缘点为中间两个值所对应的任一投影点,根据投影点提取其所对应的三维点。
该方法对均匀分布和非均匀分布的点云有较好的鲁棒性,同时对含有孔洞和非孔洞点云均能有效进行边缘提取。
下面结合附图对本发明做进一步的说明:
基于八邻域深度差的点云边缘提取方法,步骤如下:
(1)对点云沿深度方向垂直投影
对沿深度方向获取的单面点云数据,沿深度方向z进行投影(相当于垂直投影到x,y平面上)。
点云数据可表示为:
P={Pi|Pi=(xi,yi,zi),i∈[1,n]}
式中:Pi表示空间(xi,yi,zi)处位置坐标;n表示点云个数。
投影点可表示为:
P'={Pi'|Pi'=(xi,yi),i∈[1,n]}
式中:Pi'表示(xi,yi)处位置坐标。
(2)对投影点进行栅格数据组织
对于投影点P',统计其横纵坐标最小与最大的四个值Xmin、Xmax、Ymin、Ymax;根据栅格的划分次数m,计算出单个栅格的大小为axb,其中:
[]表示取整;
[]表示取整;
将各投影点分配到各个栅格且进行编号:首先根据当前投影点坐标(x,y),计算该点所在栅格的行r和列c;然后将该点添加到第r行和c列的栅格中,且将该栅格编号为G(r,c),如图1所示,其中:
[]表示取整;
[]表示取整;
如图1所示,栅格是3×3栅格,从栅格左上角对栅格进行编号,第一行第一列栅格为G(0,0),第一行第二列栅格为G(0,1),直到将第三行第三列栅格编号为G(2,2)。
(3)计算栅格的深度值
根据编号的任意栅格G(i,j),统计栅格内投影点的数目,若投影点数目为零,则将该栅格的深度值设定为Z=0,如图2所示;若栅格内投影点数目大于零,则将投影点所对应的深度值进行加权平均,将加权平均值Zave作为该栅格的深度值,栅格深度值可表示为:
式中:Dm表示栅格内投影点所对应的深度值;L表示栅格内投影点的个数。
图2给出了3×3栅格的深度值设定,栅格G(0,0),G(1,0)和G(2,2)栅格中无投影点,则栅格的深度值设为零;其它栅格内都存在投影点,则栅格的深度值设定为对应的加权平均值,如:Z1,Z2,Z3,Z4,Z5,Z6。
(4)栅格间深度比较
对每个栅格进行判断,若该栅格的深度值不为零,计算其与八邻域栅格里每个栅格的深度差,若存在深度差大于阈值T,则该栅格为存在边缘点栅格,图3给出了判断栅格存在边缘点的示意图。
如图3所示,对于任意栅格G(i,j),以其八邻域栅格中G(i-1,j)栅格为例,其与栅格G(i,j)的深度差为D,D大于阈值T,判断出栅格G(i,j)存在边缘点。
(5)栅格内点云边缘点筛选
对于存在边缘点的栅格G(i,j),统计出栅格内投影点个数k,然后对投影点所对应的深度值进行升序排列。当k为奇数,栅格边缘点为位置所对应的投影点;当k为偶数,该栅格边缘点为或位置所对应的投影点,根据投影点提取其所对应的三维点,图4给出了边缘点筛选示意图。
如图4所示,存在边缘点的栅格G(i,j)中有4个投影点,对4个投影点所对应的深度值排序为Z1,Z2,Z3和Z4,所以Z2或Z3所对应的投影点为边缘点,根据边缘点提取其三维点P。