欧式聚类详解(点云数据处理)
欧式聚类是一种基于欧氏距离度量的聚类算法。基于KD-Tree的近邻查询算法是加速欧式聚类算法的重要预处理方法。

KD-Tree最近邻搜索

Kd-树是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构;Kd-树是一种平衡二叉树。为了能有效的找到最近邻,Kd-树采用分而治之的思想,即将整个空间划分为几个小部分。k-d树算法的应用可以分为两方面,一方面是有关k-d树本身这种数据结构建立的算法,另一方面是在建立的k-d树上如何进行最邻近查找的算法。
k-d tree是每个节点均为k维数值点的二叉树,其上的每个节点代表一个超平面,该超平面垂直于当前划分维度的坐标轴,并在该维度上将空间划分为两部分,一部分在其左子树,另一部分在其右子树。即若当前节点的划分维度为d,其左子树上所有点在d维的坐标值均小于当前值,右子树上所有点在d维的坐标值均大于等于当前值,本定义对其任意子节点均成立。
构建开始前,对比数据点在各维度的分布情况,数据点在某一维度坐标值的方差越大分布越分散,方差越小分布越集中。从方差大的维度开始切分可以取得很好的切分效果及平衡性。

KD-Tree构建原理
常规的k-d tree的构建过程为:循环依序取数据点的各维度来作为切分维度,取数据点在该维度的中值作为切分超平面,将中值左侧的数据点挂在其左子树,将中值右侧的数据点挂在其右子树。递归处理其子树,直至所有数据点挂载完毕。

KD-Tree近邻查询
给定点p,查询数据集中与其距离最近点的过程即为最近邻搜索

图中对于给定的查询数据点m,须从KD-Tree的根结点开始进行比较,其中m(k)为当前结点划分维度k上数据点m对应的值,d为当前结点划分的阈值。若 m(k)小于d,则访问左子树;否则访问右子树,直至到达叶子结点Q。此时Q就是当m前最近邻点,而m与Q之间的距离就是当前最小距离Dmin 。随后沿着原搜索路径回退至根结点,若此过程中发现和m之间距离小于 Dmin的点,则须将未曾访问过的子节点均纳入搜索范畴,并及时更新最近邻点,直至所有的搜索路径都为空,整个基于KD-Tree结构的最近邻点查询过程便告完成。

欧式聚类

对于欧式聚类来说,距离判断准则为前文提到的欧氏距离。对于空间某点P,通过KD-Tree近邻搜索算法找到k个离p点最近的点,这些点中距离小于设定阈值的便聚类到集合Q中。如果Q中元素的数目不在增加,整个聚类过程便结束;否则须在集合Q中选取p点以外的点,重复上述过程,直到Q中元素的数目不在增加为止。

这里有几个疑问:

疑问1

假如对一幅马路点云图进行聚类,从某个角度看,有一辆车和一棵树紧挨着,欧式聚类会把两辆车聚为一个类别去吧?

疑问2,点云图中有多类别物体(假如有车,小狗,树),假如点云中不同物体距离都比较大,按照上述流程,

我先随机选点P,选到了一辆车上,对于空间某点P,通过KD-Tree近邻搜索算法找到k个离p点最近的点,这些点中距离小于设定阈值的便聚类到集合Q中。如果Q中元素的数目不在增加,整个聚类过程便结束;这个时候,集合Q中存放的是这辆车的点云数据把?那点云库中别的物体还没聚类呢?

个人理解,集合Q的数据不再增加,对剩下的点云重新开始聚类,最后能聚类出,树,小狗。

————————————————
版权声明:本文为CSDN博主「JAT0929」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/JAT0929/article/details/104258461

