MATLAB点云处理:为点云添加高斯噪声

Posted 没事就要敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB点云处理:为点云添加高斯噪声相关的知识,希望对你有一定的参考价值。

1 高斯噪声

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

高斯分布,也称正态分布,又称常态分布,记为 N ( μ , σ 2 ) N(μ,σ^2) N(μσ2),其中 μ , σ 2 μ,σ^2 μσ2 为分布的参数,分别为高斯分布的期望和方差,其中 σ > 0 \\sigma>0 σ>0,称为标准差。当 μ , σ μ,σ μσ 有确定值时, p ( x ) p(x) p(x) 也就确定了,特别当 μ = 0 , σ 2 = 1 μ=0,σ^2=1 μ=0σ2=1 时, x x x 的分布为标准正态分布。
p ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 p(x)=\\cfrac{1}{\\sigma\\sqrt{2\\pi}}e^{-\\cfrac{(x-\\mu)^2}{2\\sigma^2}} p(x)=σ2π 1e2σ2(xμ)2

高斯分布函数

2 normrnd()函数

normrnd — 正态分布的随机数

语法:

3 种重载函数

r = normrnd(mu,sigma)				
r = normrnd(mu,sigma,sz1,...,szN)
r = normrnd(mu,sigma,[sz1,...,szN])

3 添加高斯噪声

代码:

clc;
clear;

% 加载点云
ptCloud = pcread('sphere.pcd');

% 可视化原始点云
figure;
pcshow(ptCloud);
title('原始点云');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
hold on;

% 添加高斯噪声
mu = 0;         % 均值
sigma = 0.5;    % 标准差
noise = normrnd(mu,sigma,[1000, 3]);  % 1000个高斯噪声点
ptCloud_N = pointCloud([ptCloud.Location; noise]);  % 原始点云添加高斯噪声

% 可视化添加高斯噪声的点云
figure
pcshow(ptCloud_N);
title('添加高斯噪声后的点云');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
hold on;

% 保存添加高斯噪声的点云
pcwrite(ptCloud_N,'sphere_N.pcd','Encoding','binary');			%保存为binary形式的PCD点云

结果展示:


相关链接

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

与C++版本实现结果略有不同

以上是关于MATLAB点云处理:为点云添加高斯噪声的主要内容,如果未能解决你的问题,请参考以下文章

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

MATLAB点云处理:点云去噪(pcdenoise)

请教高手!急!!! 请问如何将matlab中的矩阵数据转化为点云数据?

激光点云预处理研究概述

matlab那个版本可以进行点云

2将图像转换为点云