返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现点云添加高斯噪声功能
  • 891
分享到

C++实现点云添加高斯噪声功能

2024-04-02 19:04:59 891人浏览 薄情痞子
摘要

0 添加高斯噪声后的点云 红色为添加的高斯噪声点,白色为原始点 1 什么是高斯噪声 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。(百度百科) 高斯分布,也

0 添加高斯噪声后的点云

红色为添加的高斯噪声点,白色为原始点

1 什么是高斯噪声

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。(百度百科)

高斯分布,也称正态分布,又称常态分布,记为 N ( μ , σ 2 ) ),其中 μ , σ 2 为分布的参数,分别为高斯分布的期望和方差,其中 σ > 0 ,称为标准差。当 μ , σ 有确定值时,p ( x ) 也就确定了,特别当 μ = 0 , σ 2 = 1时,x 的分布为标准正态分布。

高斯分布函数

2 怎样添加高斯噪声

磨刀不误砍柴工,将添加高斯噪声封装到 CreatGaussNoise类 中,只需在main.cpp中设置输入点云(要添加噪声的点云)、设置高斯噪声参数(μ , σ)即可。

实现代码

main.cpp


#include "add_gauss_noise.h"

int main()
{
	//-------------------加载点云-------------------
	pcl::PointCloud<pcl::PointXYZ> cloud_in;
	if (pcl::io::loadPCDFile("Armadillo.pcd", cloud_in) < 0)
	{
		PCL_ERROR("->点云文件不存在!\a\n");
		system("pause");
		return -1;
	}

	//-------------------添加高斯噪声-------------------
	AddGaussNoise agn;							//创建高斯噪声对象agn
	pcl::PointCloud<pcl::PointXYZ> cloud_out;	//保存结果的点云
	agn.setInputCloud(cloud_in);				//设置输入点云
	agn.setParameters(0,2);						//设置高斯噪声参数mu,sigma
	agn.addGaussNoise(cloud_out);				//执行添加高斯噪声,并将结果保存在cloud_out中
	
	//-------------------保存添加高斯噪声后的点云-------------------
	pcl::io::savePCDFileBinary("addGaussNoise.pcd", cloud_out);

	return 0;
}

add_gauss_noise.h


#pragma once
#include <iOStream>
#include <pcl/io/pcd_io.h>
#include <boost/random.hpp>		//随机数所需头文件

class AddGaussNoise
{
public:

	
	void setInputCloud(pcl::PointCloud<pcl::PointXYZ> &cloud_in);

	
	void setParameters(double mu = 0.0, double sigma = 1.0);

	
	void addGaussNoise(pcl::PointCloud<pcl::PointXYZ> &cloud_out);
private:

	pcl::PointCloud<pcl::PointXYZ> m_cloud_in;		//输入点云
	bool is_setInputCloud = false;					//是否设置输入点云
	double m_mu, m_sigma;							//高斯分布参数
	bool is_setParameters = false;					//是否设置高斯分布参数
};

add_gauss_noise.cpp


#include "add_gauss_noise.h"


void AddGaussNoise::setInputCloud(pcl::PointCloud<pcl::PointXYZ> &cloud_in)
{
	m_cloud_in = cloud_in;
	is_setInputCloud = true;
}


void AddGaussNoise::setParameters(double mu, double sigma)
{
	if (sigma > 0)
	{
		m_mu = mu;
		m_sigma = sigma;
		is_setParameters = true;
	}
	else
	{
		PCL_ERROR("->sigma应大于0!\a\n");
		system("pause");
		abort();
	}
}


void AddGaussNoise::addGaussNoise(pcl::PointCloud<pcl::PointXYZ> &cloud_out)
{
	boost::mt19937 zgy;								//等分布均匀伪随机数发生器
	zgy.seed(static_cast<unsigned int>(time(0)));	//随机种子
	boost::nORMal_distribution<> nd(m_mu, m_sigma);	//定义正态分布,均值为mu,标准差为sigma
	boost::variate_generator<boost::mt19937&, boost::normal_distribution<>> gauss_noise(zgy, nd);	//生成高斯噪声

	pcl::PointCloud<pcl::PointXYZ> cloud_gauss;	//声明高斯噪声点云
	cloud_gauss = m_cloud_in;					//将原始点云拷贝给高斯噪声点云,用于下面的平移				

	for (size_t i = 0; i < cloud_gauss.size(); i++)
	{
		cloud_gauss.points[i].x += static_cast<float> (gauss_noise());
		cloud_gauss.points[i].y += static_cast<float> (gauss_noise());
		cloud_gauss.points[i].z += static_cast<float> (gauss_noise());
	}

	cloud_out = m_cloud_in + cloud_gauss;	//将原始点云与噪声点云合并,得到添加高斯噪声后的点云
}

参考链接

c++ normal_distribution高斯正态分布函数用法详解

总结

到此这篇关于C++实现点云添加高斯噪声功能的文章就介绍到这了,更多相关C++点云高斯噪声内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++实现点云添加高斯噪声功能

