
PCL
MrLi1
愿生命中有够多的云翳来造就一个美丽的黄昏
展开
-
基于Qt、vtk和pcl实现在Qt编写的UI上操作点云
通过深度学习算法学习点云块的位置和姿态,首先需要通过标注工具把点云块的位置和姿态标注出来,然后送到深度学习模型中进行学习,但是现在市面上只有2D图像的标注工具,没有开源的3D标注工具,这里介绍下3D标注工具的简单实现步骤1.相机采集2D图像和3D图像2.通过2D标注工具(labelme)标注2D图像3.3D标注工具读取2D标注结果,然后通过算法分割3D点云,通过vtk显示在UI上htt...原创 2020-02-04 10:14:40 · 1274 阅读 · 1 评论 -
根据2D图像mask分割点云块
前段时间做项目,其中一个步骤是根据深度学习识别出来的mask分割mask对应的点云块,然后计算点云块的位置和姿态,以供机器人抓取这里点云和mask都是mat格式,根据2D图像的mask分割点云块的关键函数式opencv中的copyTo函数,然后把分割后的mat格式的图像转换成pcl,转换方法参考https://mp.youkuaiyun.com/postedit/104144040...原创 2020-02-02 14:31:05 · 2076 阅读 · 7 评论 -
PCL点云分割-欧式距离分割
欧几里得算法使用邻居之间距离作为判定标准,而区域生长算法则利用了法线,曲率,颜色等信息来判断点云是否应该聚成一类找到空间中某点p10,有kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p12,p13,p14....放在类Q里在Q\p10里找到一点p12,重复1在Q\p10,p12找到一点,重复1,找到p22,p23,p24....全部放进Q里当...原创 2020-02-02 14:19:09 · 1806 阅读 · 0 评论 -
PCL点云配准-ICP
标准ICP算法是一种点集对点集配准方法(基于点-点距离的算法),标准的ICP算法需要粗配,满足距离足够近这一条件之后才能进行精确配准。选取目标点云P和源点云Q,按照一定的约束条件,找到最邻近点(pi,qi),然后计算出最优R和t(旋转和平移),使得误差函数最小,误差函数E(R,t):基本算法流程:1、在目标点云P中选取点集pi。2、在源点云Q中选取对应的点集qi,使得||qi-...原创 2020-02-02 13:45:08 · 709 阅读 · 0 评论 -
opencv Mat类型转换成PCL类型
pcl::PointCloud<pcl::PointXYZ>::Ptr ImageUtils::cvMatToPcl(cv::Mat &mat) { pcl::PointCloud<pcl::PointXYZ>::Ptr cloud = boost::shared_ptr<pcl::PointCloud<pcl::PointX...原创 2020-02-02 13:41:14 · 1384 阅读 · 0 评论 -
PCL点云分割-区域生长法
我概括的来说,就是从曲率小的面播种,从种子的位置出发,开始往四周搜索点,然后比对点于点之间的曲率和法线方向,如果差距小于阈值就视为同一个cluster。如果一个cluster无法再蔓延,在剩下的点云里再找曲率小的面播种,然后继续重复直到遍历完毕。基于颜色的区域生长分割 :原理上和基于曲率,法线的分割方法是一致的。只不过比较目标换成了颜色,去掉了点云规模上限的限制。可以认为,同一个颜色且挨得近,...原创 2020-02-02 10:33:51 · 2837 阅读 · 2 评论 -
PCL点云配准-正态分布变换
正态分布变换算法是一个配准算法(确定两个大型点云(都超过100,000个点)之间的刚体变换),它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快。配准算法提供了点云配准变换的初始估:虽然算法不指定初值也可以运行,但是有了它,易于得到更好的结果,尤其是当两块点云差异较大时。配准分数通过计算output...原创 2018-11-14 15:51:09 · 768 阅读 · 0 评论 -
PCL提取深度图像边界
#include <iostream>#include <boost/thread/thread.hpp>#include <pcl/range_image/range_image.h>#include <pcl/io/pcd_io.h>#include <pcl/visualization/range_image_visualize...原创 2018-11-14 15:45:15 · 1822 阅读 · 0 评论 -
PCL通过有序点云创建深度图像
#include <iostream>#include <boost/thread/thread.hpp>#include <pcl/common/common_headers.h>#include <pcl/range_image/range_image.h> //关于深度图像的头文件#include <pcl/io/pcd_...原创 2018-11-14 15:42:06 · 1102 阅读 · 0 评论 -
PCL获得深度图像
//如何获得深度图像#include <pcl/range_image/range_image.h> //深度图像的头文件int main (int argc, char** argv) { pcl::PointCloud<pcl::PointXYZ> pointCloud; //定义点云的对象 // 循环产生点云的数据 for (flo...原创 2018-11-14 15:40:26 · 770 阅读 · 0 评论 -
PCL中的OCTree
#include <iostream>#include<pcl/point_cloud.h>#include<pcl/octree/octree_search.h>#include <vector>#include <ctime>#include <boost/concept_check.hpp>int mai...原创 2018-11-10 18:47:35 · 809 阅读 · 0 评论 -
PCL使用VoxelGrid filter对点云进行下采样
体素的概念类似于像素,使用AABB包围盒将点云数据体素化,一般体素越密集的地方信息越多,噪音点及离群点可通过体素网格去除。另一方面如果使用高分辨率相机等设备对点云进行采集,往往点云会较为密集。过多的点云数量会对后续分割工作带来困难。体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能。VoxelGrid类通过输入的点云数据创建一个三维体素栅格,容纳后每个体素内用体素中所有点的重心来近似显...原创 2018-11-10 18:44:45 · 3338 阅读 · 2 评论 -
PCL中的KDTree
k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。K-D树是二进制空间分割树的特殊的情况。 一个KDTree的例子 上图的树就是一棵KDTree,形似二叉搜索树,其实KDTree就是二叉搜索树的变种。这里的K = 3.首先来看下树的组织原则。将每一个元组按0排序(第一项序号为...转载 2018-11-10 18:01:10 · 3998 阅读 · 0 评论 -
PCL点云读取和显示
#include <iostream> //标准输入输出流#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件#include <pcl/point_types.h> //PCL对各种格式的点的支持头文件#include <pcl/visualization/cloud_viewer.h> i...原创 2018-11-10 17:53:03 · 12205 阅读 · 0 评论 -
PCL点云条件滤波
条件滤波器通过设定滤波条件进行滤波,有点分段函数的味道,当点云在一定范围则留下,不在则舍弃。#include <iostream>#include <pcl/point_types.h>#include <pcl/filters/radius_outlier_removal.h>#include <pcl/filters/conditiona...原创 2018-11-10 17:43:01 · 3338 阅读 · 1 评论 -
PCL点云统计滤波
对每个点的邻域进行一个统计分析,并修剪掉一些不符合一定标准的点,稀疏离群点移除方法基于在输入数据中对点到临近点的距离分布的计算,对每一个点,计算它到它的所有临近点的平均距离,假设得到的结果是一个高斯分布,其形状是由均值和标准差决定,平均距离在标准范围之外的点,可以被定义为离群点并可从数据中去除。#include <iostream>#include <pcl/io/pcd...原创 2018-11-10 17:41:25 · 2982 阅读 · 0 评论 -
PCL点云直通滤波
对于在空间分布有一定空间特征的点云数据,比如使用线结构光扫描的方式采集点云,沿z向分布较广,但x,y向的分布处于有限范围内。此时可使用直通滤波器,确定点云在x或y方向上的范围,可较快剪除离群点,达到第一步粗处理的目的。#include <iostream>#include <pcl/point_types.h>#include <pcl/filters...原创 2018-11-10 17:38:48 · 839 阅读 · 0 评论 -
PCL点云滤波(直通滤波器与统计滤波器)
利用PCL中的直通滤波器和统计滤波器对原始点云数据进行滤波处理。通过直通滤波器将Z轴方向上范围之外的点滤除(在背景与前景有一定距离的情况下,可以除掉背景),再利用统计滤波器去除离群点(噪声点)。 滤波效果视数据和滤波参数而定。#include <pcl/common/common_headers.h>#include <iostream>#include <...原创 2018-11-10 17:36:50 · 1868 阅读 · 0 评论