一种三维点云与自由曲面模型的匹配方法与流程

文档序号:23057622发布日期:2020-11-25 17:37阅读:295来源:国知局
一种三维点云与自由曲面模型的匹配方法与流程

本发明属于点云处理技术领域,具体涉及一种三维点云与自由曲面模型的匹配方法。



背景技术:

三维物体的描述和匹配是计算机视觉的重要组成部分,通过激光扫描和三维面形测量得到的点云数据常常用来模型化、物体识别、分类、场景理解以及实测数据与理想模型的对比。点云匹配则是计算机视觉的基础技术,是三维配准、物体识别、逆向工程等方向的前提,被广泛的应用于智能机器人、生物医疗、导航等领域。

在工程应用中,为实现三维点云与自由曲面模型匹配,主要采用两种方法。第一种是采用多项式拟合的方法,即将模型的理想点云用多项式拟合成曲面作为参照,然后用三维测量的点云拟合参照曲面,计算误差。因为点云数据量很大,采用高精度拟合算法计算量非常大,而且拟合的曲面模型不一定能够非常好的描述点云。第二种是采用点云匹配的方法,分为基于全局特征的匹配算法和基于局部特征的匹配算法,如果两组点云相似度高、局部特征不明显,全局特征相似,无法提取特征点,无法完成高精度点云匹配。



技术实现要素:

针对现有技术中存在的上述不足,本发明提供了一种速度快、精度高的三维点云与自由曲面模型的匹配方法。

为解决上述技术问题,本发明采用了如下的技术方案:一种三维点云与自由曲面模型的匹配方法,包括以下步骤:

步骤s1.1、待配准点云p,点云q由模型文件转换成pcd格式点云文件,旋转点云,使其拟合平面垂直于z轴,判断点云法线方向,旋转至法线方向相同。然后向xoy面投影。

步骤s1.2、通过一个点的邻域特征判断该点是不是边缘点,在投影点中查找所有边缘点。

步骤s1.3、首先计算二维边缘点到质心的距离,根据相邻边缘点距离的变化,判断边缘点是否为角点,查找所有角点。

步骤s1.4、将待匹配点云边缘的一个角点绕z轴旋转,使得该角点依次与目标点云边缘的角点匹配,当两组边缘点的距离方差最小时,为正确匹配。

步骤s1.5、通过优化两组点云之间的旋转和平移矩阵,迭代至目标函数收敛,匹配完成。计算所有点的误差得到整体误差,用均方根误差描述。

优选地,点云法线方向与拟合平面法线平行,旋转至z轴后,z分量方向可以由所有点的法向量确定:如果多数法线z分量为正,则认为平面法向量指向z轴正方向,如果多数法线z分量为负,认为平面法向量指向z轴负方向。

优选地,在二维投影点中,生成访问点指向邻域点的向量,由相邻向量之间的夹角确定该访问点是否为边缘点。通过半径查找邻域点,半径r1的选择可根据点云的稀疏程度确定。也可按照k-近邻查找,查找点必须分布在访问点的周围,数量足够多。

优选地,若点云内部不存在边界,边缘提取采用边缘增长的策略,具体为:首先查找距离质心最远的一点,则该点必然是边缘点。然后在该点的邻域内查找相邻的边缘点,则连续的边缘点都能够检测到。

优选地,为方便计算角点的位置,将边缘点按顺时针或逆时针的顺序排列,在连续的一段边缘线里,边缘点与质心点的距离出现了极大值或极小值,则可认为该极值点为角点出现的位置。

优选地,如果旋转后的位置与其他角点旋转后的位置特征差别较小,这可能是因角点提取的不准确导致的角度偏差引起的,为提高初始匹配的精度,采用icp算法优化旋转后的边缘匹配结果,能够提高方差的精度。

优选地,目标函数为:

f(r,t)=∑||distance(rpi+t,planepi)||2+∑||distance(rpi+t,meanpointpi)||2

式中,pi为测量点云中任一点,r、t为两组点云之间的旋转矩阵和平移向量,distance(pi,planepi)为计算点pi到平面planepi的距离,该平面方程由点云q中距离点pi最近的点和pi邻域所确定的法向量求得,distance(pi,meanpointpi)为计算pi与点云q中邻域点的质心的距离,meanpointpi为邻域质心点。

优选地,设计上述目标函数,由于单独采用上式第一项作为优化对象,优化过程中,极易陷入局部最小值,导致匹配失败,添加了第二项距离,则可以避免陷入局部最小值,但要求有一个较好的初始值,粗匹配的结果能够满足此要求。

本发明的有益效果如下:

本发明将三维视觉测量点云作为源点云,将自由曲面模型点云作为目标点云,通过三维旋转,使得点云拟合的平面垂直于z轴,然后向xoy面投影,提取二维投影点云的边缘,提取角点,查找对应角点求得最佳旋转角度,完成粗匹配,在精确匹配时,通过优化目标函数得到变换矩阵,完成精确匹配,最后计算所有点的误差,得到误差分布图。

附图说明

图1是本发明公开一种用于三维点云与自由曲面模型匹配的算法的流程图;

