点云去噪的原因有没有什么好方法,现在很多软件都是手动删点,效率太低而且效果不好

点云通常用于测量物理世界表面 它们应用于机器人导航和感知,深度估计立体视觉,视觉注册以及高级驾驶辅助系统(ADAS) 计算机视觉系统Toolbox?算法提供点云处理功能,用于下采样去噪和转换点云。 该工具箱还提供点云配准适合三维点云的几何形状,以及读取写入,存储显示和比较点云的能力。 您还可以组合多个点云使用迭代最近点(ICP)算法重建三维场景。

在matlab的文档里说的是Point Cloud Registration Registration一词有注册的意思,也有图像配准和光栅重合的意思这里显然应该翻译为,配准
关于matlab点云的配准

您可以使用pcregistericp和pcregisterndt将移动点云注册到固定点云。 这些配准算法分别基于迭代最近点(ICP)算法和正态分布变换(NDT)算法 最佳性能需要调整数据属性。 在使用点云注册功能之前请考虑使用pcdownsample对您的点云进行下采样,从而提高注册嘚准确性和效率

三个参数对应的分别是 点云 ,下采样方法一个方法的属性值。关于下采样方法以后再谈,这个文章不关注这一细节方面下采样例子设置三维分辨率为(0.1 x 0.1 x 0.1).

这个是matlab自带例子可以直接运行。

使用ICP算法配准两个点云

关于算法的细节我们只能另开一篇文章,否則这个文章会变得又臭又长。ICP估计两个点云的之间的刚性变换
直接看一个例子就可以明白,该过程可以得到什么

这里可以看到,配准后得到的是一个tform和 刚性变换的tform1 是同一个类型的数据,表示一个刚性变换affine3d对象。
tfform是配准的成果结果对比之下可以看到,估计的蛮准的
這里列出其他用法,以后用空再谈

NDT算法配准两个点云

得到的tform仍然表示一个刚性变换荣ICP的tform是一样的。这里的pcshoowpair用于显示两组点云的不同之处

点云对象的存储以前说过了。

结果表明三维点云的去噪可以茬无监督的情况下直接从含噪的三维点云数据中学习。这是通过将最近从无监督图像去噪器的学习扩展到非结构化三维点云来实现的无監督图像去噪器在噪声像素观测是围绕干净像素值的分布的随机实现的假设下工作,这使得对该分布的适当学习最终收敛到正确的值遗憾的是,这种假设对非结构点无效:三维点云受到总噪声的影响即所有坐标的偏差,没有可靠的像素网格因此,一个观测可以实现一個完整的多个干净的三维点这使得将无监督图像去噪器天真地扩展到三维点云不切实际。克服这一点我们引入了一个空间先验项,它引导收敛到流形上许多可能模式中唯一的最近模式我们的结果表明,当给出足够多的训练实例时无监督去噪的性能与有监督学习在干淨数据下的性能相似,其中我们不需要任何噪声和干净的训练数据对

虽然干净的三维几何图形数量受到人工三维CAD建模的限制,但三维点雲的数量每天都在快速增长:我们城市的街道、日常建筑的内部甚至我们消费的商品都会定期进行三维扫描。遗憾的是这些数据被扫描器噪声破坏,因此无法被需要对噪声和干净数据的监督学习访问因此,期望能够仅使用噪声数据本身来去除所获得的噪声3D点云

最近兩个必要的发展表明这可能是可能的:对3D点云的深入学习[19]和图像的无监督去噪[17,152]。不幸的是这两种方法不能天真地结合在一起。为了學习我们的无监督三维点云去噪的原因器(图1)我们需要克服两个主要限制:对同一物体进行两次噪声扫描的实际障碍和三维点云中噪聲是全部的理论困难。我们将噪声称为“总噪声”(图2)当域是干净的(如像素位置一样)时,失真不受范围(像素值)的限制但对於域和范围都受噪声影响的更具挑战性的设置。它的名字类似于total

本文的评估结果表明对于不同类型的模拟噪声以及真实点云,我们的无監督方法仍然优于足够多的有监督方法在某些情况下,甚至在给定相同数量的训练数据时它在大点云上的单次传递中运行效率很低。

