经典文献阅读之–FEC

  1. 简介

在激光雷达的特征提取中,对整帧的点云数据进行分割是至关重要的,但是非常明显的是在3D场景中,捕获的点云通常是稀疏且非结构化的,分割有可能误分割或者漏分割。今天我们来看一下22年的论文《FEC: Fast Euclidean Clustering for Point Cloud Segmentation》,这篇文章中提出一种新颖的快速欧几里得聚类算法,同时据作者说易于实现,具体只有40行的CPP代码。目前作者代码还没有开源,说是accept后就开源。虽然这篇文章并没有被大量的关注,但是从小代码,即插即用等特点,这给我们可以通过文章学习它的详细思想以及算法的可能性。

  1. 文章贡献

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:1840da82-2106-425c-9ace-be0b3b0b99ba

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:e2f247b1-ceea-4a3f-b8b1-1b232bab28a2

经典文献阅读之--FEC

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c27594e8-1b95-4aa9-827d-f24a1ff8187a

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:884ab027-9cc1-4cd6-be58-9f7c8c28a0d2

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:05f9ef22-6b64-4ece-91eb-cc7b6a52ab1d

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:b5f5222f-5a05-4c74-8eba-aef0fd315986

* 基于聚类的方法。聚类算法根据元素的相似性将元素划分为类别,可应用于点云分割。因此,K均值、均值漂移、DBSCAN和欧几里德聚类提取(EC)常被用于这项任务,尽管基于聚类的方法简单,但点云中每个点的高迭代率导致了高计算负担并降低了效率。
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:540bfada-a117-4bc6-bd62-c5b9adcb4c45

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:5c7d4fdb-a5b5-4550-a276-d1d14f5c6a2a

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:46994b69-483f-42db-8a4c-41917ce94649

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:807456f6-62ac-40b6-bc5a-bd32b1ffd6d0

; 2. 算法推导

2.1地面滤除

首先文中提到会先对地面点进行滤除,虽然说是地面滤除,但是如果说我们需要实际上提取车道线点时候,可以直接使用地面提取,然后再对地面的特征点进行提取。文中提到使用了cloth simulation filter来提取和滤除接地点云。

经典文献阅读之--FEC
CSF csf;

csf.readPointsFromFile(terr_pointClouds_filepath);

clock_t start, end;
start = clock();

csf.params.bSloopSmooth = ss;
csf.params.class_threshold = atof(class_threshold.c_str());
csf.params.cloth_resolution = atof(cloth_resolution.c_str());
csf.params.interations = atoi(iterations.c_str());
csf.params.rigidness = atoi(rigidness.c_str());
csf.params.time_step = atof(time_step.c_str());

std::vector<int> groundIndexes, offGroundIndexes;
if (argc == 2 && strcmp(argv[1], "-c")==0)
{
    std::cout << "Export cloth enabled." << std::endl;
    csf.do_filtering(groundIndexes, offGroundIndexes, true);
}
else
{
    csf.do_filtering(groundIndexes, offGroundIndexes, false);
}

end = clock();
double dur = (double)(end - start);
printf("Use Time:%f\n", (dur / CLOCKS_PER_SEC));

csf.savePoints(groundIndexes,"ground.txt");
csf.savePoints(offGroundIndexes, "non-ground.txt");

2.2 快速欧几里得聚类

与EC类似,我们使用欧几里得(L2)距离度量来测量无组织点云的接近度,并将相似性分组到同一聚类中,可以描述为

m i n ∥ P i − P i ′ ∥ 2 ⩾ d t h min\|\mathbf{P}i – \mathbf{P}{i’}\|2 \geqslant d{th}m i n ∥P i ​−P i ′​∥2 ​⩾d t h ​

伪代码步骤为:

经典文献阅读之--FEC

流程整体来说还是比较清楚的,首先会将P i \mathbf{P}i P i ​的label全部置零,然后分割的s e g L a b segLab s e g L a b初始化为1,然后遍历所有的点,当发现遍历的点中label为0,则去找最近的关联点P N N \mathbf{P}{NN}P N N ​。如果存在有点不为0,则找到最小的label值,这就代表存在联通。如果不存在则赋值,然后对P N N \mathbf{P}_{NN}P N N ​遍历,如果找到其他的label大于m i n S e g L a b minSegLab m i n S e g L a b的值,则再次遍历所有的带你,然后将所有其他的label值,重置为m i n S e g L a b minSegLab m i n S e g L a b的值。

文中提到本文的算法使用逐点方案,该逐点方案的输入编号顺序与EC和EG中使用的聚类方案相反,FEC易于部署,在C++中仅需40行代码。

经典文献阅读之--FEC
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:0cbee17a-2151-4a57-b6a6-fb2c971fa74c
[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:bbc11684-347a-4988-b98f-7ac81b4edffb

; …详情请参照 古月居

Original: https://blog.csdn.net/lovely_yoshino/article/details/126930260
Author: Hermit_Rabbit
Title: 经典文献阅读之–FEC

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/563106/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球