基于点云的典型零部件识别方法与流程

文档序号:12671401阅读:449来源:国知局
基于点云的典型零部件识别方法与流程

本发明涉及一种对典型零部件识别的方法,尤其涉及一种基于点云的典型零部件识别方法。



背景技术:

随着激光测量技术的不断发展,激光测量设备不断推出,使逆求工程技术得到不断发展。在逆求工程设计中,可以将某个产品表面表达为大量的离散点,即点云。通过点云可进行逆求工程设计,如何从点云信息中提取产品的一些几何特征,成为逆求工程的设计核心。

点云边缘是指能够表达产品特征的一些边缘测量点。边缘不仅能表达产品的几何特征,而且在产品识别、重建曲面模型的品质和精度中起着重要的作用。基于点云的边缘提取在曲面重构、空洞修补、曲面特征检测得到广泛应用。

点云包括孔洞与非孔洞两类。目前,提取非孔洞点云边缘轮廓的方法有:利用点云分割方法的凸包算法提取点云边缘;利用KD树建立空间拓扑关系,通过邻近点构成的最小二乘平面投影点的角度差算法提取点云边缘。提取孔洞点云边缘轮廓的方法有:利用网格的拓扑关系提取点云边缘;利用alpha-shape算法提取点云边缘,可想象为一个半径为α的圆在点云里滚动,当α满足一定条件,圆会在点云边缘滚动,其滚动的痕迹就是点云的边缘。

对于典型零部件的点云数据,运用上述方法均难以实现对零部件点云特征边界的快速提取,进而难以实现对典型零部件的快速识别。



技术实现要素:

发明目的:

本发明提供了一种基于点云的典型零部件识别方法,现有的零部件识别中采用图像的方法进行识别,使用Kinect设备能够提取点云,能够通过对点云的处理达到识别目的。

技术方案:

本发明是通过以下技术方案来实现的:

基于点云的典型零部件识别方法,其特征在于:首先对Kinect传感器获取的目标点云进行优化并利用八邻域深度差算法提取点云边缘;然后用随机抽样一致性RANSAC算法对分割后的点云边缘进行检测,并提取边缘特征以识别零部件。

采用Kinect传感器进行零部件识别,对点云边缘提取方法的具体步骤为:

(1)对获取的点云数据沿深度方向垂直投影:对沿深度方向获取的单面点云数据,沿深度方向进行投影;

(2)对投影点进行栅格数据组织:对于投影点,统计其横纵坐标最小与最大的四个值,根据栅格的划分次数,计算出单个栅格的大小,然后将各投影点分配到各个栅格且进行编号;

(3)计算栅格的深度差:根据编号的任意栅格,统计栅格内投影点数目,若投影点数目为零,则将该栅格的深度值设定零;若栅格内投影点数目大于零,则将投影点所对应的深度值进行加权平均,将加权平均值作为该栅格的深度值;

(4)比较栅格与八邻域栅格的深度差:对每个栅格进行判断,若该栅格的深度值不为零,计算其与八邻域栅格里每个栅格的深度差,若存在深度差大于设定阈值,则该栅格为存在边缘点栅格;

(5)栅格内点云边缘点筛选:对于存在边缘点的栅格,统计出栅格内投影点个数,然后对投影点所对应的深度值进行升序排列;当投影点个数为奇数,栅格边缘点为中间位置所对应的投影点;当投影点个数为偶数,该栅格边缘点为中间两个值所对应的任一投影点,根据投影点提取其所对应的三维点。

在对点云边缘提取前,先进行点云获取与优化,利用非线性滤波优化算法对点云去噪处理。

点云识别的步骤如下:

1)点云边缘分割:点云边缘数据通常被看成一个点集,点集内各种目标特征点混合在一起,点云边缘分割就是将同一目标特征点提取出来;

2)基于RANSAC算法的目标识别:对于有棱角且边是直线的典型零部件,依据随机抽样一致性RANSAC算法,对分割后的典型零部件点云边缘进行检测,并提取边缘特征以识别零部件。

优点及效果:

整个识别过程中的设备,包括Kinect传感器和笔记本电脑,成本低。

整个识别过程都是由设备自动完成,零部件识别快速、精确。

附图说明:

图1为某点深度值的误差示意图。

图2为实验物体图。

图3为3×3栅格划分图。

图4为栅格的深度平均值图。

图5为栅格存在边缘点示意图。

图6为栅格深度筛选示意图。

图7为边缘点分割示意图。

表1为Kinect深度偏移。

表2为0.8m处Kinect数据优化后偏移量。