圖像去噪是图像处理中最基本的操作之一最原始的变体是基于线性滤波器,如高斯滤波器最终有额外的锐化[13]。虽然实际中经常使用非線性滤波器如中值滤波器、双边滤波器[24]或非局部滤波器[3],但通过优化稀疏性[6]可获得最新的结果最近,学习去噪变得很流行当一对干淨的和有噪声的图像可用时[4]。Lehtinen等人[17] 提出了一种只对两幅噪声图像进行去噪学习的方法而不需要对噪声图像进行去噪学习。更进一步说Noise2Void[15]囷Noise2Self[2]是两个扩展,这两个扩展消除了一个图像的两个副本被噪声破坏的要求而是在一个图像上工作。在这两种情况下这都是通过从图像夲身进行回归来实现的。这是通过创建一个带有“盲点”的接受域来完成的并且网络从其上下文中还原盲点。我们将在第3节详述这些论攵背后的理论

三维点云捕捉了精细的空间细节,但由于其不规则的结构其处理难度远大于图像[18]。至于图像线性滤波器可以应用于去除噪声[16],但要牺牲细节作为补救措施,图像算子如双边[8,5]、非局部平均值[21]或稀疏编码[1]被转移到点云随着PointNet的出现[19],基于深度学习的点雲处理变得容易处理提出了四种值得注意的三维点云深度去噪方法。第一种是PointProNet它通过将点投影到一个已知的局部框架中,并在有监督嘚设置中使用卷积神经网络(美国有线电视新闻网)将点移回曲面从而去除点块的噪声[22]。然而该方法的精度是由局部帧估计的精度决萣的,这会导致在极端锐利的边缘出现伪影Rakotosaona等人的第二种方法。[20] 使用PCPNet[11](PointNet[19]的变体)将有噪声的点云映射到干净的点云第三,Yu等人[30]学会保存支配人造物体的边缘最后,Yifan等人[29]通过放大从噪声点确定干净的表面。所有这些深度去噪方法都是有监督的因为它们需要一对干净苴有噪声的点云,而这些点云实际上是通过在合成点云中添加噪声而产生的我们的方法不需要这样的配对。

噪声是用于去噪自动编码器嘚增强策略[25]但这些都是不是为了去噪,而是加入噪声来提高鲁棒性也就是说它们的目标不是噪声,而是噪声在输入或加入到内部的状態

基于规则域(即图像)中的去噪,无论是否有监督我们将建立一个形式主义,该形式主义随后也可用于推导我们的非结构化三维情況

正则域像素噪声。如图3a)所示。黑色曲线是真实信号像素(虚线)在采样位置p(z|xi)(黄色曲线)周围的真值(粉红色圆)上采样。

上述三种方法都是在以下假设下工作的:在结构化像素网格中范围(图2中的垂直轴,左和图3中的垂直轴a)轴i和域z(水平轴)具有不同的語义。噪声仅在范围内:不确定像素的位置不确定像素的真实值。

对于像素我们将干净点表示为x,噪声点表示为y噪声模型表示为p。峩们推导的所有点可以是具有XYZ坐标的位置点也可以是具有外观的位置点,表示为XYZRGB点据我们所知,彩色点云的深度去噪还没有提出我們不仅将展示我们的技术如何应用于此类数据,而且还将展示在训练点云去噪的原因器的无监督学习时颜色如何能够实质性地帮助克服挑战。令人惊讶的是这种好处可以在训练中利用,即使在测试时没有颜色如果可以的话,会有帮助的我们也可以联合去噪的位置和外观。

为了在有人监督的环境下解决这个问题Rakotosaona等人

不同于观察图像中的I索引(虚线图3,a)它告诉我们Y是隐藏值席的推断,当在未成对設置中观察点时未知的隐藏表面点是未知的。因此分布p(z | S)具有多种模式(图3,b中的粉红色线)学习从噪声实现到自身的映射将尝試收敛到这种多模态分布,因为对于同一个邻域网络将尝试同时从这种分布中回归不同的点。

关于第一个问题模式的流形接近表面,泹不完全相同图4,a)将清洁表面显示为黑线具有少量噪声,其中大多数样品接近清洁表面在这种情况下,学习收敛到一个解这个解与它应该收敛到的解相同,就像在粉色线上训练时一样粉色线与干净的曲面非常相似。然而随着噪声的增加,在图4中可以看到b)該流形与表面不同。

图3c)中显示了这种先验效应。在许多模式中唯一最接近的模式仍然存在。注意我们对高斯先验q的选择与噪声模型p的高斯性无关,我们不假设这一点这里唯一的假设是,在许多解释中最接近的一个是正确的。我们对其他核函数进行了实验如Wendland[27]和逆多二次核函数,但没有观察到任何改进

如上所述,带有RGB颜色标注的3D点云是进一步克服无监督训练局限性的一个令人惊讶的机会否则,在某些情况下空间先验无法解析圆边。这并不是因为网络f无法解决这些问题而是因为无监督的培训无法“看到”尖锐的细节。图5详細说明了颜色是如何解决这个问题的:没有RGB角在图5,a)中是圆形的当添加颜色时,这里是红色和蓝色(图5b)

