APP下载

基于结合改进体素滤波算法与高斯滤波算法研究

2022-09-07何昕谕秦丽娟通迅作者

信息记录材料 2022年7期
关键词:体素立方体高斯

何昕谕,秦丽娟(通迅作者)

(沈阳理工大学信息与科学工程学院 辽宁 沈阳 110159)

0 引言

如何使三维重建准确对目标点云进行滤波处理一直是国内外研究的主要方向,传统方法一般是确定搜索点云体素重心将其他点云进行滤除。近年来,基于三维重建技术的点云数据处理有了很大进展,本文提出用原始点云信息中的体素网格中心点代替体素重心点,这样可进一步提高点云信息的表达准确度,再采用高斯滤波增加目标点云平滑特征。

1 点云介绍

通过Kinect深度相机传感器获取目标物体三维点云数据,三维点云数据能够对应二维图像之间的像素点。在三维图像里,能够通过目标物体信息表面得到点云信息,对应二维图像里物体表面的像素点。实际上,点云是指在同一个坐标空间下,来展示出目标表面物体的特征信息和存在空间分布的点集。三维点云的数据不仅仅包含了空间点的坐标,而且也涵盖了一些色彩和强度等物理相关信息,通过RGB相机得到的彩色图片内的像素与数据内的色彩对应到赋予的点而获得的。通过三维激光扫描仪采集到的回波强度被称之为强度信息,利用强度信息可以区分不同表面的材质、粗糙度等。点云主要有以下4种常见分类方式[1]。

如图1(a)所示,无规则点云在空间分布中是杂乱无序的,每个点云之间毫无特殊的联系和结构规律,这种点云一般在采集过程中很容易出现,因此被研究的也比较多,通过深度视觉相机一般得到此类点云数据。

如图1(b)所示,扫描线点云主要会出现在线性扫描仪器设备中,线性扫描仪器会发射一束激光然后扫描一周,此光划过的平面会获取多个扫描点信息,将这些点进行结合得到一条扫描线,最终构成扫描线点云。

如图1(c)所示,为网格化点云,此类点云的数据中,点和点之间有着明显的拓扑结构,将每个点连接起来就得到了网格化点云。

如图1(d)所示,为多边形的点云,但这种点云是无法直接在设备采集中进行提取而得到,通常是在经过大数据分析之后才获得,它的特征主要是点云集合的点在不同的平面上,每个平面且彼此平行。

2 PCL点云库介绍

PCL是指吸取了从近代以来对点云研发技术基础上发展得到的大规模开发平台以及C++编程库支持的各种操作系统,平台如Windows、Android、Mac OS X、Linux。PCL在3D信息获取中,与Opencv在2D信息获取中具有同样重要的地位,并且用于测绘技术、无人驾驶技术、人工智能领域、人机交互邻域、逆向设计以及一些工程自动化技术领域中。点云的处理流程一般是通过对点云信息加以提炼,点云滤波,点云数据处理,点云分割,点云配准,点云特征值的获取,点云跟踪,点云三维重建以及可视化等技术,PCL点云也可以结合机器学习、模式识别、深度学习等AI智能化算法解决实际问题。在点云进行大数据分析领域里,PCL也是开源的重要工具。PCL官方把PCL分类为一个很详细的代码库目的是为了实现模块化使用,因为这样提高了代码的可读性,也提高了代码配置性,从而极大地简化了开发的工作过程。具体代码编译如下。

(1)libpclfilters:可以实现采样并且剔除离散点、进行特征提取和拟合估计滤波器。

(2)libpclsurface:能够进行节点云的三维表面重构技术包括了网格重构和凸包重构。

(3)libpclI/O:能够实现点云数据进行输入和输出操做。

(4)libpclsurface:可以实现点云的三维表面重建技术比如网格重建和凸包重建。

(5)libpclregisteration:能够实现三维点云配准功能。

(6)libpclkeypoints:能够实现不同的三维点云,关键点特征提取。

(7)libpclrangeimage:将三维点云数据集变成深度图像。

3 PCL点云滤波目的

由于通过Kinect相机收集到大量的点云数据,同时又因为深度相机设备精良,使用深度相机操作者经验有限以及电磁波的强放射性对于被测量目标物的表面数据性质产生变化,以及在对点云数据处理进行操作配准过程中产生影响会对点云数据处理产生噪声点云。因此对点云进行滤波预先处理,对噪声点和离散点、数据压缩、空洞等进行后续处理,才能有效地进行点云配准和点云特征值提取,最后进行点云的三维重建以及可视化。其结构原理与信号处理中滤波方法类似。

4 体素滤波算法描述

体素滤波法可以不损害点云本身的结构性功能,而且可以实现下采样,但可能会移动点云的位置,使用此方法能够消除离散点和噪声的点云。它的工作原理是先通过对点云信号进行运算得出一个完全覆盖住了该点云的小正方体,再按照我们所得的分辨率将点云划分为若干个的小立方体,而后求得小立方体的质心,再使用质心位置近似求得在此正方形内的一个点。而ApproximateVoxelGrid的方法和这种方式有所不同的地方是将每个小立方体重心点近似为该正方体的若干点[2]。

