点云
文章平均质量分 52
本专栏主要是介绍pcl点云库常见处理方法。
长沙有肥鱼
这个作者很懒,什么都没留下…
展开
-
pcl最小图割的分割
一、概念最小图割的分割:图论中的最小割(min-cut)广泛应用在网络规划,求解桥问题,图像分割等领域。 最小割算法是图论中的一个概念,其作用是以某种方式,将两个点分开,当然这两个点中间可能是通过无数的点再相连的。如果要分开最左边的点和最右边的点,红绿两种割法都是可行的,但是红线跨过了三条线,绿线只跨过了两条。单从跨线数量上来论 可以得出绿线这种切割方法更优的结论。但假设线上有不同的权值,那么最优切割则和权值有关了。算法主要思想:1.建图:对于给定的点云,算法将包含点云中每一个点原创 2021-10-11 15:28:11 · 944 阅读 · 1 评论 -
pcl 基于颜色的区域生长分割
基于颜色的区域生长分割:基于颜色的区域生长分割原理上和基于曲率,法线的分割方法是一致的,只不过比较目标换成了颜色。可以认为,同一个颜色且挨得近,是一类的可能性很大,比较适合用于室内场景分割。尤其是复杂室内场景,颜色分割可以轻松的将连续的场景点云变成不同的物体。哪怕是高低不平的地面,设法用采样一致分割器抽掉平面,颜色分割算法对不同的颜色的物体实现分割。算法主要分为两步:(1)分割,当前种子点和领域点之间色差小于色差阀值的 视为一个聚类。(2)合并,聚类之间的色差小于色差阀值和并为一个聚..原创 2021-10-11 15:14:55 · 1423 阅读 · 7 评论 -
pcl 条件欧式聚类分割
条件欧式聚类分割(聚类):使用类pcl::ConditionEuclideanClustering实现点云分割,与其他分割方法不同的是该方法的聚类约束条件(欧式距离、平滑度、RGB颜色等)可以由用户自己定义,即当搜索到一个近邻点时,用户可以自定义该邻域点是否合并到当前聚类的条件。#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <pcl/console/time.h>#includ原创 2021-10-11 15:09:38 · 2275 阅读 · 11 评论 -
pcl 欧式聚类分割
聚类方法,通过特征空间确定点与点之间的亲疏程度算法流程:1. 找到空间中某点p,有kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p1,p2,p3....放在类Q里;2. 在 Q里找到一点p1,重复1,找到p22,p23,p24....全部放进Q里;3. 当 Q 再也不能有新点加入了,则完成搜索了。#include <pcl/ModelCoefficients.h>//采样一致性模型头文件#include <pcl/point_type原创 2021-10-11 15:01:31 · 1144 阅读 · 4 评论 -
pcl 区域生长算法(四)
区域生长算法:(聚类)将具有相似性的点云集合起来构成区域。首先对每个需要分割的区域找出一个种子点作为生长的起点,然后将种子点周围邻域中与种子有相同或相似性质的点合并到种子像素所在的区域中。而新的点继续作为种子向四周生长,直到再没有满足条件的像素可以包括进来,一个区域就生长而成了。我把它理解为往水里扔石子后水波向周围扩散一样当扩散到一定的区域后水波就会停止。算法流程:1. 计算法线normal和曲率curvatures,依据曲率升序排序;2. 选择曲率最低的为初始种子点,种子周围的临近点和原创 2021-10-09 19:15:53 · 483 阅读 · 0 评论 -
pcl 区域生长算法(三)
区域生长算法:(聚类)将具有相似性的点云集合起来构成区域。首先对每个需要分割的区域找出一个种子点作为生长的起点,然后将种子点周围邻域中与种子有相同或相似性质的点合并到种子像素所在的区域中。而新的点继续作为种子向四周生长,直到再没有满足条件的像素可以包括进来,一个区域就生长而成了。我把它理解为往水里扔石子后水波向周围扩散一样当扩散到一定的区域后水波就会停止。算法流程: 1. 计算法线normal和曲率curvatures,依据曲率升序排序;2. 选择曲率最低的为初始种子点,种子周围的临近点原创 2021-10-09 17:10:08 · 1229 阅读 · 4 评论 -
pcl 区域生长算法(二)
区域生长算法:(聚类)将具有相似性的点云集合起来构成区域。首先对每个需要分割的区域找出一个种子点作为生长的起点,然后将种子点周围邻域中与种子有相同或相似性质的点合并到种子像素所在的区域中。而新的点继续作为种子向四周生长,直到再没有满足条件的像素可以包括进来,一个区域就生长而成了。我把它理解为往水里扔石子后水波向周围扩散一样当扩散到一定的区域后水波就会停止。算法流程:1. 计算法线normal和曲率curvatures,依据曲率升序排序;2. 选择曲率最低的为初始种子点,种子周围的临近点和原创 2021-10-09 17:01:49 · 610 阅读 · 0 评论 -
pcl 区域生长算法(一)
区域生长算法:(聚类)将具有相似性的点云集合起来构成区域。首先对每个需要分割的区域找出一个种子点作为生长的起点,然后将种子点周围邻域中与种子有相同或相似性质的点合并到种子像素所在的区域中。而新的点继续作为种子向四周生长,直到再没有满足条件的像素可以包括进来,一个区域就生长而成了。我把它理解为往水里扔石子后水波向周围扩散一样当扩散到一定的区域后水波就会停止。算法流程: 1. 计算法线normal和曲率curvatures,依据曲率升序排序;2. 选择曲率最低的为初始种子点,种子周围的临近点原创 2021-10-09 16:54:46 · 3176 阅读 · 3 评论 -
pcl 点云分割
点云分割point cloud segmentation: 根据空间,几何和纹理等特征点进行划分,是同一划分内的点云拥有相似的特征。点云分割的目的是分块,从而便于单独处理。将一些平面、曲面等等进行分割。点云分类point cloud classification:为每个点分配一个语义标记。点云的分类是将点云分类到不同的点云集,同一个点云集具有相似或相同的属性,例如地面,树木,人等。 也叫做点云语义分割。点云分割只是物体识别与分类的其中一个步骤,原始点云可以通过经典的分割方法来进行分割,也原创 2021-10-09 16:23:03 · 2191 阅读 · 0 评论 -
PCL 随机采样一致方法(RANSAC)分割
随机采样一致方法(RANSAC)采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。RANSAC算法假设数据中包含正确数据和异常数据(或称为噪声)。正确数据记为内点(inliers),异常数据记为外点(outliers)。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。该算法核心思想就是随机性和假设性,随机性是根据正确数据出现概率去随机选取抽样数据,根据大数定律,随机性模拟可以近似得到正确结果。假设性是假设选取出的抽样数据都是正确数据,然后用这些正确数原创 2021-09-14 08:49:30 · 2458 阅读 · 5 评论 -
PCL ISS特征点提取
pcl关键点提取,有iss,sift等多种方法,关键点又可以称为兴趣点,关键点要比原始点云文件要少很多点,对于一些原始点云点数特别多的文件,我们不需要过多的点,这样不仅会加大计算机负担,而且对点云的处理也没有好处。通过提取关键点,可以进行物体识别、追踪等相关处理。ISS特征点提取代码如下:#include <iostream>#include <pcl/io/pcd_io.h>//pcd读写类头文件#include <pcl/point_types.h>原创 2021-08-24 16:33:26 · 2344 阅读 · 0 评论 -
Ubuntu20.04 Ubuntu18.04安装pcl点云库
看了很多网上的教程,好多都是安装各种依赖,但是Ubuntu18.04和20.04安装pcl点云库非常方便,只需要一行代码就可以搞定。 sudo apt install libpcl-dev然后又你可以下载一个数据集测试一下,当然我安装的时候使用cpp程序进行测试的。#include <pcl/visualization/cloud_viewer.h>#include <iostream>#include <pcl/io/io.h>#include &原创 2021-08-23 16:51:29 · 4486 阅读 · 17 评论 -
PCL统计滤波:
统计滤波器:统计滤波器主要用于去除明显离群点。 离群点特征在空间中分布稀疏。定义某处点云小于某个密度,既点云无效。计算每个点到其最近的k个点平均距离。则点云中所有点的距离应构成高斯分布。根据给定均值与方差,可剔除方差之外的点。对于图中那些离点云规模较聚集的区域,简称为离群点,统计滤波对这些离群点的处理比较好。 在官方文档里有下面这张图片,可以看出统计滤波器对离群点的处理效果还是比较好的。#include <iostream>#include ...原创 2021-08-21 16:04:55 · 2984 阅读 · 0 评论 -
PCL均匀采样滤波
均匀采样滤波器(下采样):均匀采样滤波基本上等同于体素滤波器,但是其不改变点的位置。下采样后,其点云分布基本均匀,但是其点云的准确度要好于体素滤波,因为没有移动点的位置。均匀采样算法:均匀采样通过构建指定半径的球体对点云进行下采样滤波,将每一个球内距离球体中心最近的点作为下采样之后的点输出。体素滤波是建立立方体,均匀采样是建立一个球总而言之,调用pcl库相关函数就可以对点云进行滤波操作了。#include <iostream>#include <pcl/point原创 2021-08-20 17:11:54 · 2993 阅读 · 1 评论 -
PCL voxelgrid实现
体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能,但是会移动点的位置。此外体素滤波器可以去除一定程度的噪音点及离群点。主要功能是用来进行降采样。(1)它的原理是根据输入的点云,首先计算一个能够刚好包裹住该点云的立方体,然后根据设定的分辨率,将该立方体分割成不同的小立方体。类似于octree里的立方体划分,对于每一个小立方体内的点,计算他们的质心(重心),并用该质心的坐标来近似该立方体内的若干点。(2)ApproximateVoxelGrid的不同在于这种方法是利用每一个小立方体的中心来原创 2021-08-20 16:45:08 · 1824 阅读 · 2 评论 -
PCL体素滤波(在windows+vs2017下实现)
体素滤波器(下采样):体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能,但是会移动点的位置。 此外体素滤波器可以去除一定程度的噪音点及离群点。主要功能是用来进行降采样。(1)它的原理是根据输入的点云,首先计算一个能够刚好包裹住该点云的立方体,然后根据设定的分辨率,将该大 立方体分割成不同的小立方体。对于每一个小立方体内的点,计算他们的质心,并用该质心的坐标来近似该立方体内的若干点。 (2)ApproximateVoxelGrid的不同在于这种方法是利用每一个小立方体的中心来近似该立方体原创 2021-08-18 15:14:13 · 1088 阅读 · 0 评论