点云处理

点云滤波

  • sor(statistical outlier removal): 对每个点的邻域进行一个统计分析,并修剪掉那些不符合一定标准的点。
    • 对每个点计算它的k(超参数)临近点的平均距离。
    • 假设得到的结果是一个高斯分布,其形状由均值和方差决定。
    • 平均距离在标准范围之外,即超出平均距离的d(超参数)个标准差,则该点被标记为离群点。
  • 直通滤波(pass through): 不在范围内的点过滤掉
  • ror(radius outlier removal)
    • 每个点的半径范围r(超参数)内低于d(超参数)个点的被称为异常点

点云下采样

体素化网络(voxel grid)实现下采样

对输入的点云数据创建一个三维体素网格,在每个体素内,用体素中所有点的重心来近似体素中的其它点;该体素内的所有点就用一个重心点表示。

KdTree

KdTree(k-dimensional tree)是每个节点都为k维点的二叉树。所有非叶子节点可以视作用一个超平面把空间分割成两个空间。节点左边的子树代表在超平面左边的点,节点右边的子树代表在超平面右边的点。KdTree是一种分割k维数据空间的数据结构,可用于范围搜索和最近邻搜索。

  • 建立KdTree
    这里介绍一种最典型的方法。

    • 随着树的深度轮流选择轴当作分割面。(例如,在三维空间中根节点是 x 轴垂直分割面,其子节点皆为 y 轴垂直分割面,其孙节点皆为 z 轴垂直分割面,其曾孙节点则皆为 x 轴垂直分割面, 依次类推)
    • 点由垂直分割面之轴坐标的中位数区分并放入子树
  • 最近邻搜索(Nearest neighbor search)
    最近邻搜索用来找出在树中与输入点最接近的点。

    KdTree最近邻搜索的过程如下:

    • 从根节点开始,递归的往下移。如果输入点在分区面的左边则进入左节点,在右边则进入右子节点。
    • 一旦移到叶节点,将该节点当做"当前最佳节点"。
    • 解开递归(应该是回溯),并对每个经过的节点运行下列步骤:
      • 如果目前所在点比目前最佳点更靠近输入点,则将其变为"当前最佳节点";
      • 检查在分割平面的另一侧是否有任何点比"当前最佳节点"更靠近搜索点[这是通过判断以搜索点位圆心,当前最近距离为半径的超球(hypersphere)与分割超平面是否相交来实现的].如果超球与分割超平面不相交,则算法继续沿树回溯,并消除该节点另一侧的整个分支。
        如果超球与该分割超平面相交,则该平面的另一侧可能会有更近的点, 回溯进行相同的操作。
    • 当根节点搜索完毕后完成最近邻搜索

    如果维持k个最佳距离,则变成k近邻算法
    详细过程参看如下动图(如无法打开,请查看这里https://en.wikipedia.org/wiki/File:Kdtreeogg.ogv)

  • 范围搜索(Range Search)
    从数据集中找出所有与查询点距离在一定区间内的数据。

  • 复杂度

    • 空间复杂度: 平均O(n), 最坏O(n)
    • 搜索时间复杂度: 平均O(nlogn), 最坏O(n)
  • 维数灾难
    维数灾难让大部分的搜索算法在高维情况下都显得花哨且不实用。同样的,在高维空间中,KdTree也不能做很高效的最近邻搜索。一般的准则是: 在k维情况下,数据点数目N当远大于时,KdTree的最近邻搜索才能很好的发挥其作用。

OcTree

八叉树是一种树型数据结构,其中每个内部节点整好有八个子节点。八叉树常用于将三维空间递归地分为8个1/8。
具体应用和更多细节部分还不了解,欢迎补充!

聚类算法

下图是scikit-learn.org提供的关于聚类算法的一个汇总, 可以通过https://scikit-learn.org/stable/auto_examples/cluster/plot_cluster_comparison.html中的程序进行复现
在这里插入图片描述

下面对K-Means, MeanShift和DBSCAN进行简单介绍。

  • K-Means
    K-Means把n个点划分到k个聚类中, k是输入参数。具体算法思想需要进一步了解。

  • MeanShift
    Mean Shift算法在1975年被提出, 后来又Yizong Cheng对其进行扩充,主要提出了两点改进: 定义了核函数,增加了权重系数。它不需要事先设定类别个数。这个博客https://www.biaodianfu.com/mean-shift.html介绍的不错。

    Mean Shift算法是如何确定聚类中心数量的 ? 具体的算法细节还需要进一步了解。

  • DBSCAN
    DBSCAN(Density-based spatial clustering of applications with noise),是在1996提出的聚类分析算法。维基百科我觉的介绍的不错,感兴趣的可以查看这个链接: https://zh.wikipedia.org/zh-cn/DBSCAN

参考资料

待补充…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值