在线工博会

基于UG的点云数据滤波处理
李波 王巍
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
摘要:目前UG还没有点云数据滤波处理的功能,为此本文以VC++作为开发平台,调用Maflab中平滑函数,在UG上开发了点云滤波模块,并给出了应用实例,证明了该模块的可行性。
关键词:逆向工程点云数据滤波UG Matlab
引言
逆向工程(Reverse Engineering,简称RE)是现代设计、制造方法之一,是一门实用化程度很高的新产品开发技术。
2O多年来,反求工程在理论上得到了广泛的研究,现阶段也出现了不少的专业的逆向软件,如美国EDS公司的Imageware、美国Raindrop(雨滴)公司的GeomagieStudio、英国DELCAM公司的CopyCAD、韩国INUS公司出品的RapidForm。对非接触式测量设备所获得的测量数据具有较好的数据处理和曲面反求功能,但在功能覆盖域、自动化程度、稳定性、与通用CAD软件的兼容性等方面还不够成熟,也无法做到类似于CAD软件的特征建模和参数化,实现模型的任意修改非常困难。
目前市场上流行的三维造型软件UG具有较强的参数驱动的曲面造型、实体造型和特征造型的功能,然而UG软件对非接触式扫描所得的点云数据的预处理的功能相当弱,尤其是在点云滤波处理方面,虽然UG的Pointscloud模块具有一定的反求功能,但实际上很少采用,主要原因是由激光扫描获得的点云数据未经预处理,比如点云精简、滤波等,所以直接构面的效果不好。为此本文在UG软件平台上开发点云数据预处理中的点云滤波模块。其思路是:以VC++为开发平台,调用Matlab中的曲线拟和工具箱(Curve Fitting ToolBox)里的平滑函数smooth()在UG上开发点云数据滤波模块。
1 点云数据滤波
1.1点云数据滤波概述
样件数字化的过程中或者将多视点云数据对齐后不可避免地会产生噪声点,即一些明显违背设计意图、破坏曲线、曲面光顺的不合理的数据点。图1中点1、2、3即为噪声点。曲面重构前必须进行噪声点过滤,以减小噪声点对曲线、曲面重构的影响。

(图片)

噪声点的滤除有多种方法。最简单的滤除方法就是手工删除,即通过图形界面显示,人LT=判别明显的噪声点,并将它们从数据序列中删除。这种方法在数据量较小时比较适用,但对于大量的点云数据处理则显得力不从心 。
1.2点云数据滤波方法的简介
点云的平滑滤波主要有以下3种方法 ,如图2所示,图中虚线所连的点代表激光扫描测得的点,实线所连的点代表平滑化后的点。

(图片)

1)中值滤波法
该方法将相邻的3个点取平均值来取代原始点,实施滤波。中值滤波法采用点的取值滤波窗口内各数据点的统计中值,故这种方法在消除数据毛刺方面,效果较好,如图2d)所示。
2)均值滤波法
该方法将采样点的值取滤波窗口内各数据点的统计平均值来取代原点,改变点云的位置,使点云平滑,如图2e)所示。
3)高斯滤波法
该方法以高斯滤波器在指定域内将高频的噪声滤除,高斯滤波法在指定域内的权重为高斯分布,其平均效果较小,在滤波的同时,能较好的保持数据形貌,因而常被使用,如图2b)所示。
2 smooth()函数的滤波处理
本文利用Matlab中曲线拟和工具箱(Curve Fitting ToolBox)里的平滑函数smooth()函数来实现1.2所述的几种滤波方法。由激光扫描所获得的 *.asc格式的点云数据可以看作一个n×3的二维矩阵,其中n代表数据点个数,每个点用其三维坐标( X,Y,Z)来描述。在n×3的二维矩阵中的每一列(n×1的一维数组)分别表示该点云数据中每个点的(X, Y, Z)坐标值的集合。因此,smooth()函数对点云数据滤波,实质是对一个n×3的二维矩阵进行处理。
2.1 smooth()函数的滤波流程
smooth函数的表达式:
Y=smooth(ydata,span,'method') (1)
其中ydata表示输入的一维数组;span是滤波的步长,表示在滤波窗口内取的点的个数;method表示1.2中的滤波方法。由前面可以知道,获得的点云数据是一个n×3的二维数组,而在表达式(1)中ydata是一个一维数组,因此在smooth()函数处理滤波的关键问题是如何将二维数组拆分成一维数组,最后再将拆分的一维数组合并为二维数组。具体流程为:

(图片)

2.2 smooth()函数滤波可行性的论证

(图片)

代表p1,p2,... pi, ...pn,n个数据点,由前面的滤波方法介绍可知(以均值滤波为例),其数学定义式为:

(图片)

可见smooth()函数滤波是完全可行的。其他两种滤波方法可以用同样的方法证明其可行性。
3 点云数据滤波在UG中的实现
3.1点云数据滤波模块软件编制
本文以UG软件为二次开发平台,VC++作为开发语言,调用Matlab中的曲线拟和工具箱(Curve Fitting ToolBox)里的平滑函数smooth()来对点云数据进行滤波。其开发过程如下:
1)利用UG的二次开发工具MenuScript对点云滤波模块进行菜单设计,系统菜单如图4所示。

(图片)

2)系统的接口编制
本文利用VC++在UG的平台上开发此模块.需要Vc++把点云数据传输给Matlab处理,把处理后的点云数据传输到UG中,其系统的接口如图5所示。

(图片)

3)系统运行流程

(图片)

运行的结果如图7所示。

(图片)

在该对话框中输人欲处理的点云数据文件,在“文件输出:”文本框内输人处理后的点云数据文件存放的位置,然后选择滤波方式,输人滤波步长,系统默认为5,最后单击“数据处理”,在指定的路径下生成处理后的*.asc码的点云数据文件。单击“完成”,将在UG界面上生成一个filter.prt的新的部件,处理后的点云数据将显示在UG的界面内。再利用UG对处理后的点云数据进行曲线曲面重构。
3.2应用实例
在点云数据滤波模块下的实例如图8所示,图(a)表示滤波前的点云数据,图(b)表示滤波后的点云数据,比较图(a)、图(b)可知滤波后的点云数据变得光顺。

(图片)

4 结语
本文利用VC++调用Matlab中的平滑函数smooth()实现了对点云数据的滤波,并把它集成到UG软件上。因此既克服了逆向软件与UG的兼容性还不够成熟和无法做到类似于CAD软件的特征建模和参数化,实现模型的任意修改非常困难的缺点,又提高了UG的逆向处理功能,为后续的曲面重构提供了支持。
参考文献
1金涛,童水光等编著.逆向工程技术[M].北京:机械工业出版社,2O03
2王庆林.UG/Open GRIP适用编程基础[M].北京:清华大学出版社.2oo2
3胡道钟.微机平台的UG二次开发技巧[J]、计算机辅助设计与制造.2000(1):l3-15
4董长虹.Matlab接口技术与应用[M].北京:国防工业出版社,2004
5应建勇.UG二次开发中MFC调用方法的研究[J].机电产品开发与创新.2005(11):102.103 9/2/2010


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站