体素滤波法过程[2-3]如下。

(1)通过点云坐标值可以得到X、Y、Z在3个方向坐标系上的最大值Xmax、Ymax、Zmax,最小值Xmin、Ymin、Zmin。然后利用最大值减去最小值算出包围盒边长lx、ly、lz,见公式(1)。

(2)设置体素小立方体边长cell3个方向X、Y、Z坐标轴切割成M、N、L份,因此一共得到SUM=M*N*L体素小立方体,其中表示向下方向取整。

(3)将每个体素小立方体进行标号为(x,y,z),得到每个对应数据点的体素小立方体。

(4)计算每个点云的重心,只保留每个体素立方体的重心点云,将其他点云去除。cijk为体素立方体重心,点云信息,k 为点云点数。

5 高斯滤波算法

在对传统点云滤波过程中,高斯滤波是比较常用的滤波方法之一。高斯滤波即噪声的概率密度服从高斯正态分布。高斯无论是在opencv、图像处理和各种领域都有着相当广泛应用[4]。高斯滤波点云的优势如下。

(1)在进行点云滤波过程中,噪声点云边缘并不明确。为了使PCL点云有着更好的滤波效果,在每个边缘特征处理中做到均匀化,但高斯滤波具有均衡的滤波特性,而且高斯正态分布函数性质也能满足这个要求。所以,这是高斯滤波过程优势之一。

(2)因为高斯滤波是单值函数,所以经过高斯滤波处理后的信噪比通常都采用加权平均方式加以表示,各个点的大小根据点与中心点相互之间的远近而单调改变,确保了在低滤波区域中的有效性能。对邻域曲线上的点具有不同的过滤作用,提高了对点云过滤的准确性。

(3)利用高斯滤波达到的滤波效果是由标准差σ进行决定,曲线的平滑程度和σ有着密切的联系,σ的值越大表示高斯滤波效果越好。

高斯滤波相当于一个具有平滑特性的低通滤波器(LPF),经过此类方法处理后的点云比较平滑。标准差和均值见公式(6)、公式(7)。

6 改进体素滤波结合高斯滤波算法

体素滤波方法一般为了保持目标点云的原有特征,在这样前提下减少目标点云的三维数据量,但是由于本文内容猪的点云数量比较多。因此,为了提升对点云的后续处理速率,而且该重心点不一定是原始点云中的点,有失原始点云的细小特征。我们采样将体素网格的重心替换成小立方体的重心邻近点来实现下采样滤波方法,使用改进体素滤波法,实现了下采样滤波法,而且保持了原始点云之间的数据特征[5]。

改进体素滤波法结合高斯滤波算法主要步骤如下。

(1)先用高斯滤波法对目标点云进行滤波处理。

(2)首先对猪点云集合P实现kd-tree,统计目标点云的总体数量,得到目标点云的实现最小包围盒,并且算出包围盒的体积V,把包围盒的3个方向x、y、z上的长度分别用Lx、Ly、Lz来进行表示。

(4)算出每个体素小立方体的重心p0(x0,y0,z0),构建新的猪点云集合{Pc,c=1,2......,n}。其中

(5)使用Kdtree用循环语句遍历点云P,寻找与Pc重心点最邻近的点,最后构成新的集合Pe。

7 改进体素滤波算法和高斯滤波设计

依据上述步骤设计改进体素滤波算法模型。基于改进体素算法设计思路如下,通过Kinect深度视觉相机获取点云就可以根据下面流程图2进行操作。

(1)首先输入待处理点云信息图像,将其点云图像进行高斯滤波,滤除服从高斯正态分布噪声点云,将点云图像中不属于真实图像的点进行平滑。

(2)采用改进体素滤波法进行点云滤波,搜索进邻近下采样点把点云重心点换成体素中心邻近点,目的是减少点云数据数量并且保留点云特征,为后续点云配准提升速率[5]。

8 仿真验证

改进体素滤波法滤波结合高斯滤波方法与体素滤波法效果相比,滤波效果更加精确,并且轮廓比较明显,仿真图可见图3、图4。

9 结语

高斯滤波和改进体素滤波法结合,目标点云通过高斯滤波,适合正态分布函数点云数据。由于离群点的特征,可以把某处的点云数据小于此密度,则点云即为无效点云。算出每个点和最近的K个点之间平均距离。点云中点呈现高斯分布,设定好均值方程来移除3∑之外的点,通过高斯滤波可以让点云数据更加平滑。然后采样改进体素滤波法,保留体素滤波法的特点,将目标点云数目减少,方便后续处理。同时,将点云的邻近点代替点云的重心点,使目标点云信息轮廓更加完整。通过改进体素滤波法和高斯滤波法结合,目标点云信息预处理的效果对比传统滤波方法滤波效果更好。通过二种滤波方法的结合,方便了后续点云信息的处理。

猜你喜欢

体素立方体高斯
胸部CT AI获批NMPA三类证,体素科技加速商业化进程
瘦体素决定肥瘦
Dividing cubes算法在数控仿真中的应用
骨骼驱动的软体角色动画
数学王子高斯
天才数学家——高斯
内克尔立方体里的瓢虫
图形前线
立方体星交会对接和空间飞行演示
折纸