本文链接: https://lsjlt.com/news/130568.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++实现点云添加高斯噪声功能
    0 添加高斯噪声后的点云 红色为添加的高斯噪声点,白色为原始点 1 什么是高斯噪声 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。(百度百科) 高斯分布,也...
    99+
    2024-04-02
  • Python实现图像随机添加椒盐噪声和高斯噪声
    目录1.常见的图像噪声(1)高斯噪声(2) 椒盐噪声2.生成图像噪声(1)高斯噪声(2) 椒盐噪声(速度慢)(3) 椒盐噪声(快速版)3. Demo性能测试 图像噪声是指存...
    99+
    2024-04-02
  • Python实现对图像加噪(高斯噪声椒盐噪声)
    目录内容简介加噪声的代码(高斯噪声,椒盐噪声)在pytorch中如何使用补充内容简介 展示如何给图像叠加不同等级的椒盐噪声和高斯噪声的代码,相应的叠加噪声的已编为对应的类,可实例化使...
    99+
    2024-04-02
  • Python怎么实现对图像添加高斯噪声或椒盐噪声
    这篇文章主要为大家展示了“Python怎么实现对图像添加高斯噪声或椒盐噪声”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python怎么实现对图像添加高斯噪声或椒盐噪声”这篇文章吧。加噪声的代码...
    99+
    2023-06-21
  • OpenCV实现高斯噪声
    本文实例为大家分享了OpenCV实现高斯噪声的具体代码,供大家参考,具体内容如下 OpenCV 中提供了fill()函数可以产生均匀分布或者高斯分布(正态分布)的随机数,我们可以利...
    99+
    2024-04-02
  • python3怎么给数据添加高斯噪声
    本篇内容介绍了“python3怎么给数据添加高斯噪声”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Background高斯噪声,顾名思义是指...
    99+
    2023-06-29
  • 图像处理:随机添加椒盐噪声和高斯噪声Python
    图像处理:随机添加椒盐噪声和高斯噪声Python 目录 图像处理:随机添加椒盐噪声和高斯噪声Python 1.常见的图像噪声 (1)高斯噪声 (2) 椒盐噪声 2.生成图像噪声 (1)高斯噪声 (2) 椒盐噪声(速度慢) (3) 椒盐噪声(...
    99+
    2023-08-31
    高斯噪声 椒盐噪声 快速生成椒盐噪声 图像添加噪声 图像噪声
  • 利用python3如何给数据添加高斯噪声
    目录Background原始数据源码总结Background 高斯噪声,顾名思义是指服从高斯分布(正态分布)的一类噪声。有的时候我们需要向标准数据中加入合适的高斯噪声让数据更加符合实...
    99+
    2024-04-02
  • python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
    目录1、高斯噪声2、椒盐噪声3、泊松噪声4、speckle噪声导读: 这篇文章主要介绍如何利用opencv来对图像添加各类噪声,原图: 1、高斯噪声 高斯噪声就是给图片添加一个服从...
    99+
    2024-04-02
  • 如何利用python正确地为图像添加高斯噪声
    目录彩图or灰度图uint8orfloat64方差or标准差是否截断(clip)总结参考开门见山,直接使用 skimage 库为图像添加高斯噪声是很简单的: import skima...
    99+
    2024-04-02
  • Opencv图像添加椒盐噪声、高斯滤波去除噪声原理以及手写Python代码实现方法
    目录一、噪声 二、噪声的分类三、图像中添加椒盐噪声四、基于滤波器方法去噪五、opencv高斯滤波调包 总结 一、噪声   我们将常会...
    99+
    2024-04-02
  • java怎么实现添加功能
    要实现添加功能,你需要在Java中编写代码来处理添加操作。以下是一些实现添加功能的步骤:1. 创建一个类或方法来处理添加操作。这个类...
    99+
    2023-08-15
    java
  • SpringBoot+Vue实现数据添加功能
    一、添加代码生成器 用来自动为数据库映射类建立:mapper、service、controller 注:代码生成器的写法,参考官方文档:https://mp.baomidou.co...
    99+
    2024-04-02
  • jQuery如何实现动态添加节点与遍历节点功能
    这篇文章主要介绍了jQuery如何实现动态添加节点与遍历节点功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:动态添加节点:<...
    99+
    2024-04-02
  • SpringMVC实战案例RESTFul实现添加功能
    目录RESTFul实现添加功能一、前端改动1. 修改列表页,增加一个【添加】按钮2. 配置 view-controller3. 编写添加页面二、后端处理三、测试效果RESTFul实现...
    99+
    2024-04-02
  • Python实现为pdf添加水印功能
    目录创建需要的水印模板wps创建输出pdf水印pdf实现步骤安装依赖代码问题使用pypdf2出现编码问题解决方法感悟创建需要的水印模板 wps创建 输出pdf 水印pdf 实现...
    99+
    2024-04-02
  • elementui的select实现多选添加功能
    select组件 <el-col :span="12"> <el-form-item label="成员" prop="person">...
    99+
    2023-03-22
    elementui的select多选添加 elementui的select多选
  • SpringSecurity实现添加图片验证功能
    目录本章内容思路方案怎么将字符串变成图片验证码kaptcha这么玩hutool这么玩传统web项目过滤器方式认证器方式总结下前后端分离项目基于过滤器方式基于认证器方式本章内容 Spr...
    99+
    2023-01-04
    Spring Security添加图片验证 Spring Security图片验证
  • Node.js如何实现添加查询功能
    这篇文章主要介绍“Node.js如何实现添加查询功能”,在日常操作中,相信很多人在Node.js如何实现添加查询功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js如何实现添加查询功能”的疑惑有所...
    99+
    2023-07-04
  • C#实现简易点餐功能
    本文实例为大家分享了C#实现简易点餐功能的具体代码,供大家参考,具体内容如下 图示效果 实现过程 1.设计界面 2.设计控件及其属性 3.实现点击事件、显示事件以及运算 4实现功能...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作