PCL 点云 欧式聚类疑问相关推荐

  1. PCL 点云欧式聚类

    目录 一.概述 二.代码 三.结果 一.概述   PCL中点云欧式聚类的简单使用案例 二.代码 cluster_extraction.cpp #include <pcl/ModelCoeffic ...

  2. PCL 点云DBSCAN聚类算法

    文章目录 一.简介 二.实现代码 三.实现效果 参考资料 一.简介 关于DBSCAN聚类算法的原理可以看之前的文章:点云DBSCAN聚类算法(C++),这里仅仅是对该算法进行了整理,让它可以支持PCL ...

  3. PCL点云库学习笔记 点云的欧式聚类

    欧式聚类详解(点云数据处理) 欧式聚类是一种基于欧氏距离度量的聚类算法.基于KD-Tree的近邻查询算法是加速欧式聚类算法的重要预处理方法. KD-Tree最近邻搜索 Kd-树是K-dimension ...

  4. PCL点云库学习笔记(3):点云的欧式聚类

    初学者笔记: 点云欧式聚类算法流程 (1)点云读入: (2)体素化下采样(方便处理): (3)去离散点: (4)RANSAC算法检测平面,并剔除平面点云: (5)欧式聚类: (6)结果的输出和可视化: ...

  5. PCL 点云分割与分类 Segmentation RANSAC随机采样一致性 平面模型分割 欧氏距离分割 区域聚类分割算法 最小分割算法 超体聚类 渐进式形态学滤波器

    点云分割 博文末尾支持二维码赞赏哦 _ 点云分割是根据空间,几何和纹理等特征对点云进行划分, 使得同一划分内的点云拥有相似的特征,点云的有效分割往往是许多应用的前提, 例如逆向工作,CAD领域对零件的 ...

  6. PCL 快速欧式聚类(FEC)

    文章目录 一.简介 二.实现代码 三.实现效果 参考资料 一.简介 应一位同学的要求,出一版PCL的快速欧式聚类(FEC),该方法的具体原理可以参阅之前的博客:CloudCompare&PCL ...

  7. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)

    在第(3)实现了地面点与障碍物的分离,此部分要实现的是聚类,聚类是指把不同物体的点云分别组合聚集起来, 从而能让你跟踪汽车, 行人等多个目标. 其中一种对点云数据进行分组和聚类的方法称为欧氏聚类. 欧 ...

  8. 点云PCL学习笔记-分割segmentation-RANSAC随机采样一致性算法欧式聚类提取

    随机采样一致性算法RANSAC 程序实例参考网址: https://pcl.readthedocs.io/projects/tutorials/en/latest/random_sample_cons ...

  9. 【点云处理技术之PCL】点云分割算法1——平面模型分割、圆柱模型分割和欧式聚类提取(含欧式聚类原理)

    文章目录 1. 平面分割 2. 圆柱分割 3. 欧式聚类分割 1. 平面分割 下列中,先随机创建了z=1.0的随机点,然后改变其中3个点的z值.最后,使用SACMODEL_PLANE平面模型对它进行拟 ...

最新文章

  1. RabbitMQ安装遇到的问题及解决记录
  2. [19/04/04-星期四] IO技术_CommonsIO(通用IO,别人造的轮子,FileUtils类 操作文件 IOUtilsl类 操作里边的内容 )...
  3. Spring Security构建Rest服务-0702-短信验证码登录
  4. java方法6_6. java 方法
  5. include 引号和尖括号的区别
  6. Eclipse Java注释模板设置详解
  7. debian执行php网页,如何在Debian上安装和使用PHP Composer
  8. Camera 图像处理原理分析
  9. 为什么说java语言是支持跨平台的
  10. 新手学Docker(1)Hello World
  11. 网赚项目:揭秘闲鱼项目,信息差赚钱新手也能日入200+
  12. win7计算机图标删除,如何彻底删除Win7右下角操作中心的小白旗图标
  13. FPGA仿锆石代码风格组合电路时序电路严格分开之(一)8通道16位AD采集
  14. nginx 80 443 并存
  15. 利用Nexus搭建私服
  16. 《C primer plus》——文件输入/输出
  17. 获取token(/oauth/token)
  18. 【信号去噪】基于蚁群算法优化小波阈值实现信号去噪附matlab代码
  19. 从10万个数中找10个最大的数
  20. 意大利黑手党2mac版下载

热门文章

  1. Android之 AndroidManifest.xml 文件解析
  2. java设计模式---合成模式3
  3. 实例分析exec函数
  4. 项目3----云服务器及其提供商
  5. Centos双节点搭建openstack无法使用ssh链接到实例解决办法
  6. JAVA编译显示存在不安全_java – 编译时出现“未经检查或不安全的操作”错误...
  7. 打印机尚未链接到此计算机,win10系统无法连接打印机显示未指定设备的解决方法...
  8. 随机洗牌算法 银行家算法
  9. linux 0地址的妙用
  10. 3 账套升级u8_用友U8条码管理的应用对仓库有什么好处?