文章目錄
-
- 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π
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;
% 添加高斯噪聲
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點雲
結果展示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP350MVR0T1EkaOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwIWNxQjMldTOmZWZkNTZ5ITN5QDOkBzYklTZlhDNlN2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
相關連結
點雲添加高斯噪聲的C++實作
與C++版本實作結果略有不同