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)