基于点云法线与曲率变化双约束曲面误差显著点识别方法与流程

文档序号:23057884发布日期:2020-11-25 17:38阅读:150来源:国知局
基于点云法线与曲率变化双约束曲面误差显著点识别方法与流程

本发明涉及三维重建领域,尤其涉及基于点云法线与曲率变化双约束曲面误差显著点识别方法。



背景技术:

数码设备及3d扫描仪的普及,使得点云数据的获取更加快捷精准。相对于图像分割及网格分割,点云数据保留了三维模型比较细微的特征且存储方便,因此对三维模型的点云处理已经成为研究的热点。

点云分割是根据空间、几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征。点云的有效分割是能够进行更好的孔洞修复、曲面重建的前提。

曲面误差显著点的识别是典型的点云分割问题,但是传统的点云分割算法在进行误差显著点识别时往往都有计算效率低,识别精度差,特别是在曲面上的误差显著点更不容易识别。



技术实现要素:

有鉴于此,本发明提供了基于点云法线与曲率变化双约束曲面误差显著点识别方法,包括以下:

s101:使用三维扫描仪对加工后的工件进行扫描,得到点云数据;

s102:对所述点云数据进行滤波去噪,得到滤波去噪后的点云数据;

s103:对滤波去噪后的点云数据采用kd-tree方法对点云进行划分,并求取点云数据的法线和曲率;

s104;采用基于深度优先搜索的区域生长算法对所述滤波去噪后的点云数据进行遍历,并添加点云法线与曲率变化的双约束作为区域生长的限制条件;

s105:对区域生长得到的区域进行筛选,去除极小、极大区域,得到筛选后的区域;

s106:对所述筛选后的区域进行合并,得到识别出的误差显著点点云;

s107:对识别得到的所述误差显著点点云进行边界提取,得到误差显著点的位置信息。

进一步地,步骤s101中,所述点云数据,包括x、y、z三维特征和需要识别的误差显著点的区域。

进一步地,步骤s102中,对所述点云数据进行滤波去噪,得到滤波去噪后的点云数据,具体为:设置所述点云数据的体素网格大小,对所述点云数据进行体素滤波,缩减点云规模,得到滤波去噪后的点云数据。

进一步地,步骤s103具体为:在kd-tree中使用k近邻方法建立每一个点与其邻近点的邻域关系,通过设定邻域点的个数k1对所述滤波去噪后的点云数据中的每一个点提取出其邻近的k1个点组成的子点云,并根据这k1个点组成的子点云求取该点的法线和曲率。

进一步地,步骤s104具体为:

s201:对所述滤波去噪后的点云数据进行按照各自的曲率大小进行从小到大的升序排序;

s202:创建一个与所述滤波去噪后的点云数据大小一致的容器,容器中所有值预设为0,表示未被访问;

s203:选择当前未被访问的点中曲率最小的点作为初始种子点m,并将该初始点m压入队列,同时将种子点m对应的容器赋值为1,表示已被访问;

s204:根据种子点m,依据步骤s103得到其k1个邻域点,并将种子点m弹出队列;

s205:对种子点m的k1个邻域点依次进行遍历,添加点云法线阈值约束和点云曲率变化阈值约束;若种子点m的k1个邻域点中某个点与种子点m的法线夹角变化小于法线阈值并且曲率变化也小于曲率阈值,则将该点对应的容器也置为1,并压入队列,得到更新后的队列,否则该点对应的容器保持为0;

s206:步骤s204遍历完毕,对更新后的队列,选取队列首的点m1作为新的种子点,重复步骤s204-s205,并判断队列是否为空,若是,则进入步骤s207,否则继续重复步骤s204-s205;

s207:队列为空,表示此时由曲率最小的点m所生成的区域area1生成完毕;此时返回步骤s203,选择另一个当前未被访问的点中曲率最小的点作为新的种子点,并重复步骤s203-s207,生成该点的区域,并继续重复步骤s203-s207,直至生成所有未被访问的曲率最小的点所对应的生成区域。

