标签:当前 区域 代码 曲率 该点 种子 PCL 集合 原理
PCL 区域生长法原理及伪代码
原理
首先,它按曲率值对点进行排序。之所以需要这样做,是因为该区域从具有最小曲率值的点开始增长。这样做的原因是曲率最小的点位于平坦区域(从最平坦的区域增长可以减少段的总数)。
算法选取曲率值最小的点并开始区域的增长,直到点云中没有点为止。这个过程发生如下:
- 选取的点被添加到称为种子的集合中。
- 对于每个种子点,算法找到它的相邻点。
- 测试每个邻居的法线和当前种子点的法线之间的角度。如果角度小于阈值,则将当前点添加到当前区域。
- 之后,测试每个邻居的曲率值。如果曲率小于阈值,则将此点添加到种子中。
- 当前种子从种子中移除。
- 如果种子集变空,这意味着算法已经扩大了区域,并且从头开始重复该过程。
伪代码
PointCloud A; // A 代表点云
R_list; // 存放分类后的点云
while (! A.empty()) // A 不为空
{
// 初始化当前分类区域 R = 0
// 初始化当前种子集合 S = 0
// 从 A 中选取 曲率最小的点 Pmin
// 将 Pmin 加入种子集合 S, 当前分类区域 R, 从点云集合 A 中去除
for(;;) // 遍历种子集合 S
{
// 从种子集合中取出一个种子,寻找种子的近邻点,存至集合 R 中
for (;;) // 遍历近邻点集合 R
{
// 逐一从 R 中取出各点
if () // 判断该点的法线与种子点法线差值是否小于阈值
{
// 满足条件,将该点加入当前分类区域 R,从点云集合 A 中删除
if () // 判断该点的曲率与种子点曲率差值是否小于阈值
{
// 满足条件,将该点加入种子集合 S
}
}
}
}
// 将当前分类区域 R 加入分类列表 R_list 中
}
标签:当前,区域,代码,曲率,该点,种子,PCL,集合,原理 来源: https://blog.csdn.net/weixin_45867382/article/details/122017715
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。