首页 > 编程语言 >点云学习笔记2——使用VoxelGrid滤波器进行点云降采样(c++)

点云学习笔记2——使用VoxelGrid滤波器进行点云降采样(c++)

时间:2024-10-29 15:17:31浏览次数:7  
标签:点云降 PointCloud staticOR c++ source pcl 点云 include cloud

#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/filters/voxel_grid.h>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>      // 点类型定义头文件
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/visualization/pcl_visualizer.h> //点云显示头文件
#include <pcl/filters/voxel_grid.h>
#include <pcl/filters/extract_indices.h>
#include <pcl/filters/statistical_outlier_removal.h> //统计滤波器头文件
#include <pcl/registration/gicp.h>
#include <pcl/registration/icp.h> // ICP配准类相关的头文件
#include <pcl/features/normal_3d.h>
#include <pcl/kdtree/kdtree_flann.h>

using namespace std;

int main()
{
   // 加载源点云
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_source(new pcl::PointCloud<pcl::PointXYZ>());
	pcl::io::loadPCDFile<pcl::PointXYZ>("D:\\PCL\\rabbit.pcd", *cloud_source);
	cout << "源点云加载完成!" << endl;

    // 创建统计滤波器对象
	pcl::StatisticalOutlierRemoval<pcl::PointXYZ> staticOR;
	staticOR.setInputCloud(cloud_source);
	staticOR.setMeanK(20);   // 设置统计平均点数,增加MeanK的值会使每个点的邻域变大
	staticOR.setStddevMulThresh(1);   // 设置标准差倍数阈值,增加StddevMulThresh的值会减少被移除的点的数量

	// 进行滤波
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>());
	staticOR.filter(*cloud_filtered);//cloud_filtered 将用于存储经过离群点移除处理后的点云数据。
	cloud_source = cloud_filtered;
	cout << "源点云滤波完成!" << endl;

    // 对源点云进行VoxelGrid降采样
	pcl::VoxelGrid<pcl::PointXYZ> sor;
	sor.setInputCloud(cloud_source);
	sor.setLeafSize(0.005f, 0.005f, 0.005f); // 设置体素大小
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_source_subsampled(new pcl::PointCloud<pcl::PointXYZ>());
	sor.filter(*cloud_source_subsampled);

    // 保存点云到文件
	pcl::io::savePCDFileBinary("D:\\PCL\\rabbit1.pcd", *cloud_source_subsampled);
	cout << "滤波后点云文件已经保存" << endl;

    return 0;
}

标签:点云降,PointCloud,staticOR,c++,source,pcl,点云,include,cloud
From: https://blog.csdn.net/qq_64095888/article/details/143301795

相关文章

  • 点云学习笔记4——点云滤波降采样后进行4PCS粗配准【四点一致集配准算法(4-Point Congr
    #include<iostream>#include<pcl/point_cloud.h>#include<pcl/point_types.h>#include<pcl/filters/voxel_grid.h>#include<pcl/common/common_headers.h>#include<pcl/io/pcd_io.h>#include<pcl/visualization/cloud_vi......
  • 点云学习笔记3——读取点云文件、进行统计滤波/直通滤波后可视化
    一、统计滤波#include<iostream>#include<pcl/point_cloud.h>#include<pcl/io/pcd_io.h>#include<pcl/point_types.h>#include<pcl/filters/voxel_grid.h>#include<pcl/common/common_headers.h>#include<pcl/visualization/c......
  • C++连接SqlServer
    C++连接SqlServer连接外加查询sqlConnection.h#pragmaonce#ifndefSQLCONNECTION_H#defineSQLCONNECTION_H#include<iostream>#include<windows.h>#include<sql.h>#include<sqlext.h>#include<fstream>#include<string>//......
  • C++之OpenCV入门到提高002:加载、修改、保存图像
    一、介绍今天是这个系列《C++之Opencv入门到提高》得第二篇文章。今天这个篇文章很简单,只是简单介绍如何使用Opencv加载图像、显示图像、修改图像和保存图像,先给大家一个最直观的感受。但是,不能认为很简单,只是让学习的过程没那么平滑一点,以后的路就好走了。OpenCV具......
  • Rethinking Network Design and Local Geometry in Point Cloud:A Simple Residual ML
    此内容是论文总结,重点看思路!!文章概述本文提出了一种用于点云分析的简单残差MLP网络(PointMLP),通过省略复杂的几何特征提取器,仅采用残差MLP和轻量化的几何仿射模块,便能高效地提取点云特征,实现优异的分类性能。PointMLP在推理速度和准确性上优于许多现有方法,提供了一种更加高效的......
  • c++11智能指针
    普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型unique_pt......
  • C/C++ 中有哪些基本数据类型?它们的存储大小和取值范围是多少?
      1.整型类型int存储大小:4字节(32位)取值范围:有符号(signedint):-2^(31)到2^(31)-1(即-2,147,483,648到2,147,483,647)short存储大小:2字节(16位)取值范围:有符号(signedshort):-2^(15)到2^(15)-1(即-32,768到32,767)long存储大小:通常为4字......
  • C/C++ 中有哪些常见的运算符?
    1.算术运算符用于执行数学运算。+(加法)-(减法)*(乘法)/(除法)%(取模,返回余数)2.关系运算符用于比较两个值的关系,结果为布尔值(true或false)。==(等于)!=(不等于)>(大于)<(小于)>=(大于等于)<=(小于等于)3.逻辑运算符用于在逻辑表达式中执行布尔逻辑运算。&&(逻辑与,AND)||(逻辑或,OR)!(逻辑非......
  • 【C++】—— priority_queue :平衡效率与秩序的算法利器
    去感受一棵草、一缕风、一场日落,去重新触摸真正的生活。——高盛元目录1、优先级队列1.1什么是优先级队列1.2 priority_queue的使用1.3仿函数2、priority_queue的模拟实现2.1整体框架接口2.2插入&&向上调整2.2删除&&向下调整2.3其他接口2.4优先级队列的应用......
  • 【c++篇】:探索c++中的std::string类--掌握字符串处理的精髓
    ✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨✨个人主页:余辉zmh–CSDN博客✨文章所属专栏:c++篇–CSDN博客文章目录前言一.`std::string`对象的创建二.`std::string`对象的访问三.`std::string`对象的容量四.`std::string`对......