为了使等式3最小化,我們需要根据使用拒绝实现的先前q来提取样本 建筑

我们使用基于蒙特卡罗卷积的非结构化编码器-解码器来实现f(图6)。这种架构使用点云将空间邻域转换为定义在较粗点集(编码器)上的潜在代码,并将这些代码向上采样到原始点分辨率(解码器)有效接收场,即考虑鉮经网络回归点的邻域是模型直径的30%。特别是我们执行两个级别的编码,第一个接收字段为5%第二个为10%。1级和2级池的泊松盘半径是接收区的一半

除了这些好处之外,我们的方法也很容易实现如Alg1所示。

这里Q表示点云中所有点的一组先验样本Q。所有操作都定义在具有點云大小的批上我们使用ADAM优化器[14],初始学习率为0.005在训练期间会降低。


现在我们将研究有监督的方法如何与干净点云的数量成比例,鉯及我们的方法与有噪声点云的数量成比例结果见表2不同的方法是列,不同数量的训练数据是行右边的图以图形的形式显示关系。我們用点表示各个测量值的对数所有图的颜色编码都是相同的。测量了两种方法的差异总训练点数在0.5到2.2亿之间。

表4显示了不同方法对这類噪声的误差我们看到,在这种情况下我们的完整方法(橙色)比任何其他无监督方法(如平均值或双边(紫色和蓝色))表现更好。在相同的训练数据输入量(1200万点)下有监督的方法可以比其他方法更好地处理这种噪声。最后我们还发现没有建议的先验值(青色囷绿色)的烧蚀有更高的误差,这表明先验值也与这类噪声同样相关

我们在图7中看到,我们的方法如何消除噪声并产生一个干净的点雲而不收缩,均匀采样以及细节我们不能把错误形象化,因为根本的真相是未知的相反,我们通过将点云表示为带有阴影的球体网格來提供点云渲染

当不使用先验空间(绿色)时,去噪器学习不同类型的噪声(表1)

在任务型语言的上述三个变化轴上一致地使用外观鈳以改善结果。表1(表4)

图8示出了要去噪的两种不同颜色的锐边包括颜色,稍微减少误差(黄色误差越小蓝色误差越大)。

我们提出叻一种无监督学习方法来去除三维点云的噪声而不需要获取干净的例子,甚至不需要噪声对这使得该方法可以用自然数据进行缩放,洏不是用合成噪声装饰干净的CAD模型我们的成就是由一个网络实现的,该网络将点云映射到自身并结合空间局部性和之前的双边外观。茬前面使用外观是可选的但是可以提高结果,甚至不需要输入网络无论是在测试时还是在训练时。以颜色为输入的去噪以及颜色和位置的联合去噪,仍然是未来的工作结果表明,即使在训练样本数相同的情况下我们也可以优于有监督的方法。

基于密度的点云聚类算法可以识別三维点云物体也可以对三维点云去噪的原因处理。

本文研究了两种基于密度的点云聚类方法先简单介绍一下两种算法,后面会详细嘚介绍算法原理以及效果

第一种方法叫做密度减法聚类功能:能识别特定尺寸的点云簇集合,通过参数设置期望形状的大小

:是几个聚类完成的点簇和聚类中心点


类别不需要提前设定,最终聚成几类由初始参数决定


用其来提取行人的ROI。

第二种方法叫做自适应密度聚类功能:可以寻找出每个点云的三维连通域不需要设置形状和大小参数。

:每个点云所在的连通域以及此点云集合一共有多少连通域


类別不需要提前设定,最终聚成几类由连通规则中参数决定

论文 一种聚类与滤波融合的点云去噪的原因平滑方法  和  密度聚类算法在连续分咘点云去噪的原因中的应用 用这种聚类方法来对点云去噪的原因。

下面来分别详细介绍一下两种方法

一:第一种方法  密度减法聚类

先看┅下流程,这里说明一下为了提高速度,我们在聚类的时候没有直接对稠密的处理而是先采样生产稀疏点云,旨在提速


1 此方法对密喥定义

公式9中rax,ray和raz就是那个你想要设置的聚类形状参数可以看出

<1> 对于一个特定的三维点,离其越近的点对它的密度加成越大

<2>从求和苻号可以看出,它是遍历所有三维点

2 再看公式(10),这个公式是这个算法的核心


Di表示检测出的一定聚类中心和一定不是聚类中心的其他三维點的密度xi,yizi为其坐标,rbx,rby,rbz为用于跟更新Di密度的半径参数Dcl为上一次聚类中心的密度。xclycl,zcl为其坐标

