APP下载

点云处理软件的开发

2023-11-20范秋生潘纹刘培俊

黄冈职业技术学院学报 2023年5期
关键词:半径边缘组件

范秋生,潘纹,刘培俊

点云处理软件的开发

范秋生1,潘纹1,刘培俊2

(1.黄冈职业技术学院,湖北 黄冈 438002;2.徐州工程机械集团有限公司,江苏 徐州 221000)

为了处理图像中的三维点云数据,在本地计算机上对3D视觉测量仪采集的点云数据进行半径及面积测量与误差分析,设计一个可供下载安装的App以便于后续实验教学工作。因为其点云及图像处理功能非常强大,且用MATLAB App Designer来开发App比较简便,方便调试修改,因此采用的是MATLAB 2019b版本进行App开发。对App进行性能测试,分别进行多次重复实验,观察实验结果,并作出误差分析,证明点云App测量重复性及稳定性精度较好。通过点云处理可以从中分离提取出精度高、效果好的点云数据。

点云及图像处理 ;MATLAB软件;半径及面积测量 ;误差分析

精密测量是先进制造的基础,在高等教育中开展先进的精密测量可以接触前沿技术、开阔学生视野、构建新时代知识体系。为此,本团队利用编程技术和MATLAB点云分析工具箱,构建了远程控制3D视觉检测实验平台,实现学生的远程实验教学工作。在实验室现有的3D视觉测量仪基础上,设计一种远程控制实验平台,使得用户可以在远程控制实验室的3D视觉测量仪对激光雷达芯片基板进行测量操作并生成点云数据;通过点云数据远程传输到本地计算机,进而在本地计算机上利用点云处理App进行点云数据分析等。

1 MATLAB App Designer简介

MATLAB App Designer是Mathworks公司在MATLAB R2016a中正式推出的代替GUIDE的产品。对界面控件进行了彻底的升级,这也是 MATLAB从图形化到面向对象的主要应用。它的目标是顺应网络趋势,能够使用户在新的图形系统的基础上,方便地进行图形用户界面的设计。在此基础上,用户可以利用软件设计工具,通过拖放界面组件的方式,实现了图形用户界面的设计和布局,并利用集成程序编辑器实现相应的算法模块,从而开发出特定功能的App。本文基于MATLAB App Designer开发了一款App用于测量激光雷达芯片基板的面积及半径。

打开MATLAB主界面后可在新建选项中选择“App”或直接在命令行输入“appdesigner”回车,即可进入App Designer界面。此界面主要有四个部分,分别是组件库、设计/代码视图区、组件浏览器以及组件属性。组件库中有各种组件,用户可拖选使用;在设计/代码视图区,用户可以切换设计与代码视图,完成界面设计及代码编写;组件浏览器用来管理或重命名已添加的组件,便于代码编写时调用及区分回调函数;右下侧的组件属性区域,可更改编辑组件大小、颜色等基础属性。

2 App交互界面设计

按照本文需求,需要设计一个点云处理App,所以首先需要两个坐标区,一个用来显示每次进行点云处理前的原始点云,另一个显示经过处理后的点云。

其次需要许多按钮用来操作每个点云处理步骤,思路如下:读取并显示点云;初始点云去噪;ROI提取(选定特征较好的区域);点云降采样;点云聚类分割;平面拟合;点云二次去噪;点云边缘提取;圆半径及面积提取。

最后点云数据处理完成后,需要四个显示最终数据的文本框,即面积、半径、面积相对误差、半径相对误差[1]。

3 App代码编写及效果演示

3.1 显示点云

本文点云处理及面积提取算法选取了最适合测量对象激光雷达芯片基板的点云数据的相关点云去噪、平面拟合、边缘提取算法以及二值图像面积提取算法等[2]。初始点云数据由实验室现有的3D视觉测量仪采集,再通过设计的远程控制程序下载到用户本地计算机,接着通过各种点云算法进行对初始点云数据的一系列处理,选出对此数据处理效果最好的各种算法。