进一步地,步骤s105中对区域生长得到的区域进行筛选,去除极小、极大区域,得到筛选后的区域,其中筛选条件包括但不限于:点云个数和点云位置;所述极大区域具体为不存在误差显著点的点云区域;所述极小区域具体为步骤s102中没能滤除噪声点的点云区域。

进一步地,步骤s106中对所述筛选后的区域进行合并,得到识别出的误差显著点点云,具体为:根据筛选后区域的邻接关系进行合并,存在邻接关系的筛选后的区域,合并成一个,作为同一误差显著点的点云,不存在邻接关系的筛选后的区域,不进行合并,作为不同误差显著点的点云。

s107中对识别得到的所述误差显著点点云进行边界提取,得到误差显著点的位置信息,具体为:根据所述误差显著点点云法线以及kd-tree划分结果,设置边界k近邻查找参数k2,得到误差显著点的边界点云;由误差显著点的边界点云计算其重心p以及最小包围矩形的长宽a、b;所述误差显著点的位置信息即为重心p和最小包围矩形的长宽a、b。

本发明提供的有益效果是:提高了点云误差显著点识别的搜索效率、准确率和位置精确度。

附图说明

图1是本发明基于点云法线与曲率变化双约束曲面误差显著点识别方法的流程示意图;

图2是实现圆为理论边界;

图3是本发明实施例误差显著点识别效果图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。

请参考图1,本发明的实施例提供了基于点云法线与曲率变化双约束曲面误差显著点识别方法,包括以下:

s101:使用三维扫描仪对加工后的工件进行扫描,得到点云数据;

本实施例中实验的工件是一个平面上有突起的3d打印件。

s102:对所述点云数据进行滤波去噪,得到滤波去噪后的点云数据;

s103:对滤波去噪后的点云数据采用kd-tree方法对点云进行划分,并求取点云数据的法线和曲率;对获取到的点云首先去除nan点,之后再用体素滤波将点云的规模由140w降低到60w;本实施例中,所述kd-tree方法是基于pcl点云库的相关库函数进行的。

s104;采用基于深度优先搜索的区域生长算法对所述滤波去噪后的点云数据进行遍历,并添加点云法线与曲率变化的双约束作为区域生长的限制条件;

s105:对区域生长得到的区域进行筛选,去除极小、极大区域,得到筛选后的区域;本实施例中,通过点云个数限制来去除啊极小、极大区域。设置点云个数下限为100,上限10w,将此区域之外的点云剔除,剩下的区域则为显著误差点所在区域

s106:对所述筛选后的区域进行合并,得到识别出的误差显著点点云;由于原始点云进行过kd-tree划分,点云中的每一个点的近邻关系仍然保留在vector容器中,利用这些近邻关系对区域与区域之间是否相邻进行快速判断,对相邻的区域合并成同一个区域。经此步骤处理之后,每一个误差显著点将只对应着一个区域。

s107:对识别得到的所述误差显著点点云进行边界提取,得到误差显著点的位置信息。

进一步地,步骤s101中,所述点云数据,包括x、y、z三维特征和需要识别的误差显著点的区域。

进一步地,步骤s102中,对所述点云数据进行滤波去噪,得到滤波去噪后的点云数据,具体为:设置所述点云数据的体素网格大小,对所述点云数据进行体素滤波,缩减点云规模,得到滤波去噪后的点云数据。

步骤s103具体为:在kd-tree中使用k近邻方法建立每一个点与其邻近点的邻域关系,通过设定邻域点的个数k1对所述滤波去噪后的点云数据中的每一个点提取出其邻近的k1个点组成的子点云,并根据这k1个点组成的子点云求取该点的法线和曲率。

本实施例中,设定k近邻差找个数为10,进行k近邻差找。通过建立一个vector容器用来存储每一个点进行k近邻差找后的邻近点。提取出选定点的10个近邻点云之后,利用这些点云进行表面法线估计和曲率计算。

步骤s104具体为:

s201:对所述滤波去噪后的点云数据进行按照各自的曲率大小进行从小到大的升序排序;

s202:创建一个与所述滤波去噪后的点云数据大小一致的容器,容器中所有值预设为0,表示未被访问;