图2是两组点云的初始状态;

图3是三维旋转后的点云位置;

图4是判断一个点是不是边缘点的原理图;

图5是二维点云的边缘;

图6是与4个角点匹配的结果图;

图7是测量点云与模型点云的最终匹配结果;

图8是测量点云每个点的误差分布图。

具体实施方式

下面结合附图和实施例对本发明进一步详细说明,但本发明不限于这些实施例。

实施例

1.1如图2所示,上方为三维视觉测量得到的点云,即源点云p,下方为自由曲面模型点云,即目标点云q。点云q由模型文件转换成pcd格式点云文件以及适当降采样,并对点云p做半径滤波,去除离群点。

1.2点云数据的三维旋转

将点云p、q的质心移动到原点,由所有的点拟合平面,计算平面法线。将平面法线旋转至z轴方向,使拟合平面垂直于z轴。利用协方差矩阵计算所有点的法向量,如果多数法线z分量为正,则认为平面法向量指向z轴正方向,如果多数法线z分量为负,认为平面法向量指向z轴负方向,将两组点云的平面法向量方向旋转到相同方向。

如图3所示,旋转后,点云p、q的质心均在原点,且拟合平面法向量方向一致,指向z轴同一方向。

1.3将点云向xoy面投影,即提取点的x、y坐标,构建点云p1、q1。通过一个点的邻域特征判断该点是不是边缘点,在二维点云p1、q1里,在半径r1内查找该点的n个邻域点,该邻域的大小由点云的稀疏程度决定,可生成n个由该点指向邻域点的向量,计算相邻向量之间的夹角αi(i=1,2,…,n-1),若这些夹角的最大值αmax大于阈值k,则认为该点是边缘点,k的值设定为90°。

如图4所示,左图为非边缘点的判断过程,图中有7个邻域点,共生成7个指向邻域点的向量,相邻向量夹角的最大值小于阈值k,则认为该点不是边缘点;右图中,相邻向量夹角最大值αmax>k,则认为该点是边缘点。

在查找边缘点时,点云内部不存在边缘点,首先计算所有点距离质心的距离,找出距离质心最远的点,则该点必然是边缘点。查找其他边缘点通过以下步骤:

1)查找已知边缘点的j个临近点,j初始值为1;

2)判断邻近点是不是边缘点;如果是,邻近点设置为已知边缘点,回到1);如果不是,j=j+1,回到1)。

1.4首先计算二维边缘点到质心的距离,根据相邻边缘点距离的变化,判断边缘点是否为角点。如果在较长且连续的一段边缘里,边缘点到质心的距离出现了极大值,则可认为该极大值点为角点出现的位置。

为方便计算角点的位置,将边缘点按顺时针或逆时针的顺序排列,考察60(即m取值60)个边缘点的移动区间,在某一点左右两侧各59个边缘点的区间内,该点与质心的距离为极大值,则可认为该点为角点。

1.5初始匹配

查找所有角点,移动两组点云至质心重合,在点云q1中,提取4个角点q1,q2,q3,q4,然后在点云p1中提取距离质心最远的一个点p,作为角点。将角点p绕z轴旋转4次适当角度,使得角点p依次与qi(i=1,2,…,4)匹配。每次旋转后计算边缘点云ep,eq的距离,该距离定义为其中一组点云的每一个点到另一组点云中最近点的距离,此处为点云ep到eq中最近点的距离,然后计算所有点的距离的方差:

sk=std(distance(pi,qinearest))

式中,std为计算方差,distance为计算两点的距离,qinearest为距离qi最近的点。在4次旋转中,角点p旋转至q3时,两组边缘点云的距离方差最小,认为角点p与角点q3互为对应角点,得到旋转角度θ。将点云p绕z轴旋转角度θ,点云p、q已完成了粗匹配,还需要进一步提高匹配精度。

4次旋转对应的效果如图6所示,其中第三次旋转为正确的结果,由图可以看出,最近点距离的方差最小,从而得到旋转角度θ;由于点云拟合平面是垂直于z轴的,所以点云p需要绕z轴旋转角度θ,以此完成粗匹配。

1.6通过下述目标函数优化两组点云之间的旋转和平移矩阵,目标函数为:

f(r,t)=∑||distance(rpi+t,planepi)||2+∑||distance(rpi+t,meanpointpi)||2

式中,pi为测量点云中任一点,r、t为两组点云之间的旋转矩阵和平移向量,distance(pi,planepi)为计算点pi到平面planepi的距离,该平面方程由点云q中距离点pi最近的点和pi邻域所确定的法向量求得,distance(pi,meanpointpi)为计算pi与点云q中邻域点的质心的距离,meanpointpi为邻域质心点。

通过迭代使目标函数收敛,认为此时匹配已达到最佳,匹配完成。迭代优化使用l-m算法,迭代至均方根误差收敛,并得到点云p中每一点的误差,最后的匹配结果如图7所示,每一点的误差如图8所示,其中rms为0.0059mm,pv为0.0257mm。

以上为本发明优选的实施方式,达到了速度快、精度高的三维点云与自由曲面模型匹配。

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