经大量搜集资料,在App中显示点云图像可采用scatter3()函数或plot3()函数,在进行反复实验后,发现plot3()函数更加适用于本文中的点云数据,因为本文点云较为密集。scatter3()函数显示点云时会将每个点都显示为有一定体积的球状,不利于观察点云图像;plot3()函数则是将每个点显示为几乎无体积的圆点,不影响观察。示例如图1和图2所示。

图1 plot3()显示点云

图2 scatter3()显示点云

实验室3D视觉测量仪获取n行3列的数据是.mat格式,读取点云数据本文采用load()函数,读取之后再将三列数据分别赋给x,y,z,再用pcwrite()保存为.ply格式的点云数据,最后进行点云显示,即上述plot3()函数。效果如图3所示。

图3 初始点云图像

3.2 初始点云滤波

按照点云处理步骤,显示点云之后是初始点云滤波,在各种滤波算法经过对比实验后本文选择统计滤波作为初始滤波去除高斯噪声,因为统计滤波去除无关的主体内高斯噪声效率较高,且计算时间相对于双边滤波、半径滤波等较短,有效缩短处理时间。统计滤波在MATLAB中有具体函数如下:

ptCloudOut=(ptCloudIn02,'NumNeighbors', 20,'Threshold',1.0);

在进行统计滤波时需要确定两个参数k和std,即上述函数中的NumNeighbors与Threshold,在初始滤波中本文将其设定为20和1.0,这是经不断实验得出的效果较好的一组参数。原始点云数据点数为436638,滤波后点云个数实验结果如表1所示。

表1 统计滤波参数对应滤波后点云点数

上表1可见对原始点云数据滤波效果最好的一组参数为k=20,std=1.0,滤波效果如图4所示。

图4 初始点云去噪

3.3 ROI提取

在MATLAB点云处理中有一个函数findPointsInROI(region of interest),可以根据坐标的范围,返回一个对应点云中的序列,通过select函数就可以进一步提取出对应的点云。基于此,首先确定要提取的点云坐标范围,在显示点云后,通过旋转、平移等操作观察特征良好区域的大致坐标范围,根据次坐标范围设置ROI提取区域roi = [-20 10 -30 -10 -200 0];前两个数代表x坐标范围,中间两个数代表y坐标范围,最后两个数代表z坐标范围。

找到位于长方体ROI内的点的索引,选择位于长方体ROI内的点并存储为点云对象,同时显示ROI内的点云如图5所示。

图5 点云ROI提取

3.4 点云聚类分割

本文中点云聚类分割采用的是欧式聚类分割,在MATLAB中有对应的函数如下:

[labels,numClusters]= pcsegdist(ptCloud,minDistance)

含义是在返回所有标签(labels)的同时,返回集群(numClusters)的数量,peCloud为被处理点云,minDistance为最小聚类欧式距离。聚类分割如图6所示。

图6 点云聚类分割

3.5 点云平面拟合

在经过验证的两种平面拟合算法中,最终选择随机抽样一致算法(RANSAC),该算法需要认为确定拟合距离minDistance,对此展开实验,设定拟合距离为0.30,0.31,0.32,0.33,0.34,0.35分别对初始点数为13636的点云进行平面拟合,效果如表2所示。

表2 平面拟合实验

基于表2数据,可见拟合距离0.31和0.32效果都较好,因此在App中可设置一个数字框来人为设定拟合距离,以求在后续半径及面积提取时可以取得最优解。界面如图7所示,上面为平面拟合内点点云,下面为平面拟合外点点云即去除的部分。平面拟合按钮下的数字框可输入-5至+5的数进行拟合距离调整以便求取最优半径和面积。

图7 点云平面拟合

3.6 点云二次去噪

由于平面拟合后的点云边缘会存在毛刺以及散乱噪声,对后续边缘数据提取不利,因此本文有必要在边缘提取前对平面拟合点云进行再一次去噪,使点云更加平滑,便于提取更加完整的圆形轮廓[3]。此次去噪处理不同于初始点云去噪,初始点云数据量大且有很多主体外噪声,而此处平面拟合点云无主体外噪声,只有主体内噪声,所以本文在此设立了一个切换按钮组,可在统计滤波、双边滤波以及半径滤波三种滤波方式中任选一种或全部尝试取最优解。具体操作如图8、图9和图10所示,点开按钮组,选中并点击其中一项,接着在上面坐标区显示二次去噪前的点云,下面坐标区会显示二次去噪后的点云图像,并在图像上标注去噪方式,可明显观察到点云更加平滑,噪声大幅度减弱。

