BP和RBF神经网络对复杂型面零件点云漏洞的修补应用*
2018-04-03王春香王岩辉
王春香,张 勇,梁 亮,王岩辉
(内蒙古科技大学 机械学院,内蒙古 包头 014010)
0 引言
在测量过程中,被测实物具有复杂型面和较深的销孔及内腔,破损以及测量设备的限制,导致所测得的数据不完整,以及孔洞和缺口,为了得到完整的点云数据模型来对实物进行重建与创新设计,需对测量点云数据进行修补,否则会影响曲面重构后精度以及创新型研究。一般较为简单的孔洞,可以通过逆向软件自身来对其进行修补,对于曲率变化较大,孔洞面积较大无法通过软件来达到合理的修补状态,就需要通过算法来实现孔洞修补。因此,对点云漏洞修补是逆向设计的关键技术之一。
目前国内外学者对点云孔洞修补研究取得了不少成果。已有的孔洞修补方法主要分为两大类[1]:一类是基于网格模型的孔洞修补,对散乱点云数据进行网格化,建立网格拓扑关系识别出孔洞边界,但随着点云数据的庞大,存储空间增加,处理效率降低,另一类方法对离散点云进行修补,通过获取点云数据空间各数据点的空间关系,提取孔洞边界,通过曲面拟合和建立最小二乘平面等实现对孔洞的修补。文献[2]提出利用点云孔洞边界特征信息,通过径向基函数建立隐式曲面,将孔洞修补点向隐式曲面调整,取得了很好的修补效果,文献[3]提出了基于网格模型,用最小二乘优化填充,完成修补效果,文献[4]提出了应用BP神经网络对鼠标人为漏洞修补实现,文献[5]应用RBF神经网络对斗齿零件复杂型面三维点云数据人为漏洞修补的实现。
本文对具有复杂型面点云零件,逆向软件修补功能无法获得较好的修补效果情况下,在综合比较和借鉴已有修补研究成果的基础上,通过在复杂型面点云人为漏洞进行修补,研究和应用了BP和RBF神经网络算法对复杂型面点云零件漏洞的实现方法,并对两种方法修补效果进行了比较,运用成熟的神经网络算法对点云复杂型面的孔洞修补应用,满足零件的精度要求和逆向设计要求,并将神经网络推广到工程应用当中,对自然漏洞修补有很好的修补效果,体现了BP和RBF神经网络对复杂型面点云漏洞修补的应用价值。
1 人为漏洞修补的主要步骤
(1)在Imageware逆向软件中,将点云上不存在漏洞的部位人为的挖一个洞,并将洞上的点以Matlab能识别的文件格式进行保存,即保存成.asc格式,然后在人为漏洞周围根据曲率变化情况,选取适当数量的种子点(即曲率变化越大,选取种子点的数量越大、范围越大),并将其以.asc格式保存。
(2)将保存成.asc格式的漏洞周围点在Matlab中打开,并利用软件中点云三角网格化识别孔洞边界,即边界边[6]。并提取孔洞边界线,再此基础上通过新增三角网格的形式完成孔洞初步填充,采样三角网格中心,圈选出修补后孔洞的点,并将该处点X、Y坐标与Z坐标分离(该处也有可能是Y、Z坐标与X坐标,需要注意的是,漏洞处点云坐标的分离要与种子点的坐标分离相一致),然后分别复制粘贴到文本文档中,并将漏洞点X、Y坐标和种子点的X、Y坐标与Z坐标保存到Matlab工作目录下(充分发挥逆向商用软件的优势,实现点云孔洞的边界初步提取,以及初步填充,省去了通过建立特征平面[2,5]和编程这一环节,提高了效率)。
(3)将编好的神经网络程序(BP和RBF)分别在Matlab中运行,经过反复的训练,计算得到权值和阈值,最终得到训练后漏洞处各点的Z坐标。
(4)将计算出的新Z坐标与漏洞处的X、Y坐标整合,得出漏洞处的整体坐标,并将其保存。
(5)将上步得到的漏洞处新的点坐标和之前挖去的漏洞处原始点云,在Imageware中同时打开,将两者进行点云之间的误差对比分析。
2 BP算法漏洞修补
(1)将点云数据整理好,并导入到Matlab工作目录中,方便程序调用。
(2)输入层与输出层设计。分别以漏洞周围点和漏洞点的两坐标值为输入样本,以漏洞周围点的另一坐标值为目标样本,计算输出漏洞点的另一坐标值。
(3)选取使用三层BP神经网络(输入层、隐含层和输出层),其中隐含层数目为2,节点数为6。
(4)初始权值选择。为使达到全局最小点以及网络是否能快速收敛与初始权值的选取有重大关系,这样保证了初始的神经元处于不饱和状态,并且保证了初始状态下每个神经元活动函数变化最快。采用系统默认的初始值。
(5)调整权值。考虑到样本输入顺序对训练结果有影响,所以采用随机样本方式计算输出,而不采用顺序输入,计算实际输出与期望输出偏差,若二者不相符,则反向传播,调整修正输入层和隐含层连接权值以及隐含层和输出层之间的连接权值。
(6)最后对种子点数据进行反复训练后,得到误差相对应的权值和阈值,再对漏洞处的已知坐标进行训练,得到输出值,并将最终结果保存。
3 RBF算法漏洞修补
径向基函数神经网络(RBF),该网络是前馈式网络,能够最佳逼近某一对象,并且具有全局最优性,加之网络结构简单,训练速度较快,被广泛应用到各个领域[7-10]。
所用RBF神经网络采用k-均值聚类分析法,隐含层输出函数采用高斯函数:
式中,φi(x)是第i个隐含层节点输出;ci和δi分别是第i个隐节点的中心和宽度。
基于文献[5]方法在Matlab软件中实现该算法。RBF网络算法修补操作步骤与BP算法修补基本相同,不同之处在于训练种子点时,先通过训练种子点的坐标值,得到径向基密度函数值,再将该值带入训练程序中,训练出新的z坐标值。
4 人为漏洞修补
应用以上方法对斗齿点云(散乱点云)人为漏洞的修补,以图1为例,图中以斗齿点云内腔作为研究对象,红色代表点云孔洞周围的点,蓝色表示孔洞点。
图1 斗齿
4.1 软件修补
将孔洞周围的点进行三角网格化(图2),识别出点云内外边界(黑色表示),利用填充孔命令,以孔洞周围点为基础,通过不断向内插值完成孔的填充,,然后在每个三角形面片中间插值点,形成新的网络,进一步细化初始三角形,将三角网格离散成点(图3),圈选出修补后的点,与原孔洞处点进行比较,在软件上修补误差较大,无法满足精度要求的情况下,利用算法进行修补。
图2 三角网格化 图3 离散采样点
4.2 算法修补
采用RBF和BP对人为漏洞进行修补,其修补后与原始点云对比误差分析对比图像如图4所示。
斗齿内腔及销孔部位点云逆向设计极限偏差±0.5mm,通过误差分析图看出BP和RBF修补效果都达到要求,但BP较RBF修补效果更好,最大偏差0.117mm,小于内腔设计要求,且应用BP神经网络算法对内腔点云修补效果更佳。
(a)RBF法 (b)BP法 图4 RBF和BP修补点云偏差分析
4.3 自然漏洞修补
以复杂型点云面机架为例见图5,基于Geomagic Studio12逆向软件,对其进行填充(基于平面和曲率)见图6,存在较大缺陷存在凸起和凹陷见图7,达不到设计要求。与软件修补图8效果相比较,BP修补效果更佳,更易达到修补要求。
图5 机架
图6 软件修补
图7 平面填充放大图
图8 BP修补
5 结论
本文通过对点云斗齿内腔的人为漏洞,基于BP和RBF神经网络,实现了孔洞修补,并通过以机架为实例,验证了BP神经网络在点云数据修补的实用性。
(1)较通过建立特征平面(易导致周围曲率丧失不能光滑过度等缺点),对点云孔洞进行填充,三角网格化对孔洞进行填充拾取采样中心点,能够利用周围点的曲率和方向对孔洞进行很好的预测和填充,实现与周围点的光滑过度(本文充分利用商用逆向软件内置点云三角网格模块,实现孔洞边界提取和初步填充,通过提取采样中心点,方便之后算法的模拟仿真,极大提高了效率)。
(2)通过比较BP与RBF对复杂型点云零件修补情况,BP神经网络修补效果更佳,RBF神经网络采用k均值聚类算法来确定径向基函数的中心ci和宽度δi,对初始聚类中心比较敏感,容易陷入局部最优解,不是全局最优解,固具有一定的缺陷。证明了BP和RBF在对复杂型零件点云修补的应用。为后续复杂型点云零件修补方面提供参考依据,对修补精度要求高的内腔及圆柱面采用BP神经网络修补效果更好。
[参考文献]
[1] 胡志胜. 三维激光扫描点云边界检测和孔洞修补技术研究[D].徐州:中国矿业大学,2016.
[2] 晏海平, 吴禄慎, 陈华伟. 基于径向基函数的散乱点云孔洞修复算法[J]. 计算机工程与设计, 2014, 35(4):1253-1257.
[3] 陈杰, 高诚辉, 何炳蔚. 三角网格曲面孔洞修补算法[C].中国业务过程管理大会,2011.
[4] 刘俊, 何建英. 基于神经网络的点云残缺数据修补方法[J]. 机械工程师, 2007(2):32-34.
[5] 王春香, 陈浩宏, 孔艳彬,等. RBF神经网络在斗齿散乱点云漏洞修补中的应用[J]. 机械科学与技术, 2014, 33(10):1479-1483.
[6] TM Ngo,WS Lee. Feature-First Hole Filling Strategy for 3D Meshes[M]. Springer Berlin Heidelberg, 2011, 274(7):53-68.
[7] M Rouhani, DS Javan. Two fast and accurate heuristic RBF learning rules for data classification[J]. Neural Networks , 2016,75:150-161.
[8] 徐美, 朱翔, 刘春腊. 基于RBF的湖南省土地生态安全动态预警[J]. 地理学报, 2012, 67(10):1411-1422.
[9] 秦斌, 周浩, 杜康,等. 基于RBF网络的风电机组变桨距滑模控制[J]. 电工技术学报, 2013, 28(5):37-41.
[10] 陈飞香,程家昌,胡月明,等.基于RBF神经网络的土壤铬含量空间预测[J].地理科学,2013,33(1):69-74.
(编辑李秀敏)