![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PCL学习
杉木~
这个作者很懒,什么都没留下…
展开
-
PCL_NDT粗配准+ICP精配准
NDT配准速度较快但精度较低,ICP配准速度较慢但精度较高,因此可结合NDT和ICP算法,提高配准的精度和速度,先由NDT算法进行粗配准获取转换参数,再使用ICP算法结合参数进行精配准。下载了一篇代码如下,缺乏数据集运行,先mark下来,如果路过的大神有数据集,请分享一下,谢谢!#include <iostream>#include <pcl/io/pcd_io.h>...原创 2020-04-02 11:39:41 · 5784 阅读 · 13 评论 -
PCL_SAC_IA粗配准+ICP精配准
ICP配准对初始值依赖极大,因此,常采用特征点匹配获取粗匹配参数作为ICP精配准的初始值,可以极大提高匹配精度和速度。感谢博主peach_blossom代码,但没有数据集运行,先mark下来以后再验证。原文链接:https://blog.csdn.net/peach_blossom/article/details/78506184#include <pcl/registration/i...原创 2020-04-02 11:32:19 · 2758 阅读 · 3 评论 -
PCL_无序点云快速三角化
使用贪婪投影三角化算法对有向点云进行三角化,具体方法是先将有向点云投影到某一局部二维坐标平面内,再在坐标平面内进行平面内的三角化,再根据平面内三位点的拓扑连接关系获得一个三角网格曲面模型。贪婪投影三角化算法原理是处理一系列可以使网格“生长扩大”的点(边缘点),延伸这些点直到所有符合几何正确性和拓扑正确性的点都被连上。该算法的优点是可以处理来自一个或者多个扫描仪扫描得到并且有多个连接处的散乱点云。但...原创 2020-03-18 13:12:44 · 1231 阅读 · 0 评论 -
PCL_平面模型上构建凹(凸)多边形
步骤:滤波预处理,减小分割干扰;创建分割对象,获取平面模型参数;创建投影滤波对象,滤波点云投影到平面模型上,获取投影后点云;创建多边形投影对象,获取多边形边界上的点。代码:#include <pcl/ModelCoefficients.h>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h&g...原创 2020-03-18 12:30:37 · 539 阅读 · 0 评论 -
PCL_最小二乘法点云平滑
不规则数据直接进行曲面重建会造成曲面不光滑或者漏洞,在不能进行额外扫描的情况下,可以通过数据重采样解决这一问题,重采样算法通过对周围数据点进行高阶多项式插值来重建表面缺失部分,也可以用来解决由多个扫描点造成“双墙”伪数据问题。代码:#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <p...原创 2020-03-17 11:31:07 · 3155 阅读 · 0 评论 -
PCL_点云分割_条件欧式聚类点云分割
使用类pcl::ConditionEuclideanClustering实现点云分割,与其他分割方法不同的是该方法的聚类约束条件(欧式距离、平滑度、RGB颜色等)可以由用户自己定义,即当搜索到一个近邻点时,用户可以自定义该邻域点是否合并到当前聚类的条件。代码:#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>...原创 2020-03-17 11:04:24 · 2707 阅读 · 1 评论 -
PCL_点云分割_渐进式形态学滤波地面分割
在点云滤波中,可以基于模型进行平面、球、圆柱等进行分割,现采用渐进式形态学滤波进行地面分割。通过创建pcl::ProgressiveMorphologicalFilter滤波器对象和添加相关参数,如:增加滤波器的窗口大小和高差阈值将建筑、汽车和植被等非地面物体与地面进行分割。代码:#include <iostream>#include <pcl/io/pcd_io.h>...原创 2020-03-16 21:08:12 · 2641 阅读 · 8 评论 -
PCL_点云分割_基于法线微分分割
根据不同尺度下法向量特征的差异性,利用pcl::DifferenceOfNormalsEstimation实现点云分割,在处理有较大尺度变化的场景点云分割效果较好,利用不同支撑半径去估算同一点的两个单位法向量,单位法向量的差定义DoN特征。DoN算法:DoN特征源于观察到基于所给半径估计的表面法向量可以反映曲面的内在几何特征,因此这种分割算法是基于法线估计的,需要计算点云中某一点的法线估计。...原创 2020-03-09 17:10:41 · 2748 阅读 · 3 评论 -
PCL_点云分割_最小割算法
普遍应用于前背景分割,立体视觉、抠图等。GraphCuts图是在普通图的基础上多了2个顶点,这2个顶点分别用符号**”S”和”T”**表示,统称为终端顶点。其它所有的顶点都必须和这2个顶点相连形成边集合中的一部分。所以Graph Cuts中有两种顶点,也有两种边。第一种顶点和边是:第一种普通顶点对应于图像中的每个像素。每两个邻域顶点(对应于图像中每两个邻域像素)的连接就是一条边。这种边也叫n...原创 2020-03-09 15:50:15 · 754 阅读 · 0 评论 -
PCL_点云分割_基于颜色的区域生长分割
该算法与区域生长算法有两点不同第一:用颜色测试代替了法线测试,若两个相邻聚类的平均颜色相差较小,则将两个聚类合并;第二:利用合并算法来控制过分割或欠分割,检查当前聚类的点数量,若小于设定阈值,则将该聚类通邻近聚类合并。部分代码:(1)直通滤波; pcl::PassThrough<pcl::PointXYZRGB> pass; pass.setInputCloud(cloud...原创 2020-03-06 22:32:47 · 1606 阅读 · 0 评论 -
PCL_点云分割_基于区域生长分割
使用RegionGrowing类实现区域生长分割,算法的输出是一个聚类集合。算法的流程:设立空的种子点序列、空的聚类数组 -> 初始种子点加入种子序列 -> 搜索邻域点 -> 若领域点法线与当前种子点法线的夹角小于阈值,则加入当前区域 -> 领域点曲率值小于曲率阈值,则加入种子点序列 -> 删除当前种子点,利用新种子点生长,直到种子序列点被清空。利用曲率值从小到...原创 2020-03-06 16:23:38 · 1846 阅读 · 2 评论 -
PCL_点云分割_欧式聚类提取
使用EuclideanClusterExtraction类采用欧式聚类对三维点云组成的场景进行分割。部分代码说明:(1)对点云进行滤波重采样预处理,采用平面分割模型对点云进行分割处理,提取平面上的点集; pcl::VoxelGrid<pcl::PointXYZ> vg; pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filter...原创 2020-03-06 14:57:45 · 1730 阅读 · 1 评论 -
PCL_点云分割_圆柱体模型分割
采用随机采样一致性估计从带有噪声的点云中提取一个圆柱体模型,程序流程如下:过滤掉远于1.5米的点估计每个点表面法线分割出平面模型(桌面)分割出圆柱体模型(水杯)代码说明:(1)定义对象pcl::PCDReader reader;pcl::PassThrough<PointT> pass;pcl::NormalEstimation<PointT, pcl::N...原创 2020-03-05 20:57:30 · 1719 阅读 · 3 评论 -
PCL_估计点云表面法线
法线估计类NormalEstimation调用程序内部执行以下操作:对点云P中的每个点p得到p点的最近邻元素计算p点的表面法线n检查n的方向是否一致指向视点,如果不是则翻转代码:#include <pcl/io/io.h>#include <pcl/io/pcd_io.h>#include <pcl/features/integral_image_...原创 2020-03-04 20:28:01 · 365 阅读 · 0 评论 -
PCL_两两点云获取设备自动标定
还没有自己测试,在郭浩老师的书中看见了这个例程,先记下来。应用RANSAC算法实现基于球型靶标的自动标定方法,连个深度摄像头获取的点云数据中检测并识别出各个圆球,检测识别出3个圆球后,拥有两组对应的3个坐标点,根据变换矩阵求解方程,估计出变换矩阵,实现双深度摄像头的标定。包括数据获取模块、直通滤波模块、平面检测及删除模块、圆球检测模块、刚体变换矩阵估计模块。(1)数据获取模块从不同方向采集...原创 2020-01-17 19:32:04 · 1044 阅读 · 3 评论 -
PCL_RANSAC随机采样一致性
一:RANSAC随机采样一致性流程:样本 -> 样本子集 -> 模型参数(最小方差估计算法)-> 样本点与模型偏差 -> (1)若小于阈值:局内点 -> 记录个数;(2)若大于阈值:局外点重复过程,迭代末尾依据期望的误差率、best_ninliers、总样本个数、当前迭代次数计算一个结束评判因子,其中inliers个数最多时对应的模型参数为最佳模型参数。缺点:...原创 2020-01-17 16:35:10 · 498 阅读 · 0 评论 -
PCL_Harris关键点提取
Harris算子是常见的特征检测算子,既可以提取角点,也可以提取边缘点,利用点云法向量信息。主要步骤:(1)创建Harris关键点估计对象,创建Harris_keypoints对象用于保存Harris关键点。注意point类型为:pcl::PointXYZI,必须包含强度信息;pcl::PointCloud<pcl::PointXYZI>::Ptr Harris_keypoint...原创 2020-01-16 19:18:20 · 1543 阅读 · 2 评论 -
PCL_SIFT关键点提取
SIFT:尺度不变特征变换主要步骤:(1)创建SIFT关键点估计对象,并输入点云;pcl::SIFTKeypoint<pcl::PointXYZ, pcl::PointWithScale> sift;//创建sift关键点检测对象pcl::PointCloud<pcl::PointWithScale> result;sift.setInputCloud(cloud...原创 2020-01-16 17:23:27 · 929 阅读 · 0 评论 -
PCL_NARF关键点提取
关键点 + 局部特征描述子 = 关键点描述子 -> 加快识别、追踪。(NARF)法向对齐径向特征步骤:遍历深度图像点,有深度突变位置进行边缘提取;测度表面变化的系数以及变化的主方向;主方向计算兴趣值;对兴趣值进行平滑;无最大值压缩,获得关键点。代码:(1)创建RangeImageBorderExtractor对象,用来提取深度图像边缘;pcl::RangeImageB...原创 2020-01-16 17:08:18 · 651 阅读 · 0 评论 -
PCL_几种点云滤波方法
通常点云数据很大,同时带有噪声和离群点,在点云分析之前需要先进行滤波处理,学习郭浩老师的点云处理,总结几种滤波方法。1. 直通滤波器// 创建滤波器对象 pcl::PassThrough<pcl::PointXYZ> pass; pass.setInputCloud (cloud); pass.setFilterFieldName ("z"); pass.setFi...原创 2020-01-15 20:11:29 · 3363 阅读 · 0 评论 -
PCL_ oc tree搜索操作
八叉树是一种用于管理稀疏3D数据的树状数据结构,每个内部节点都正好有八个子节点,八叉树搜索操作包含 “体素内近邻搜索”、“K近邻搜索”、“半径内近邻搜索”。建立o-c tree步骤设定最大递归深度找出场景的最大尺寸,并以此尺寸建立第一个立方体依序将单位元元素丢入能被包含且没有子节点的立方体若没有达到最大递归深度,就进行细分八等份,再将立方体所装的单位元元素全部分担给八个子立方体若子立...原创 2020-01-10 18:27:08 · 363 阅读 · 0 评论 -
PCL_k-d tree近邻搜索
PCL中k-d tree库提供看k-d tree数据结构,基于FLANN进行进行快速最近邻搜索,在匹配、特征描述子计算、邻域特征提取中的基础核心操作。建立k-d tree树的步骤:建立根节点选取方差最大的特征作为分割特征选择该特征的中位数作为分割点特征<中位数放在左边,>中位数放在右边递归2-4,所有数据被建立k-d treek-d tree 紧邻搜索一种是范围查询...原创 2020-01-10 17:12:55 · 1500 阅读 · 0 评论