s203:选择当前未被访问的点中曲率最小的点作为初始种子点m,并将该初始点m压入队列,同时将种子点m对应的容器赋值为1,表示已被访问;

s204:根据种子点m,依据步骤s103得到其k1个邻域点,并将种子点m弹出队列;

s205:对种子点m的k1个邻域点依次进行遍历,添加点云法线阈值约束和点云曲率变化阈值约束;若种子点m的k1个邻域点中某个点与种子点m的法线夹角变化小于法线阈值并且曲率变化也小于曲率阈值,则将该点对应的容器也置为1,并压入队列,得到更新后的队列,否则该点对应的容器保持为0;本实施例中,法线夹角阈值设置为π/20,曲率变化阈值设置为0.04。

s206:步骤s204遍历完毕,对更新后的队列,选取队列首的点m1作为新的种子点,重复步骤s204-s205,并判断队列是否为空,若是,则进入步骤s207,否则继续重复步骤s204-s205;

s207:队列为空,表示此时由曲率最小的点m所生成的区域area1生成完毕;此时返回步骤s203,选择另一个当前未被访问的点中曲率最小的点作为新的种子点,并重复步骤s203-s207,生成该点的区域,并继续重复步骤s203-s207,直至生成所有未被访问的曲率最小的点所对应的生成区域。

步骤s104中,添加点云法线与曲率变化的双约束作为区域生长的限制条件,目的在于使得显著误差点的边界确定更为精准。请参考图2,图2所示实现圆为理论边界,当仅采用法线约束时,有直线向圆弧过渡时法线变化并不明显,这会导致仅采用法线约束的边界与实际边界差别较大。但是对于直线向圆弧过渡的情况,在过渡处法线变化不明显但是曲率是存在突变的,因此若采用二者结合的方式则可以更为精准的划分区域从而确定边界。

步骤s105中对区域生长得到的区域进行筛选,去除极小、极大区域,得到筛选后的区域,其中筛选条件包括但不限于:点云个数和点云位置;所述极大区域具体为不存在误差显著点的点云区域;所述极小区域具体为步骤s102中没能滤除噪声点的点云区域。

步骤s106中由于误差显著点(如焊点、凹坑、突起等)并不规则,在上述的区域增长算法下同一误差显著点可能会被划分为多个区域,但这多个区域具有邻接关系,不同误差显著点不具有邻接关系,否则可认为这2个误差显著点可合并成一个更大的误差显著点。所以步骤s106中对所述筛选后的区域进行合并,得到识别出的误差显著点点云,具体为:根据筛选后区域的邻接关系进行合并,存在邻接关系的筛选后的区域,合并成一个,作为同一误差显著点的点云,不存在邻接关系的筛选后的区域,不进行合并,作为不同误差显著点的点云。

s107中对识别得到的所述误差显著点点云进行边界提取,得到误差显著点的位置信息,具体为:根据所述误差显著点点云法线以及kd-tree划分结果,设置边界k近邻查找参数k2,得到误差显著点的边界点云;由误差显著点的边界点云计算其重心p以及最小包围矩形的长宽a、b;所述误差显著点的位置信息即为重心p和最小包围矩形的长宽a、b。

请参考图3,图3是本发明实施例得到的误差显著点点云的效果图;图3中的白色区域即为最终检测出的误差显著点点云。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)针对传统的加工后工件的误差显著点识别,本发明提出了一种点云形式的自动化的误差显著点识别方式。本发明充分利用了点云的法线、曲率变化,可以快速准确的进行识别,相对于传统的量具测量此方法更为简单快捷。

(2)采用深度优先搜索进行点云遍历,有效的提高了搜索效率,实现了对误差显著点的快速识别。

(3)采用了点云法线变化和曲率变化的双约束条件,使得在对点云误差显著点的识别准确率、位置精确度更高。

本发明实施的有益效果是:提高了点云误差显著点识别的搜索效率、准确率和位置精确度。

在不冲突的情况下,本发明中上述实施例及实施例中的特征可以相互结合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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