【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

有一种滤波方法,被称之为基于体素网格的下采样滤波。虽然名字听上去有点拗口,其实功能并不复杂。它的中心思想就是在一个网格的空间内,只能有一个点。这么做的一个好处就是,对于一些稠密空间的点云,可以极大地降低数据的个数,这对减少计算量来说是大有裨益的。原来的代码在这https://pcl.readthedocs.io/projects/tutorials/en/master/voxel_grid.html#voxelgrid。这里为了查看效果,所以添加了一些额外代码。

1、准备voxel_grid.cpp代码

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/visualization/cloud_viewer.h>int
main ()
{pcl::PCLPointCloud2::Ptr cloud (new pcl::PCLPointCloud2 ());pcl::PCLPointCloud2::Ptr cloud_filtered (new pcl::PCLPointCloud2 ());// Fill in the cloud datapcl::PCDReader reader;// Replace the path below with the path where you saved your filereader.read ("table_scene_lms400.pcd", *cloud); // Remember to download the file first!std::cerr << "PointCloud before filtering: " << cloud->width * cloud->height << " data points (" << pcl::getFieldsList (*cloud) << ")." << std::endl;// Create the filtering objectpcl::VoxelGrid<pcl::PCLPointCloud2> sor;sor.setInputCloud (cloud);sor.setLeafSize (0.01f, 0.01f, 0.01f);sor.filter (*cloud_filtered);std::cerr << "PointCloud after filtering: " << cloud_filtered->width * cloud_filtered->height << " data points (" << pcl::getFieldsList (*cloud_filtered) << ")." << std::endl;pcl::PCDWriter writer;writer.write ("table_scene_lms400_downsampled.pcd", *cloud_filtered, Eigen::Vector4f::Zero (), Eigen::Quaternionf::Identity (), false);pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered_blob(new pcl::PointCloud<pcl::PointXYZ>);pcl::fromPCLPointCloud2(*cloud_filtered, *cloud_filtered_blob);viewer.showCloud(cloud_filtered_blob);while (!viewer.wasStopped()){}return (0);
}

2、代码分析

整个代码里面,最重要的其实就是 sor.setLeafSize (0.01f, 0.01f, 0.01f);这句话。

3、准备CMakeLists.txt文件

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)project(voxel_grid)find_package(PCL 1.2 REQUIRED)include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})add_executable (voxel_grid voxel_grid.cpp)
target_link_libraries (voxel_grid ${PCL_LIBRARIES})

4、生成sln文件,开始编译

mkdir build & cd build & cmake ..

不出意外,应该可以编译成功的,

5、运行voxel_grid.exe文件

直接运行,可能缺少dll,最好补全一下。

         此外,还要准备一个pcd点云数据文件,文件名是table_scene_lms400.pcd。

运行起来,可以看一下前后点云的个数,

还可以顺便看一下点云的显示效果,

注:

点云显示这部分,1、按住鼠标左键左右移动、上下移动可以旋转;2、按住鼠标左键和ctrl,可以平面内360旋转;3、按住鼠标左键和shift,可以拖动点云;4、滚动鼠标中轮,可以放大和缩小。

3d激光雷达开发(voxel滤波)相关推荐

  1. 3d激光雷达开发(入门)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 大约在2017年的时候,学习百度的apollo系统的时候,就知道3d激光雷达了.3d激光雷达和普 ...

  2. 3d激光雷达开发(pcl安装和使用)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 之前讨论过,目前3d激光雷达这块,算法部分用的最多的就是pcl库.网上很多教程都是讲pcl在li ...

  3. 3d激光雷达开发(基于参数模型的滤波)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 基于参数模型滤波,更准确的说,是依赖于某一个参数方程的滤波.比如说,ax+by+cz+d=0,这 ...

  4. 3d激光雷达开发(基于统计滤波)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 基于统计方法的滤波其实是比较好理解的.也就是说,在一个局部范围内,选择距离最近的几十个点,要求他 ...

  5. 3d激光雷达开发(从halcon看点云pcl库)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 做点云开发的,很少有不知道pcl库的,这一点就有点像做数字图像处理的,很少有不知道opencv的 ...

  6. 3d激光雷达开发(多雷达标定)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有过camera开发经验的朋友都知道,camera有两种标定.一种是内参标定,主要是标定切向畸变 ...

  7. 3d激光雷达开发(平面映射)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 3d点云当中,一个经常用到的方法就是先找到一个平面,然后将点映射到平面上面.这个里面用到的数据结 ...

  8. 3d激光雷达开发(ndt匹配)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 除了icp匹配之外,ndt匹配也是使用比较多的一种方法.相比较icp而言,ndt匹配花的时间要少 ...

  9. 3d激光雷达开发(icp匹配)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 所谓匹配,其实就是看两个点云数据里面,哪些关键点是一样的.这样就可以把一个点云移动到另外合适的位 ...

最新文章

  1. 算法工程师面试必考项——链表
  2. MESSL(maven + extjs + spring portlet mvc + spring web flow + liferay )整合架构 5
  3. php过滤特殊字符mysql攻击_php – MySQL在特殊字符处切断字符串
  4. DOS命令大全(转)
  5. 第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换
  6. 第二阶段个人工作总结04
  7. vim 编辑器的快捷键
  8. mysql 临时索引_MYSQL临时表创建索引
  9. 简化document.createElement(div)动态生成层方法
  10. 如何在fedora安装Telegram
  11. java pattern 转义_浅谈关于Java正则和转义中\\和\\\\的理解
  12. 牛客网算法题目-最优乘车题解
  13. html5在线+网站,15个在线HTML5网页设计工具
  14. Chrome 插件下载网站+6个实用插件推荐
  15. 在游戏界,就有了些游戏界的理解。不过本文是对某游戏开发商的信
  16. 牛客多校9 B. Two Frogs (概率dp+前缀和优化)
  17. ModuleNotFoundError: No module named ‘common‘
  18. 如果你对自己有要求 | “回顾,再出发”——记2020软工提问回顾与个人总结
  19. 数字信号处理基于计算机的方法答案,数字信号处理—基于计算机的方法第4章答案.pdf...
  20. 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest 不完整题解与训练赛复盘

热门文章

  1. 常用Python文件
  2. 小蚂蚁学习PHP性能优化(2)--PHP语言级性能优化
  3. Win8系统搜索不到无线信号该怎么办?
  4. 快速构建Windows 8风格应用34-构建Toast通知
  5. iPad不完美?盖茨的酸葡萄心理
  6. 任务37:生成 JWT Token
  7. POJ3254Corn Fields——状态压缩dp
  8. 未能找到文件“\bin\roslyn\csc.exe”
  9. JAVA核心:内存、比较和Final
  10. PHP无法使用file_get_contents或者curl_init()函数解决办法