MATLAB点云处理:为点云添加均匀分布的随机噪声

Posted 没事就要敲代码

tags:

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

1 均匀分布

在概率论和统计学中,均匀分布也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。 均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为 U ( a , b ) U(a, b) U(a,b)

a = 0 , b = 1 a=0,b=1 a=0,b=1 时,所得分布 U ( 0 , 1 ) U(0,1) U(0,1) 称为标准均匀分布。

本文接下来就是要为点云添加 概率密度函数服从均匀分布的随机噪声

2 rand()函数

rand – 均匀分布的随机数

语法:

6 种重载函数

X = rand
X = rand(n)
X = rand(sz1,...,szN)
X = rand(sz)
X = rand(___,typename)
X = rand(___,'like',p)

其中,X = rand 返回一个在区间 (0,1) 内均匀分布的随机数。X = rand(m,n)函数返回由随机数(0~1之间)组成的 m × n m×n m×n 的矩阵。

如果想要生成 a a a b b b 之间的随机数,则需要用到下面的代码

X = a + (b-a).* rand(m,n);

3 添加均匀分布的随机噪声

前提:

获取原始点云的 x y z xyz xyz 坐标最小值 a a a 和最大值 b b b,确定噪声点云范围(正方体

代码:

clc;
clear;

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

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

% 添加均匀分布的随机噪声
a = -1;     % xyz坐标最小值
b = 1;      % xyz坐标最大值
noise = a + (b-a) .* rand(1000, 3);  % 1000个随机噪声点,坐标范围在(a,b),为一正方体形状的噪声点云
ptCloud_U = pointCloud([ptCloud.Location; noise]);  % 原始点云添加随机噪声

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

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

结果展示:

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

MATLAB点云处理:点云下采样(random | gridAverage | nonuniformGridSample)

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

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

matlab那个版本可以进行点云

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

激光点云预处理研究概述