天天看點

MATLAB點雲處理(八):為點雲添加高斯噪聲

文章目錄

    • 1 高斯噪聲
    • 2 normrnd()函數
    • 3 添加高斯噪聲

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π

​1​e−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;

% 添加高斯噪聲
a = -1;     % 坐标最小值
b = 1;      % 坐标最大值
mu = 0;         % 均值
sigma = 0.5;    % 标準差
noise = a + (b-a) .* 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點雲
           

結果展示:

MATLAB點雲處理(八):為點雲添加高斯噪聲
MATLAB點雲處理(八):為點雲添加高斯噪聲

相關連結

點雲添加高斯噪聲的C++實作

與C++版本實作結果略有不同