基于点云去噪算法的发动机舱段测量模型优化
2022-01-27王琬琪张世轩徐志刚王军义
王琬琪,周 淦,张世轩,徐志刚,王军义
(1.中国科学院沈阳自动化研究所,沈阳 110016;2.中国科学院机器人与智能制造创新研究院,沈阳 110169;3.华北计算机系统工程研究所,北京 100083;4.中国科学院大学,北京 100049)
0 引言
随着数字孪生、三维测量技术的迅速发展,三维重建已成为产品开发、人工智能和虚拟现实等领域的研究热点[1]。伴随而来的问题是如何获得三维重建所需的点云数据。三维激光扫描技术的发展使得三维重建变得更具可能性,操作简单有效的同时精准度较高。然而由于扫描过程中的其他因素,点云往往包含大量噪声点[2-4]。因此,如何有效去除噪声点成为三维研究的重要组成部分。
近年来,国内外点云数据的研究集中在模型的平滑去噪上。魏硕等[5]提出一种针对单光子的去噪算法,该算法用k维树计算的点云密度为基础进行粗去噪,然后采用DBSCAN算法和统计滤波算法进行进一步的精去噪,该算法具有较高的准确性;王晓辉等[6]提出一种通过计算法向量距离进行点云划分的去噪算法,该算法既可以保持点云的尖锐点,也可以很好地光顺平滑区域;吴玉泉等[7]提出一种基于邻域平均法的去噪算法,提高算法效率的同时保留了点云的特征点;郭宁博等[8]将RANSAC用于点云分割,实现了散乱点云的快速去噪;廖昌粟等[9]将张量投票和最小二乘平面投影应用到特征检测中,该算法对点云的轮廓特征保留效果好,解决了过光顺的问题。赵凯等[10]针对基于密度的噪声空间聚类算法进行改进,实现了大场景散乱点云的去噪;DINESH等[11]用一个通用的′p-范数保真度项来表达一个优化问题,显式地去平衡两种类型的加性噪声,将其转化为一种无约束二次规划问题;IRFAN等[12]则利用了几何图形和颜色之间的相关性,从几何和颜色构造合适的k-NN图,并应用基于图的凸优化来获得去噪点云,并表明所提出方式要优于使用主观质量指标降噪的方式;RAKOTOSAONA等[13]开发了一种简单的数据驱动方法来消除异常值并减少无序点云中的噪声。
本文针对传统点云去噪算法在去除噪声的同时,很难保持点云特征的问题,提出一种由粗到精的点云去噪算法。先引入张量投票算法,来计算点云中采样点的张量投票矩阵。再基于采样点的扩散张量来调整各向异性扩散滤波在不同方向的速率,实现点云的大尺度去噪。然后通过基于点云半径和标准差实现双边滤波的自适应调参,实现小尺度噪声去噪。
1 算法原理
1.1 基于张量投票的大尺度去噪
由于三维点云中的每个点都可以表示为一个3×3的对称半正定矩阵,设点云P={p1,p2,…pn},pa(a∈[1,n])为扫描出的采样点,Na={pa1,pa2,pa3,…,pab},b≤n为pa的b个邻近点。有采样点pa和邻近点的集合Na的张量投票矩阵。
(1)
(2)
(1)当λ1≫λ2≈λ3≈0时,点pa为点云中的点;
(2)当λ1≈λ2≫λ3≈0时,点pa为点云边界上的点;
(3)当λ1≈λ2≈λ3≫0时,点pa为角点或孤立点。
基于张量投票的大尺度去噪算法的步骤如下:
步骤1:对于点云,首先利用KD tree算法得到采样点pa的b个邻域点集合Na;
步骤2:依据采样点及邻域点的张量投票矩阵得到矩阵的特征值λ1、λ2、λ3和特征向量e1、e2、e3;
步骤3:根据λ1、λ2、λ3和e1、e2、e3设计扩散张量矩阵D,定义为3×3的对称矩阵:
(3)
(4)
扩散张量和结构张量矩阵的特征向量相等,特征值ε1、ε2、ε3可以参照点云的方向和结构调整。由于εi∈[0,1](i=1,2,3),所以我们能够运用点云的特征值和结构特征向量来定义扩散张量D,即:
(5)
扩散张量的特征值在一定程度上代表着滤波沿各个特征方向的扩散速率,在坡度起伏较为强烈的方向扩散较慢,在坡度起伏较为平稳的方向扩散较快。为了更好地区分采样点在不同方向的变化,我们通过结构张量的特征值来构造扩散张量。
ε1=α
(6)
(7)
(8)
其中,α是用于控制扩散滤波强度的因子。
步骤4:通过扩散张量D设计不同方向的滤波的去噪速度,再通过各向异性扩散方程控制滤波的去噪情况,对点云模型进行滤波去噪,直到滤波次数大于给定阈值。各向异性滤波方程的定义式为:
(9)
其中,Jp为点云的结构张量,其体现点云的局部信息特征;D是依据结构张量和特征向量设计的扩散张量,其特征值代表滤波在3个主特征方向上的扩散速率;I0(x,y,z)为初始的点云数据。
1.2 基于双边滤波的小尺度去噪
在点云模型深度去噪过程中,需要针对大尺度去噪中忽略的小尺度噪声。传统算法中,双边滤波算法对混杂在点云内部的噪声去噪效果较好,因此本文通过调整双边滤波的参数,来对点云进行精确去噪。双边滤波算法主要作用为光顺滤除点云中起伏噪点,同时可平滑柔顺接口边界,不但可以尽可能的减少数据中的噪声点,而且能保留原始3D几何特征并防止过度光顺。
(10)
(11)
(12)
(13)
(14)
(15)
基于双边滤波的小尺度去噪算法的步骤如下:
步骤3:由式(11)、式(12)计算Wc(x)和Ws(y)的值。
步骤4:由式(10)得到双边滤波参数;
步骤5:对点云进行双边滤波去噪,统计得出去噪后的数据点。
为了客观评价滤波效果的优劣,本文引入信噪比SNRs[14]作为评价指标:
(16)
2 分析与讨论
为了实验证明本文算法的准确性和实用性,通过线激光传感器发射高精密线结构光,照射在定位接口上,采集接口的三维数据。实验平台Intel(R)Core(TM)i7-6700CPU@3.40 GHz,8 GB随机存取存储器(RAM),开发环境为Visual Studio 2015,基于PCL1.7实现。为了对比证明去噪效果,对polyworks采集得到的发动机舱段点云叠加不同噪声。首先,采用本文提出的基于张量投票的各向异性扩散滤波算法对点云进行大尺度去噪,如图1所示为加噪后的舱段接口点云。如图2所示为初始去噪后的结果。然后对双边滤波进行自适应参数调整,再对模型小尺度去噪,最终去噪结果如图3所示。
(a)接口区域 (b)接口区域 (c)舱段表面
(a)接口区域 (b)接口区域 (c)接口内部
(a)舱段表面 (b)接口内部 (c)接口内部
从图2的去噪结果可见,本文提出的基于张量投票的大尺度去噪算法可以有效去除点云模型中的大尺度噪声和部分混在点云中间的小尺度噪声,初步完成发动机舱段接口点云的去噪。从图3的去噪结果可见,本文提出的基于双边滤波的小尺度去噪算法对小尺度噪声非常有效,进一步实现点云的精确去噪。本文提出的算法在去除点云噪声的同时,尽可能的保留了舱段接口点云模型的几何特征,避免了过度光滑,为接下来的三维重建等操作奠定了良好的基础。
为了进一步证明本文算法的高效性,选取传统的双边滤波算法和中值滤波算法对舱段接口点云模型进行去噪。图4和表1分别为双边滤波、中值滤波和本文算法的去噪结果及对比。
表1 不同算法对航天发动机舱段点云的去噪结果
(a)双边滤波 (b)中值滤波
图4显示,双边滤波算法对大尺度噪声的剔除效果不好,去噪结果包含远离点云内部的噪声。中值滤波去噪后的点云虽然不包含大尺度噪声,但是对接口附近小尺度噪声的去噪效果不好,容易丢失点云的尖锐特征。本文算法的结果不但可以更好的消去点云包含的噪声,还可以保留点云的尖锐特征。
由表1可知,在航天发动机舱段接口点云模型的去噪中,本文算法相较于其他两种算法而言,去噪快的同时保证了算法的质量,在算法耗时方面仅为双边滤波的81.3%、中值滤波的86.5%。
3 结论
本文针对传统点云去噪算法在去除噪声的同时,很难保持点云特征的问题,提出一种基于噪声特征分类的点云去噪算法。经实验验证,结论如下:
(1)提出了一种由粗到精的层次化点云模型去噪算法,可有效对三维点云数据去噪。所提方法将各向异性扩散滤波和双边滤波结合,各向异性滤波实现点云的大尺度去噪,双边滤波实现小尺度噪声去噪。
(2)利用发动机舱段实测数据,实现了发动机舱段的模型优化。通过对测量得到的发动机舱段数据进行算法设计,实现了复杂内嵌式三维模型的精度优化。为后续对接过程数字孪生提供支持。
(3)文章所提出的基于噪声特征分类的点云去噪算法具有一般性及鲁棒性。该方法对具有多层级的内嵌式舱段模型的成功优化,为下一步的点云精简及曲面重建提供了新的思路,同时也适用于其他复杂点云模型的高精度去噪优化。