PCL
Rson的学习笔记
始终保持学习的态度
展开
-
无序点云数据集的空间变换检测
// 无序点云数据集的空间变换检测// #include "stdafx.h"#include <pcl/point_cloud.h>#include <pcl/octree/octree.h>#include <iostream>#include <vector>#include <ctime>intmai...原创 2019-01-28 10:19:28 · 1130 阅读 · 2 评论 -
PCL从点云创建深度图像
构造点云数据pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt; pointcloud; for (float y = -0.5f; y &amp;lt;= 0.5f; y += 0.01f) { for (float z = -0.5f; z &amp;lt;= 0.5f; z += 0.01f) { pcl:原创 2019-01-28 10:20:51 · 5440 阅读 · 5 评论 -
PCL拾取屏幕上三维点坐标
PCL中通过注册回调函数实现点云坐标选取。主要使用的函数: registerPointPickingCallback() PCL官方代码: http://www.pointclouds.org/documentation/tutorials/ground_based_rgbd_people_detection.php主要实现代码如下:#include &amp;lt;pcl\io\pcd_i...原创 2019-01-28 13:09:36 · 6716 阅读 · 14 评论 -
PCL快速点特征直方图配准算法
已知点云P中有n个点,那么它的点特征直方图(PFH)的理论计算复杂度是O(nk^2) , 其中k是点云P中每个点p计算特征向量时考虑的邻域数量。对于实际应用中,密集点云的点特征直方图(PFH)的计算,是十分耗时的。本博文介绍一种快速快速点特征直方图FPFH(Fast Point Feature Histograms)算法。FPFH把算法的计算复杂度降低到了O(nk) ,但是任然保留了PFH大部分的...原创 2019-01-28 13:09:19 · 7201 阅读 · 6 评论 -
PCL交互迭代最近点方法
代码出处:http://pointclouds.org/documentation/tutorials/interactive_icp.php#interactive-icp交互迭代最近法允许用户每次按下“空格”键,一次ICP迭代算法执行,并更新视图。 此程序主要步骤:1、导入点云数据PCL提供IO模块直接读入点云文件。pcl::io::loadPCDFile(&quot;drag...原创 2019-01-28 10:20:32 · 1399 阅读 · 0 评论 -
PCL库类结构
PCL完全是一个模块化的现代C++模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、QHull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。 - Boost:用于共享指针和线程; - Eigen:用于矩阵、向量等数据操作; - FLANN:用于在KD树模块中快速近邻搜索; - VTK:在可视化模...转载 2018-04-17 20:06:40 · 1038 阅读 · 0 评论 -
PCL实现点云框选功能
前言在进行PCL开发时,需要对点进行操作,如删除离群点、噪声点;获取点三维坐标等。单一的选点功能效率低下,掌握点云的框选功能有利于进一步提高应用的交互功能。本博文将一步步介绍如何在PCL中实现点云框选功能。PCL函数说明:点云的框选功能回调函数: pcl::visualization::AreaPickingEvent::AreaPickingEvent ()成员函数 bo...原创 2019-01-28 13:09:00 · 5674 阅读 · 6 评论 -
PCL采样一致性算法
代码出处: http://pointclouds.org/documentation/tutorials/random_sample_consensus.php#random-sample-consensus算法介绍:https://www.cnblogs.com/li-yao7758258/p/6477007.html 直接记录代码,供后续参考学习。/** Filename: ...原创 2019-01-28 10:20:12 · 1223 阅读 · 0 评论 -
PCL--PCLVisualizer类可视化方法
代码出处:http://pointclouds.org/documentation/tutorials/pcl_visualizer.php#pcl-visualizer/** Filename: pcl_visualizer_demo.cpp** Date: 2018-4-19**Description:**/#include &quot;stdafx.h&quot;#include &amp;...原创 2019-01-28 10:19:55 · 4685 阅读 · 0 评论 -
PCL正态分布变换(Normal Distributions Transform)进行点云配准
直接记录代码void NormTran::run(){ readfile(&quot;bunny_0.asc&quot;, &quot;bunny_1.asc&quot;);//加载目标点云数据 //滤波 pcl::ApproximateVoxelGrid&amp;lt;pcl::PointXYZ&amp;gt; approximate_voxel_filter;原创 2019-01-28 13:10:44 · 3506 阅读 · 0 评论 -
PCL_PCLPlotter类学习教程
绘制多项式曲线图 //定义绘图器 pcl::visualization::PCLPlotter * plotter = new pcl::visualization::PCLPlotter(); //函数方程:y = 2 + 3x + x^2 std::vector&amp;lt;double&amp;gt; func1(3, 0); func1[0] = 2; ...原创 2019-01-28 13:08:13 · 1089 阅读 · 0 评论 -
PCL点云滤波算法实现
通过非接触法测量设备获取物体的点云数据时,由于测量设备的精度,环境因素和被测物体的表面性质的影响,点云数据中不可避免会出现一些噪声点,噪声点对后续的点云拼接、曲面重构影响十分大。必须对其进行去噪处理。PCL中点云滤波模块提供了很多灵活实用的滤波处理算法,例如:双边滤波,高斯滤波,条件滤波,直通滤波,基于随机采样一致性滤波等等。 1、体素网格滤波VoxelGrid//主要代码pcl::P...原创 2019-01-28 13:10:58 · 6147 阅读 · 1 评论 -
PCL学习笔记--利用矩阵对点云进行刚体变换(ICP)
利用矩阵对点云进行刚体变换 在这篇教程中,我们会学习如何用一个4*4的矩阵对点云进行变换。我们会加载一个点云,然后对其进行刚体变换(旋转加平移),并可视化结果,最后通过ICP算法对点云进行配准。**程序**/** 功能: 点云刚体变换* 头文件: #include &amp;lt;pcl/common/transforms.h&amp;gt;* 功能函数: pcl::transformPoint...原创 2019-01-28 13:11:55 · 11644 阅读 · 5 评论 -
PCL实现泊松表面重建
简介: 泊松表面重建是一种隐函数的重构方法。通过定义模型内部的值大于零, 模型外部它的值小于零, 然后提取值为零的等值面, 直接地重构逼近表面。 泊松表面重建的算法融合了全局和局部方法的优点,采取隐性拟合的方式,通过求解泊松方程来取得点云模型所描述的表面信息代表的隐性方程,通过对该方程进行等值面提取,从而得到具有几何实体信息的表面模型。优点在于,重建出的模型具有水密性的封闭特征,具有良好的几何...原创 2019-01-28 13:11:46 · 9835 阅读 · 3 评论 -
PCL贪婪投影三角算法曲面重建
/** Filename: recon_greedyProjection** Date: 2018-3-29**Description:**/#include &quot;stdafx.h&quot;#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;#include &am原创 2019-01-28 13:11:36 · 3036 阅读 · 0 评论 -
PCL 点云对象和点云指针对象的之间的变换
最近研究PCL点云库时发现了一个奇怪的现象,就是在调用一些功能函数()时,发现点云的类型总是报错。本人对指针没有过多的研究,现将出现的问题总结如下:1、点云对象的声明pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt; cloud;//点云对象pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt;::Ptr cloudPtr (n原创 2019-01-28 13:10:26 · 4209 阅读 · 2 评论 -
PCD文件读取并显示
前面一段时间一直在写论文,好久都没有进行编程学习,突然觉得无从下手了,翻开以前写的代码练练手,顺便记录下来以便以后自己可以快速熟悉。一个简单的点云pcd文件读取,并可视化。/** Filename: pcd_read ** Date: 2018-3-27 **Description: Read PCD files & point cloud visualization...原创 2018-03-27 13:31:59 · 21699 阅读 · 14 评论 -
PCL点云类型之间相互转换
在进行PCL学习的过程中,最常见的点云类型就是pcl::PointCloud &amp;lt; pcl::PointXYZ &amp;gt;,随着不断学习,又遇到了pcl::PCLPointCloud2::Ptr这种点云的类型,因此弄清两者的转换关系十分有必要。 PCL中有两个函数直接解决了两者的转换关系: 1.pcl::fromPCLPointCloud2() 2.pcl::toPCLPo...原创 2019-01-28 13:10:09 · 4572 阅读 · 1 评论 -
PCL迭代最近点算法(ICP)的C++实现
简介: 在维基百科中是这样介绍迭代最近点算法。迭代最近点(ICP)是一种用于最小化两点云之间差异的算法。给定P、Q两个点集,求解旋转矩阵R和平移矩阵T使得min{distance(P,Q)}. C++算法流程图: 四元数求解方法 C++代码/**** Filename:icp.h** Copyright (c) 2017-2018 ** Author:Rson...原创 2019-01-28 13:11:26 · 4984 阅读 · 4 评论 -
PCL进行法向估计
PCL关于法向操作的相关代码void PCLICP::NormalEstimation(pcl::PointCloud&amp;lt;pcl::PointXYZ&amp;gt;::Ptr cloud){ //创建法线估计向量 pcl::NormalEstimation&amp;lt;pcl::PointXYZ, pcl::Normal&amp;gt; ne; ne.setInputCloud(clo..原创 2019-01-28 13:11:13 · 1240 阅读 · 0 评论 -
PCL从距离图像提取NARF关键点
今天学习了PCL开源库中NARF关键点提取的相关代码,记录下来,以便后续查阅。代码出处:PCL官方文档#include &quot;stdafx.h&quot;#include &amp;lt;iostream&amp;gt;#include &amp;lt;boost\thread\thread.hpp&amp;gt;#include &amp;lt;pcl\原创 2019-01-28 13:08:38 · 758 阅读 · 0 评论