# 机器人三维视觉
[三维计算机视觉 pcl 滤波分割聚类关键点 深度学习 点云卷积网络](https://www.cnblogs.com/ironstark/category/759418.html)
[GeometryHub(几何空间) 点云处理库 ](http://geometryhub.net/myspace)
## 使用PCL点云库
## 命令行安装 编译好的二进制文件
仓库
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
## 【1】源码安装
安装依赖
Boost,Eigen,FlANN,VTK,OpenNI,QHull
sudo apt-get install build-essential libboost-all-dev
sudo apt-get install libvtk5-dev libopenni-dev
Vtk,(visualization toolkit 可视化工具包)是一个开源的免费软件系统,
教程 http://blog.csdn.net/www_doling_net/article/details/8763686
主要用于三维计算机图形学、图像处理和可视化。
它在三维函数库OpenGL的基础上采用面向对象的设计方法发展而来,且具有跨平台的特性。
Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的
VTK面向对象,含有大量的对象模型。
源对象是可视化流水线的起点,
映射器(Mapper)对象是可视化流水线的终点,是图形模型和可视化模型之间的接口.
回调(或用户方法): 观察者监控一个对象所有被调用的事件,
如果正在监控的一个事件被触发,一个与之相应的回调函数就会被调用。
图形模型:
Renderer 渲染器,vtkRenderWindow 渲染窗口
可视化模型:
vtkDataObject 可以被看作是一个二进制大块(blob)
vtkProcessObject 过程对象一般也称为过滤器,按照某种运算法则对数据对象进行处理
FLANN介绍
FLANN库全称是Fast Library for Approximate Nearest Neighbors,
它是目前最完整的(近似)最近邻开源库。
http://www.cs.ubc.ca/research/flann/uploads/FLANN/flann_manual-1.8.4.pdf
去下载 http://www.cs.ubc.ca/research/flann/#download
linux下安装
sudo apt-get install libeigen3-dev
定位安装位置
locate eigen3
sudo updatedb
//注意 PCL_ROS 其实引用了PCL库,不要随意编译PCL库,可能导致PCL-ROS不能使用!
// PCL自动安装的时候与C11不兼容,如果想使用C11,需要自己编译PCL库,
//并在PCL编译之前的CMakelist.txt中加入C11的编译项!
//所以 ros项目中如果使用 支持 c++11
// 那么使用pcl时pcl必须源码编译,并且需要修改pcl源码的 CMakelist.txt 加入支持c++11的选项
//# 添加c++ 11标准支持
//set( CMAKE_CXX_FLAGS "-std=c++11" )
下载源码
git clone https://github.com/PointCloudLibrary/pcl pcl-trunk
cd pcl-trunk && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
make -j2
sudo make -j2 install
############################################################
####################################################
## 【2】使用
####################################
## 【A】点云滤波 /filters
#####################################
点云滤波,顾名思义,就是滤掉噪声。原始采集的点云数据往往包含大量散列点、孤立点,
http://blog.csdn.net/qq_34719188/article/details/79179430
其类似于信号处理中的滤波,单实现手段却和信号处理不一样,主要有以下几方面原因:
点云不是函数,无法建立横纵坐标之间的关系
点云在空间中是离散的,不像图像信号有明显的定义域
点云在空间中分布广泛,建立点与点之间的关系较为困难
点云滤波依赖于集合信息而非数值信息
点云滤波方法主要有:
直通滤波器 pcl::PassThrough<pcl::PointXYZ> pass、
体素格滤波器 pcl::VoxelGrid<pcl::PCLPointCloud2> sor;、
统计滤波器 pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;、
半径滤波器 pcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem;
双边滤波 pcl::BilateralFilter<pcl::PointXYZ> bf;
该类的实现利用的并非XYZ字段的数据进行,
而是利用强度数据进行双边滤波算法的实现,所以在使用该类时点云的类型必须有强度字段,否则无法进行双边滤波处理,
立方体滤波 pcl::CropBox< PointT>
过滤掉在用户给定立方体内的点云数据
封闭曲面滤波 pcl::CropHull< PointT>
过滤在给定三维封闭曲面或二维封闭多边形内部或外部的点云数据
空间剪裁:
pcl::Clipper3D<pcl::PointXYZ>
pcl::BoxClipper3D<pcl::PointXYZ>
pcl::CropBox<pcl::PointXYZ>
pcl::CropHull<pcl::PointXYZ> 剪裁并形成封闭曲面
卷积滤波:实现将两个函数通过数学运算产生第三个函数,可以设定不同的卷积核
pcl::filters::Convolution<PointIn, PointOut>
pcl::filters::ConvolvingKernel<PointInT, PointOutT>
随机采样一致滤波
等,
通常组合使用完成任务。
-----------------------------------------------------------------------------
-----------------------------------------------------------------
### a. 直通滤波器 PassThrough 直接指定保留哪个轴上的范围内的点
[直通滤波器 PassThrough](Basic/Filtering/PassThroughfilter.cpp)
#include <pcl/filters/passthrough.h>
如果使用线结构光扫描的方式采集点云,必然物体沿z向分布较广,
但x,y向的分布处于有限范围内。
此时可使用直通滤波器,确定点云在x或y方向上的范围,
可较快剪除离群点,达到第一步粗处理的目的。
// 创建点云对象 指针
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>);
// 原点云获取后进行滤波
pcl::PassThrough<pcl::PointXYZ> pass;// 创建滤波器对象
pass.setInputCloud (cloud);//设置输入点云
pass.setFilterFieldName ("z");//滤波字段名被设置为Z轴方向
pass.setFilterLimits (0.0, 1.0);//可接受的范围为(0.0,1.0)
//pass.setFilterLimitsNegative (true);//设置保留范围内 还是 过滤掉范围内
pass.filter (*cloud_filtered); //执行滤波,保存过滤结果在cloud_filtered
----------------------------------------------------------------------------------
----------------------------------------------------------------------------
### b.体素格滤波器VoxelGrid 在网格内减少点数量保证重心位置不变 PCLPointCloud2()
[体素格滤波器VoxelGrid](Basic/Filtering/VoxelGrid_filter.cpp)
下采样 同时去除 NAN点
注意此点云类型为 pcl::PCLPointCloud2 类型 blob 格子类型
#include <pcl/filters/voxel_grid.h>
// 转换为模板点云 pcl::PointCloud<pcl::PointXYZ>
pcl::fromPCLPointCloud2 (*cloud_filtered_blob, *cloud_filtered);
如果使用高分辨率相机等设备对点云进行采集,往往点云会较为密集。
过多的点云数量会对后续分割工作带来困难。
体素格滤波器可以达到向下采样同时不破坏点云本身几何结构的功能。
点云几何结构 不仅是宏观的几何外形,也包括其微观的排列方式,
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上 建立起来的大型跨平台开源C++编程库, 它实现了大量点云相关的通用算法和高效数据结构, 涉及到 点云获取、 滤波、 分割、 配准、 检索、 特征提取、 识别、 追踪、 曲面重建、 可视化等。 支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。 如果说OpenCV是2D信息获取与处理的结晶, 那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,
资源推荐
资源详情
资源评论
收起资源包目录
PCL(Point Cloud Library) (119个子文件)
pCLVisualizer.cpp 23KB
correspondence_grouping.cpp 23KB
hypothesis_Ver_Object_Rec.cpp 23KB
pairwise_incremental_registration.cpp 15KB
narf_feature.cpp 14KB
narf_keypoint_extraction.cpp 13KB
pcl_view_test.cpp 10KB
extract_borders_from_range_images.cpp 10KB
interactive_icp.cpp 9KB
supervoxel_clustering.cpp 9KB
range_image_visualization.cpp 9KB
range_image_visualization.cpp 8KB
pcd2ply.cpp 8KB
bspline_fitting.cpp 8KB
octree_Point_Cloud_Compression.cpp 8KB
implicit_shape_model.cpp 8KB
clusters_segmentation.cpp 7KB
cylinder_segmentation.cpp 7KB
PFH_features.cpp 7KB
Difference_of_Normals_in_diff_radis__Segmentation.cpp 7KB
normal_3d_feature.cpp 7KB
vFH_Feature.cpp 7KB
iterative_closest_point.cpp 7KB
transformPointC.cpp 7KB
normal_distributions_transform.cpp 7KB
bounding_boxes_fea.cpp 6KB
kdTree_search.cpp 6KB
harris3d_keypoint_extraction.cpp 6KB
octree_search.cpp 6KB
alignment_prerejective.cpp 6KB
random_sample_consensus.cpp 6KB
region_growing_normal_cur.cpp 6KB
fasterPFH_features.cpp 5KB
planar_segmentation.cpp 5KB
min_Cut_Based_Segmentation.cpp 5KB
concatenate_clouds.cpp 5KB
rOPSEstimation.cpp 5KB
recon_poisson.cpp 5KB
octree_change_detection.cpp 5KB
resampling.cpp 4KB
VoxelGrid_filter.cpp 4KB
extract_indices_segment_filter.cpp 4KB
conditional_removal_filter.cpp 4KB
Globally_Aligned_Spatial_Distribution.cpp 4KB
convex_hull2d.cpp 4KB
statistical_removal_filter.cpp 4KB
recon_marchingCubes.cpp 4KB
greedy_projection.cpp 4KB
range_image.cpp 4KB
project_inliers_filter.cpp 3KB
uniform_sam_keypoint.cpp 3KB
PassThroughfilter.cpp 3KB
color_based_region_growing_segmentation.cpp 3KB
cloud_viewer.cpp 3KB
normal_estimation_using_integral_images.cpp 3KB
radius_outlier_filter.cpp 3KB
compute_centroid.cpp 3KB
ModelOutlierRemoval.cpp 3KB
ProgressiveMorphologicalFilter_segmentation.cpp 2KB
openni_grabber.cpp 2KB
extract_indices.cpp 1KB
remove_nan_from_point_cloud.cpp 1KB
readme.md 84KB
4_点云分割与分类 Segmentation.md 36KB
readme.md 36KB
3_点云特征和特征描述 Features.md 35KB
readme.md 35KB
1_点云滤波filter.md 22KB
0_pcl点云库基本介绍.md 22KB
readme.md 22KB
2_pcl点云关键点 Keypoints .md 22KB
readme.md 22KB
5_点云配准 Registration.md 20KB
readme.md 20KB
readme.md 13KB
readme.md 8KB
6_点云识别Recognition.md 8KB
readme.md 8KB
PCL中点云BoundingBox包围盒绘制(基于PCA).md 7KB
readme.md 7KB
readme.md 6KB
readme.md 5KB
pcl::getMinMax3D函数说明笔记.md 2KB
readme.md 98B
readme.md 48B
8_深度学习在三维点云中的应用.md 42B
7_pcl点云应用.md 18B
readme.md 18B
global_color.pcd 8.14MB
scene.pcd 3.37MB
milk_cartoon_all_small_clorox.pcd 2.43MB
table_scene_mug_stereo_textured.pcd 1.65MB
capture0005.pcd 978KB
capture0004.pcd 973KB
capture0003.pcd 956KB
capture0001.pcd 950KB
capture0002.pcd 942KB
points.pcd 804KB
room_scan2.pcd 592KB
room_scan1.pcd 590KB
共 119 条
- 1
- 2
资源评论
智达教育
- 粉丝: 2w+
- 资源: 279
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功