PCL教程-点云分割之区域生长分割算法.pdf

PCL教程-点云分割之区域生长分割算法.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PCL教程-点云分割之区域⽣长分割算法 原⽂链接 : 本教程使⽤到的点云数据 : 在本篇教程中,我们 学习如何使⽤由pcl::RegionGrowing类实现的区域⽣长算法。该算法的⽬的是合并在平滑约束条件下⾜够接近的 点。因此,该算法的输出数据结构是由聚类组成的数组,其中每个聚类都是被认为是同⼀光滑表⾯的⼀部分的点的集合。该算法的⼯作原理 (光滑度的计算)是基于两点法线之间的⾓度⽐较。 ⽬录 基基本本原原理理 ⾸先,它根据点的曲率值对点进⾏排序。需要这样做是因为区域从曲率最⼩的点开始增长。这样做的原因是曲率最⼩的点位于平坦区域(从 最平坦区域⽣长可以减少段的总数)。 我们有了分类过的云。直到云中没有未标记点时,算法选取曲率值最⼩的点,开始区域的增长。这个过程如下所⽰ : 选中的点被添加到名为种⼦的集合中。 对于每⼀个种⼦点,找到它的邻近点 : 算出每个相邻点的法线和当前种⼦点的法线之间的⾓度,如果⾓度⼩于阈值,则 当前点添加到当前区域。 然后计算每个邻居点的曲率值,如果曲率⼩于阈值,那么这个点被添加到种⼦中。 当前的种⼦从种⼦列表中移除。 如果种⼦列表变成空的,这意味着该区域⽣长已完成,继续重复上述过程。 区域⽣长算法 : 具有相似性的点云集合起来构成区域。 ⾸先对每个需要分割的区域找出⼀个种⼦点作为⽣长的起点,然后 种⼦点周围邻域中与种⼦有相同或 相似性质的点合并到种⼦像素 所在的区域中。⽽新的点继续作为种⼦向四周⽣长,直到再没有满⾜条件 的像素可以包括进来,⼀个区域就⽣长⽽成了。 算法流程 : 1. 计算法线normal 和曲率curvatures,依据曲率升序 排序 ; 2. 选择曲率最低的为初始种⼦点,种⼦周围的临近点和 种⼦点云相⽐较 ; 3. 法线的⽅向是否⾜够相近 (法线夹⾓⾜够 r p y), 法线夹⾓阈值 ; 4. 曲率是否⾜够⼩ (表⾯处在同⼀个弯曲程度),区域 差值阈值 ; 5. 如果满⾜2,3则该点可⽤做种⼦点; 6. 如果只满⾜2,则归类⽽不做种⼦; 算算法法伪伪代代码码 输输⼊⼊ Point cloud = Point normals = Points curvatures = Neighbour finding function Curvature threshold Angle threshold 初初始始化化 区域列表置为空 : Region list 可⽤的点云列表 :Available points list 算算法法实实现现 程程序序代代码码 #include iostream #include vector #include pcl/point_types.h #include pcl/io/pcd_ io.h #include pcl/search/search.h #include pcl/search/kdtree.h #include pcl/features/normal_3d.h #include pcl/visuali ation/cloud_viewer.h #include pcl/filters/passthrough.h #include pcl/segmentation/region_growing.h #include pcl/console/print.h #include pcl/console/parse.h #include pcl/console/time.h #include windows.h #include stdio.h #include psapi.h void PrintMemoryInfo( ) { HANDLE hProcess; PROCESS_ MEMORY_COUNT ERS pmc; hProcess=GetCurrentProcess() ; printf( \nProcess ID: %u\n, hProcess ) ; // Print information about the memory usage of th

文档评论(0)

137****7707 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档