表3为典型零部件模型三个参数。

具体实施方式:

本发明涉及一种基于点云的典型零部件识别方法,首先对Kinect传感器获取的目标点云进行优化并利用八邻域深度差算法提取点云边缘;然后用随机抽样一致性RANSAC算法对分割后的点云边缘进行检测,并提取边缘特征以识别零部件。该方法利用Kinect获取点云数据,简单,方便快捷。

采用Kinect传感器进行零部件识别,对点云边缘提取方法的具体步骤为:

(1)对获取的点云数据沿深度方向垂直投影:对沿深度方向获取的单面点云数据,沿深度方向进行投影;

(2)对投影点进行栅格数据组织:对于投影点,统计其横纵坐标最小与最大的四个值,根据栅格的划分次数,计算出单个栅格的大小,然后将各投影点分配到各个栅格且进行编号;

(3)计算栅格的深度差:根据编号的任意栅格,统计栅格内投影点数目,若投影点数目为零,则将该栅格的深度值设定零;若栅格内投影点数目大于零,则将投影点所对应的深度值进行加权平均,将加权平均值作为该栅格的深度值;

(4)比较栅格与八邻域栅格的深度差:对每个栅格进行判断,若该栅格的深度值不为零,计算其与八邻域栅格里每个栅格的深度差,若存在深度差大于设定阈值,则该栅格为存在边缘点栅格;

(5)栅格内点云边缘点筛选:对于存在边缘点的栅格,统计出栅格内投影点个数,然后对投影点所对应的深度值进行升序排列;当投影点个数为奇数,栅格边缘点为中间位置所对应的投影点;当投影点个数为偶数,该栅格边缘点为中间两个值所对应的任一投影点,根据投影点提取其所对应的三维点。

在对点云边缘提取前,先进行点云获取与优化,比较了线性和非线性滤波优化算法;最后根据滤波算法的滤波效果,利用非线性滤波优化算法对点云去噪处理。

点云识别的步骤如下:

1)点云边缘分割:点云边缘数据通常被看成一个点集,点集内各种目标特征点混合在一起,点云边缘分割就是将同一目标特征点提取出来;

2)基于RANSAC算法的目标识别:对于有棱角且边是直线的典型零部件,依据随机抽样一致性RANSAC算法,对分割后的典型零部件点云边缘进行检测,并提取边缘特征以识别零部件。

下面结合附图对本发明做进一步的说明:

基于点云的典型零部件识别方法,步骤如下:

(1)点云获取与优化,具体步骤如下:

1)点云精度分析:Kinect采集数据时存在一定的误差,其获取空间某点的深度值,不同时刻该点的深度值存在精度误差,图1给出了某固定点在不同时刻深度值存在误差的示意图。

如图1所示,若某点深度值为h,h1、h2分别在t2和t3时刻获取的该点点深度值。显然,在t2和t3时刻获得的深度值存在着误差。

为研究深度值的随机误差情况,以竖直刚性木板平面作为目标,设计了利用Kinect从0.7m~3m之间间隔0.1m的方式进行扫描,每个距离获取一幅深度图像,统计深度图像里点的深度偏移量,即同一幅深度图像里最大与最小深度值的差,图2给出了实验图,表1给出了深度偏移量。

表1Kinect深度偏移

2)点云优化:由于Kinect深度值随机跳变的特点,利用滤波优化算法对其去噪处理。滤波优化分为线性和非线性滤波优化算法。同样以竖直刚性木板平面为目标,利用Kinect距离0.8m处对目标进行扫描,获取30帧深度图像,每一帧图像上有307200个数据点,利用多线程对数据点进行并行计算,将不同深度图像帧在同一坐标位置的深度数据进行线性滤波和非线性滤波,表2给出了利用不同滤波优化算法后所对应的偏移量。

表2 0.8m处Kinect数据优化后偏移量

线性滤波算法可归结为:

式中:F(x,y)表示不同图像帧在点(x,y)位置的深度值;M为图像帧数;G(x,y)表示优化后点(x,y)位置的深度值。

非线性滤波算法可归纳为:

G(x,y)=Fmid(x,y)

式中:Fmid(x,y)表示不同图像帧在点(x,y)位置的深度值排序后的中间值;G(x,y)为优化后该点的深度值。

如表2所示,在距离0.8m处利用线性滤波优化,偏移量小于6mm,利用非线性滤波优化,偏移量小于4mm,所以本发明利用非线性滤波优化算法对深度图像进行优化。对于优化后的深度图像,利用Kinect的SDK软件开发工具包将其转化为点云数据。

