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π1e−2σ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++版本实现结果略有不同
以上是关于MATLAB点云处理:为点云添加高斯噪声的主要内容,如果未能解决你的问题,请参考以下文章