3D点云处理:点云聚类--FEC: Fast Euclidean Clustering for Point Cloud Segmentation

article/2025/9/18 7:13:52

文章目录

  • 聚类结果
  • 一、论文内容
    • 1.1 Ground Surface Removal
    • 1.2 Fast Euclidean Clustering
      • 题外:欧几里得聚类
      • Fast Euclidean Clustering
      • FEC利用具有点索引顺序的逐点方案的浅显理解
    • 1.3 源码中问题说明
  • 二、参考

聚类结果

原始代码中采用的是pcl中的搜索方式,替换为另外第三方库(nanoflann),速度得到进一步提升。

一、论文内容

      论文中给出的结论:该方法避免了在每个嵌套循环中不断遍历每个点是产生的耗时和内存,在经典分割方法的基础上实现了两个数量级,同时产生高质量的结果。
      论文给出的方法包含两步:1. Ground Surface Removal;2.The Clustering of the remaining points;

1.1 Ground Surface Removal

      通过对点云进行预处理操作,论文中采用的是Cloth Simulation Filter提取和滤除接地点云;Cloth Simulation Filter具体实现过程可参考点云地面点滤波(Cloth Simulation Filter, CSF)“布料”滤波算法介绍

1.2 Fast Euclidean Clustering

题外:欧几里得聚类

  1. 找到空间中某点 p 11 p_{11} p11,用KD-Tree找到离他最近的 n n n个点,判断这 n n n个点到的距离。将距离小于阈值 r r r的点 p 12 , p 13 , p 14 . . . p_{12},p_{13},p_{14}... p12,p13,p14...放在类 Q Q Q里;
  2. Q ( p 11 ) Q(p_{11}) Q(p11)里找到一点 p 12 p_{12} p12 ,重复步骤1;
  3. Q ( p 11 , p 12 ) Q(p_{11},p_{12}) Q(p11,p12)找到一点,重复步骤1,找到 p 22 , p 23 , p 24 . . . p_{22},p_{23},p_{24}... p22,p23,p24...全部放进 Q Q Q里;
  4. Q Q Q再也不能有新点加入了,则完成搜索了;

Fast Euclidean Clustering

      论文中聚类方法与EC类似,使用欧几里得(L2)距离度量来测量无组织点云的接近度,并将相似性一致的点合并到同类中,描述如下:
在这里插入图片描述

  • 伪代码
    在这里插入图片描述
  • 算法流程示例
    在这里插入图片描述

FEC利用具有点索引顺序的逐点方案的浅显理解

  • 搜索并给每一次搜索到的点打标签(min_tag),如果在搜索过程中存在其他打过标签的点,将其合并进来,并对全部合并的点重新以最小的标签值重新打标签,依次对所有点按顺序进行打标签,并存放在数组中;(相同标签的数量代表的是点云聚到一个类别的点数)
  • 对打过标签的数组重新存放排序(排序是按照标签值进行排序),并依次循环进行点数过滤,保留阈值范围外的点云;

1.3 源码中问题说明

  1. 最后的点数过滤应该是不需要的
if ((i - beginIndex) >= static_cast<unsigned long>(minPointsNum)) {for (j = beginIndex; j < i; j++) {unsigned long m = 0;inliers->indices.resize(i - beginIndex);for (j = beginIndex; j < i; j++) {inliers->indices[m++] = indicesTags[j].nPointIndex;}clusterIndices.push_back(*inliers);}
}
  1. 不需要 Ground Surface Removal

二、参考

  1. FEC: Fast Euclidean Clustering for Point Cloud Segmentation
  2. https://github.com/YizhenLAO/FEC

http://chatgpt.dhexx.cn/article/GRsRdy0w.shtml

相关文章

euclidean loss