(2)点云边缘提取,对于Kinect所获取的点云数据,用八邻域深度差(8N-DD)算法进行点云边缘提取,具体步骤如下:

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),如图3所示,其中:

[]表示取整

[]表示取整

如图3所示,栅格是3×3栅格,从栅格左上角对栅格进行编号,第一行第一列栅格为G(0,0),第一行第二列栅格为G(0,1),直到将第三行第三列栅格编号为G(2,2)。

3)计算栅格的深度值

根据编号的任意栅格G(i,j),统计栅格内投影点的数目,若投影点数目为零,则将该栅格的深度值设定为Z=0,如图4所示;若栅格内投影点数目大于零,则将投影点所对应的深度值进行加权平均,将加权平均值Zave作为该栅格的深度值,栅格深度值可表示为:

式中:Dm表示栅格内投影点所对应的深度值;L表示栅格内投影点的个数。

图4给出了3×3栅格的深度值设定,栅格G(0,0),G(1,0)和G(2,2)栅格中无投影点,则栅格的深度值设为零;其它栅格内都存在投影点,则栅格的深度值设定为对应的加权平均值,如:Z1,Z2,Z3,Z4,Z5,Z6

4)栅格间深度比较

对每个栅格进行判断,若该栅格的深度值不为零,计算其与八邻域栅格里每个栅格的深度差,若存在深度差大于阈值T,则该栅格为存在边缘点栅格,图5给出了判断栅格存在边缘点的示意图。

如图5所示,对于任意栅格G(i,j),以其八邻域栅格中G(i-1,j)栅格为例,其与栅格G(i,j)的深度差为D,D大于阈值T,判断出栅格G(i,j)存在边缘点。

5)栅格内点云边缘点筛选

对于存在边缘点的栅格G(i,j),统计出栅格内投影点个数k,然后对投影点所对应的深度值进行升序排列。当k为奇数,栅格边缘点为位置所对应的投影点;当k为偶数,该栅格边缘点为或位置所对应的投影点,根据投影点提取其所对应的三维点,图6给出了边缘点筛选示意图。

如图6所示,存在边缘点的栅格G(i,j)中有4个投影点,对4个投影点所对应的深度值排序为Z1,Z2,Z3和Z4,所以Z2或Z3所对应的投影点为边缘点,根据边缘点提取其三维点P。

(3)点云识别,为便于识别,首先对所提取的点云边缘点进行分割,然后对分割后的点云边缘点利用RANSAC算法进行检测,并提取出边缘特征以识别目标,具体步骤如下:

1)点云边缘分割:点云边缘数据通常被看成一个点集,点集内各种目标特征点混合在一起,点云边缘分割就是将同一目标特征点提取出来,图7给出了边缘点分割示意图。

如图7所示,点云边缘数据集合为S,任取一点P,寻找该点附近的k个邻近点,在顺时针方向取欧式距离最小的P‘点的作为新的目标点,对P‘点继续寻找邻近点,顺时针经过一圈寻找又回到P点,则将寻找到的所有目标点作为分割出的点集S1,利用同样方法分割出点集S2

2)基于RANSAC算法的目标识别:随机抽样一致性(RANSAC)算法思想简单,以拟合直线为例,首先随机选择两个点,两点确定一条直线,统计在该条直线一定距离范围内点的数目V。重复随机选择U次,将V最大的直线确认为最佳直线。

对于一些有棱角且边是直线的典型零部件,依据RANSAC可以提取直线的思想,可以用来对典型零部件的点云边缘进行检测,并提取边缘特征以识别零部件。

以六角工件为例,一些特征参数如表3所示,通过RANSAC算法对分割后点云边缘进行边数及夹角检测,以此识别工件类型。

表3典型零部件模型三个参数

如表3所示,六角工件有6条边,夹角为120°。利用RANSAC算法对六角工件的识别方法为:首先随机提取六角工件点云边缘中任意两点(xi,yi)与(xj,yj),根据两点坐标求取两点的直线方程,然后计算边缘点内某点到该直线的欧式距离D,若D小于设定的阈值T,则把该点当作局内点,统计所有局内点个数为N,若N满足阈值条件ε,判断N所对应的直线为点云边缘某条边;重复随机提取点云边缘上的两个点,当统计的点的个数满足设定的阈值ε‘时,跳出循环;根据两个点的斜率和截距去掉相似直线,剩余直线条数为6,计算剩下每两条直线的夹角为120°,依据剩余直线条数6及夹角120°判断出点云边缘所对应的工件为六角形工件。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1