为什么要搞这么一个公式呢?

因为聚类的目的是想得到几个密度比较大的点簇是为了避免多个聚类中心集中在一起。举个例子你面前有几个人而且你有他们的点云,你想通过聚类把这几个人分出来他们体型相差很大比如,这些人中有人身宽体胖的人有人身材比较瘦小,你的本意是想把这几个人都识別出来回到算法中,看流程图如果我们每此检测下一次聚类中心的时候去掉了更新所有点云这一步骤,那么那个胖的人身上一定会被聚类成好多个聚类中心

说白了,公式10起到这样一个作用:凡是离上次刚得到的聚类中心近的点它们的密度都会被削减,削减影响的范圍由rbx,rby,rbz控制rb参数的选取一般要大于ra参数,论文中取rbm=1.5ram  m=x,y,z;

3 最终聚类点簇的大小差异控制

这部分参数也是本方法的一个重要的参数因为它们控制著最终聚类结果中每个点簇的大小,以及最大点簇和最小点簇的密度差异有多大

具体参数有:Thmax,Thmin,racnt和公式9中的半径参数。

其中公式中嘚半径参数控制着聚类物体的大概三维尺寸(椭球)

Thmax:当一个候选聚类中心的密度大于第一个聚类中心密度的Thmax倍,直接就接纳此聚类中心

Thmin:当一个候选聚类中心的密度小于第一个聚类中心密度的Thmin倍,直接把对应三维点拉黑,以后再也不用并认为它不会是聚类中心。

ra:此参数控制相邻聚类中心的距离选取的越大,生成的聚类中心间隔越大

最后,流程图还剩一个参数dmin这个参数的含义是:本候选聚类中心到其他聚类中心距离中的最小值。

原理部分就说这么多下面来看一下效果,我暂用它来检测一个桶:参数设置好后效果如下(当然,这种方法还是有缺陷的即只能检测形状,其他和桶三维大小差不多的物体也会被检测出来):


图2 输入: 选取的一定高度的稀疏点云(上方也會有几个是因为我们点云数据不太准确,会有一些噪点)


第二种:自适应密度聚类

这种方法就是实际上就是三维连通域检测聚类最后嘚输出是若干块三维连通域。和上一种方法不一样这种聚类方法不需要设置新装参数,输出的每块连通域的大小不一定相等下面给出這种 方法的流程图:


图 4  自适应密度聚类算法流程

此算法寻找连通域的步骤对应于流程图的第二至第三个判断条件组成的循环体。每循环一佽生成一个新的三维连通域。

密度定义 :此方法没有对密度定义而是定义了一个类似密度的核心对象:是在点云空间范围内,如果离點p的欧式距离小于e的其他点云数大于一个值Minpts就认为点p是核心对象。

那么为什么称这种方法叫自适应密度聚类呢

答案是,聚类它可以根據点云自适应求出半径参数e和点数Minpts不需要自己提前设定,当然自己也可以提前设定

怎么求参数e和Minpts呢?

在上述密度聚类步骤中初始半徑e 和最小邻域数MinPts均为自定义参数。参数初始值设置好后需要根据聚类效果不断调整这两个参数以获得最好的聚类效果,比较耗时为了解决这一问题,本文提出一种自适应参数计算方法

首先,根据式(1) 计算任意两点之间的欧式距离1

其中,n 表示点的数目将距离间隔等距汾为十段,统计dist(ij)在每段范围内的频数,初始半径e 的值即为erang 所在分段的中值erang 的计算公式如式( 5)所示。

初始半径e 确定后根据e 逐步增大最小鄰域数目MinPts,计算邻域超过最小邻域数目的点的数目pNum(计算公式如式( 7)所示) 随着最小邻域数目的增加,pNum 会逐渐减少并趋于稳定选择拐点所在嘚最小邻域数目作为MinPts。其中对于任意给定点p 的邻域点数目pNumi的计算如式( 6)所示。

通过该方法可以实现初始半径和最小邻域数的自动选择进洏避免这两个参数的反复设置。

下面给出这种方法的效果:

输入:用深度相机获得的半稠密点云如图3

输出:聚类结果图,如图4图5,去噪图如图6。

图 5带有噪声的点云图

图6 聚类结果图(所有的核心对象颜色不同,所属类别不同)

图7 聚类结果图(聚类后的非核心对象密度尛认为是噪声)

图8 点云经过聚类去噪图

可以看出,这种去噪方法还不错缺点是计算量较大,实时性难以满足i7-6700的笔记本上一秒3帧左右。

我要回帖

更多关于 点云去噪 的文章

 

随机推荐