点云加高斯噪声

添加高斯噪声

#include <iostream> //标准输入输出流
#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件
#include <pcl/point_types.h> //PCL对各种格式的点的支持头文件
#include <pcl/point_cloud.h>
#include <pcl/visualization/cloud_viewer.h>//点云查看窗口头文件
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/random.hpp>
#include <pcl/console/time.h>

 

int main(int argc, char** argv)
{

 std::cout << "读取文件" << std::endl;

 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 创建点云(指针)

 if (pcl::io::loadPCDFile<pcl::PointXYZ>("E:\\data\\12.pcd", *cloud) == -1) //* 读入PCD格式的文件,如果文件不存在,返回-1
 {
  PCL_ERROR("Couldn't read file test_pcd.pcd \n"); //文件不存在时,返回错误,终止程序。
  system("pause");
  return (-1);
 }
 std::cout << "正确查找文件" << std::endl;


 //添加高斯噪声
 pcl::PointCloud<pcl::PointXYZ>::Ptr cloudfiltered(new pcl::PointCloud<pcl::PointXYZ>());
 cloudfiltered->points.resize(cloud->points.size());//将点云的cloud的size赋值给噪声
 cloudfiltered->header = cloud->header;
 cloudfiltered->width = cloud->width;
 cloudfiltered->height = cloud->height;

 boost::mt19937 rng;
 rng.seed(static_cast<unsigned int>(time(0)));
 boost::normal_distribution<> nd(0, 2);
 boost::variate_generator<boost::mt19937&, boost::normal_distribution<>> var_nor(rng, nd);

 //添加噪声
 for (size_t point_i = 0; point_i < cloud->points.size(); ++point_i)
 {
  cloudfiltered->points[point_i].x = cloud->points[point_i].x + static_cast<float> (var_nor());
  cloudfiltered->points[point_i].y = cloud->points[point_i].y + static_cast<float> (var_nor());
  cloudfiltered->points[point_i].z = cloud->points[point_i].z + static_cast<float> (var_nor());
 }


 pcl::visualization::PCLVisualizer viewer("Cloud Viewer");

 //设置颜色为绿色
 pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> singleColor(cloud, 0, 255, 0);
 //往窗口添加点云并设置颜色,原图为cloud 添加后为cloudfiltered,记得改
 viewer.addPointCloud(cloud, singleColor, "cloud");
 //添加点云后,通过点云ID来设置显示大小
 viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud");
 //重置相机,将点云显示到窗口
 viewer.resetCamera();

 while (!viewer.wasStopped())
 {
  viewer.spinOnce();
 }
 return (0);
}

 

 

--------------------- 本文来自 josslyn 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/josslyn/article/details/79920733?utm_source=copy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值