图8 点云二次去噪(统计滤波)

图9 点云二次去噪(双边滤波)

图10 点云二次去噪(半径滤波)

3.7 点云边缘提取

首先将上一环节二次去噪的点云进行聚类分割以求边缘更加清晰,然后对二次去噪后的点云进行边缘提取,根据边缘提取原理以及本文采取的边缘提取算法,将Sobel算子与Canny算子进行对比,取边缘提取效果较好的Canny算子,并将处理后的二值图像显示在上面坐标区,用户可根据边缘提取的效果选择是否更换二次去噪方式。若效果较好,则继续进行下一步圆半径及面积提取;若效果较差,则返回上一个按钮组重新选择去噪方式,接着再次进行边缘提取。二次去噪选择统计滤波效果显示如图11,上坐标区左侧为Sobel算子图像,右侧为Canny算子图像,可明显观察到右侧图像圆形区域特征良好,有利于圆半径及面积提取。

图11 点云边缘提取

3.8 圆半径及面积提取

在App中实现如图12,点击圆半径及面积提取按钮即可开始测量,其下方数据框为测量结果以及相对误差显示。

测量结果为:半径1.521(mm),相对误差1.374%;面积7.145(mm2),相对误差1.081%。半径标准值为1.5(mm),面积标准值7.069(mm2)。

图12 App圆半径及面积提取

4 误差分析

4.1 测量准确性分析

本文实验模具标准值为圆面积7.06mm2,圆半径1.5mm。

采用上述点云处理App对同一初始点云10个不同位置进行测量,将测量数据制作表格如表3 所示。

表3 同一点云不同位置测量数据结果

由表3数据可见,对相同点云的不同位置测量结果相对误差不超过±5%,说明本文所设计的点云处理App测量准确性较好。

对六个不同初始点云的同一位置进行测量,将测量数据制作表格如表4所示 。

由表4可见,对不同点云的相同位置测量的数据相对误差不超过±5%,可以体现本文点云处理App的准确性与灵活性。

表4 不同点云相同位置测量数据结果

4.2 测量重复性及稳定性分析

对同一点云同一位置重复测量十次,测量结果如表5所示。

表5 同一点云相同位置测量数据结果

由表5数据可见本文点云App测量重复性及稳定性精度较好,相对误差均在在±3%以内。

5 结束语

本文基于MATLAB App Designer开发了一款App用于测量激光雷达芯片基板的面积及半径,主要介绍了点云处理App的设计过程及成果展示,描述了点云处理各个环节的设计思路及成果展示,重点介绍了各环节参数选取的方法与过程,并对比实验观察不同参数下的处理效果。对本文点云处理App的测量准确性、稳定性、重复性进行了实验分析,证明了此App有能力达到任务的要求。

[1]王晓春.基于点云图像处理的零部件精度测量方法 研究[D].西安电子科技大学,2021.

[2]李雷辉.基于3D视觉传感器的工业零件表面质量检测关键技术研究[D].天津理工大学,2021.

[3]童子良.空间散乱三维点云数据处理与规则曲面点云拟合[D].安徽理工大学,2021.

TP311.564

A

1672-1047(2023)05-0140-05

10.3969/j.issn.1672-1047.2023.05.36

2023-09-06

范秋生,男,湖北浠水人,副教授。研究方向:计算机技术应用。

[责任编辑:罗幼平]

猜你喜欢

半径边缘组件
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
连续展成磨削小半径齿顶圆角的多刀逼近法
一张图看懂边缘计算
一些图的无符号拉普拉斯谱半径
热采水平井加热半径计算新模型
风起新一代光伏组件膜层:SSG纳米自清洁膜层
四种方法确定圆心和半径
在边缘寻找自我