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

Posted 费晓行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3d激光雷达开发(基于统计滤波)相关的知识,希望对你有一定的参考价值。

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

        基于统计方法的滤波其实是比较好理解的。也就是说,在一个局部范围内,选择距离最近的几十个点,要求他们的平均值必须小于一个数值。这样,无形之中就把那些离散点给去除了。从原理上说,这个算法比较直观。但是它最大的问题就是计算时间太长。我一开始运行后,都以为程序不对了,结果是pc运行时间太长导致的。原来的代码地址在这,https://pcl.readthedocs.io/projects/tutorials/en/master/statistical_outlier.html#statistical-outlier-removal

1、准备statistical_removal.cpp文件

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/statistical_outlier_removal.h>

int
main ()

  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>);

  // Fill in the cloud data
  pcl::PCDReader reader;
  // Replace the path below with the path where you saved your file
  reader.read<pcl::PointXYZ> ("table_scene_lms400.pcd", *cloud);

  std::cerr << "Cloud before filtering: " << std::endl;
  std::cerr << *cloud << std::endl;

  // Create the filtering object
  pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;
  sor.setInputCloud (cloud);
  sor.setMeanK (50);
  sor.setStddevMulThresh (1.0);
  sor.filter (*cloud_filtered);

  std::cerr << "Cloud after filtering: " << std::endl;
  std::cerr << *cloud_filtered << std::endl;

  pcl::PCDWriter writer;
  writer.write<pcl::PointXYZ> ("table_scene_lms400_inliers.pcd", *cloud_filtered, false);

  sor.setNegative (true);
  sor.filter (*cloud_filtered);
  writer.write<pcl::PointXYZ> ("table_scene_lms400_outliers.pcd", *cloud_filtered, false);

  return (0);

2、准备CMakeLists.txt文件

 cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
 
 project(statistical_removal)
 
 find_package(PCL 1.2 REQUIRED)
 
 include_directories($PCL_INCLUDE_DIRS)
 link_directories($PCL_LIBRARY_DIRS)
 add_definitions($PCL_DEFINITIONS)

add_executable (statistical_removal statistical_removal.cpp)
target_link_libraries (statistical_removal $PCL_LIBRARIES)

3、编译生成sln文件,准备编译

        用cmake生成sln工程,直接编译即可

4、补充完缺失的dll,直接运行statistical_removal.exe文件

以上是关于3d激光雷达开发(基于统计滤波)的主要内容,如果未能解决你的问题,请参考以下文章

3d激光雷达开发(PassThrough滤波器)

3d激光雷达开发(法向量预测)

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

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

Quanergy展示业界首款基于OPA的100米范围固态激光雷达

camera-lidar-radar基于卡尔曼滤波和扩展卡尔曼滤波的相机激光雷达毫米波雷达多传感器后融合