个人感觉相当于L2范式开平方,也相当于针对两个向量的欧氏距离开平方 说的更直白点就是两个向量对应位置相减得到每个位置的差,然后把每个位置的差开平方再相加 前向传播cpp代码: template <typename Dtype> void EuclideanLossLayer<Dtype>::Forward_cpu(const vec…

Euclidean, Manhattan, hop-count distance 区别

欧式距离&#xff08;Euclidean Distance&#xff09; 二维空间的公式 其中&#xff0c; 为点 与点 之间的欧氏距离&#xff1b; 为点 到原点的欧氏距离。 曼哈顿距离&#xff08;Manhattan Distance &#xff09; 两点在南北方向上的距离加上在东西方向上的距离&#xff0c;…

扩展Euclidean算法求乘法逆原理详解与算法实现

【利用扩展Euclidean算法求乘法逆】 1. Equipment &#xff08;1&#xff09; operating system version &#xff1a;WIN 10 &#xff08;2&#xff09; CPU instruction set: x 64 &#xff08;3&#xff09; software &#xff1a;Visual Studio 2019 2. process Probl…

NEO4J-相似度算法04-欧几里得距离算法(euclidean)应用场景简介

说明&#xff1a;使用neo4j算法库时需引入跟neo4j数据库对应的算法库插件或自定义算法库 1.简介 欧几里德距离算法原理是计算n维坐标系中点与点之间地距离&#xff0c;如在三维坐标系中点A(p1,p2,p3),点B(q1,q2,q3),两个点之间得距离则为 &#xff1a;, 如果在n维坐标系中&…

欧几里德算法、拓展欧几里德、中国剩余定理

目录 欧几里德算法&#xff08;Euclidean algorithm&#xff09;&#xff08;辗转相除法&#xff09;拓展欧几里德算法中国剩余定理作业1&#xff1a;作业2&#xff1a; 欧几里德算法&#xff08;Euclidean algorithm&#xff09;&#xff08;辗转相除法&#xff09; 欧几里德…

logit回归模型_一文读懂条件Logistic回归

在医学研究中,为了控制一些重要的混杂因素,经常会把病例和对照按年龄,性别等条件进行配对,形成多个匹配组。各匹配组的病例数和对照人数是任意的,比如一个病例和若干个对照匹配即1:1,在医学上称作“1:1病历对照研究”,常见还有1:M(M <=3),即1个病例和1或2或3个对照…

目标检测-定位蒸馏:logit蒸馏与feature蒸馏之争

定位蒸馏 &#xff08;LD, CVPR 2022&#xff09; 先上我们文章和代码&#xff1a; 论文标题&#xff1a; Localization Distillation for Dense Object Detection 论文地址&#xff1a; https://arxiv.org/abs/2102.12252 代码地址1&#xff1a; https://github.com/HikariTJU…

biogeme-nest_logit-cnblog

biogeme-nest_logit 基础数据&#xff1a; optima.dat 变量的描述&#xff1a;出处 OccupStat&#xff1a;职业TimePT&#xff1a;公共交通通行时间TimeCar&#xff1a;小汽车通行时间MarginalCostPT&#xff1a;公共交通总成本CostCarCHF&#xff1a;小汽车的总汽油成本dis…

必看 logit回归分析步骤汇总

Logit回归分析用于研究X对Y的影响&#xff0c;并且对X的数据类型没有要求&#xff0c;X可以为定类数据&#xff08;可以做虚拟变量设置&#xff09;&#xff0c;也可以为定量数据&#xff0c;但要求Y必须为定类数据&#xff0c;并且根据Y的选项数&#xff0c;使用相应的数据分析…

PyTorch logit函数

1.PyTorch vs TensorFlow tensorflow是静态图&#xff0c;需要你把啥都准备好&#xff0c;然后它像个傻子一样执行&#xff0c;tensorflow&#xff0c;目前业界更适合部署&#xff0c;毕竟是静态图&#xff0c;infer的时候速度快。 pytorch&#xff0c;它会在执行的时候&…

logit回归模型_详解 Logit/Probit 模型中的 completely determined 问题

NEW!连享会推文专辑:Stata资源 | 数据处理 | Stata绘图 | Stata程序结果输出 | 回归分析 | 时间序列 | 面板数据 | 离散数据交乘调节 | DID | RDD | 因果推断 | SFA-TFP-DEA文本分析+爬虫 | 空间计量 | 学术论文 | 软件工具 连享会学习群-常见问题解答汇总:👉 WD 主页…

Logit Adjust

Logit Adjust BER 我们在分类问题中常用的误分类函数使得分类器最终学到的分布&#xff1a; P ( y ∣ x ) ∝ P ( y ) P ( x ∣ y ) P(y|x) \propto P(y)P(x|y) P(y∣x)∝P(y)P(x∣y) 假设在一个不平衡猫狗二分类问题中&#xff0c;狗是一个小类&#xff0c;只有整个数据集的…

logit

1.为什么需要logit回归? 线性回归不稳健 异常点对拟合直线的影响很大 so linear不适合做分类问题 2.为什么要sigmoid&#xff1f;sigmoid能做什么&#xff1f; y0&#xff0c;1是离散问题,直接建立方程 函数不连续——损失函数不可导——参数无法用梯度法优化 所以我们由 …

Logit 是怎么算的?

从知乎借几张图来描述&#xff0c;先看看odds 是什么&#xff1f; 然后Logit 就 是 Log of odds&#xff1a;

【计算机网络学习笔记】(汇总目录)

计算机网络学习笔记&#xff08;汇总目录&#xff09; 文章目录 点击以下标题&#xff0c;跳转到对应章节的详细讲解 【计算机网络学习笔记01】计算机网络概述&#xff08;上&#xff09; 【计算机网络学习笔记02】计算机网络概述&#xff08;中&#xff09; 【计算机网络学习…

计算机网络期末总结复习(全)

文章目录 第一章:概述1.1、计算机网络在信息时代的作用我国互联网发展状况1.2、因特网概述1、网络、互连网(互联网)和因特网2、因特网发展的三个阶段3、因特网的标准化工作4、因特网的组成补充:1.3 三种交换方式1、电路交换(Circuit Switching)2、分组交换(Packet Switc…

计算机网络的应用领域有那些,计算机网络应用领域

描述 计算机网络应用领域 一、计算机网络在现代企业中的应用 计算机网络的发展和应用改变了传统企业的管理模式和经营模式。在现代企业中企业信息网络得到了广泛的应用。它是一种专门用于企业内部信息管理的计算机网络,覆盖企业生产经营管理的各个部门,在整个企业范围内提供硬…

《王道计算机网络》学习笔记总目录+思维导图

0.思维导图 本篇文章是对《2021王道计算机网络》所有知识点的笔记总结归档&#xff0c;虽说是2021年的&#xff0c;但是这些都是最核心的底层基础知识&#xff0c;过多少年都不会有很大的变化&#xff0c;核心都差不多。我的武功秘籍&#xff1a;note.bithachi.cn&#xff0c;…

计算机必备学习网站

目录 1 论文代码网站 &#xff08;1&#xff09;Github&#xff1a;www.github.com/ &#xff08;2&#xff09;Papers With Code&#xff1a;https://paperswithcode.com/ &#xff08;3&#xff09;researchcode&#xff1a;Research Code &#xff08;4&#xff09;sema…

内联函数的使用与引用

内联函数的执行过程与带参数宏定义很相似&#xff0c;但参数的处理不同。带参数的宏定义并不对参数进行运算&#xff0c;而是直接替换&#xff1b;内联函数首先是函数&#xff0c;这就意味着函数的很多性质都适用于内联函数&#xff0c;即内联函数先把参数表达式进行运算求值&a…