写在前面
在我们进行点云配准一类的模拟实验时,第一步就是对原始点云进行适当的RT变换,并添加一定的噪声,得到测量点云,然后才可以用我们的算法去进行后面的配准操作。在添加噪声这一块,matlab里并没有特定的函数,因此需要我们在了解噪声原理的基础上,利用简洁的代码实现。
鉴于网上搜索高斯噪声要么是二维的实现,要么是c语言实现,鲜有针对三维点云的matlab实现源码,笔者分享一下自己的实现过程,供新手参考。
高斯噪声的定义
高斯分布,也称正态分布,又称常态分布,记为N(μ,σ^2),其中μ,σ^2为分布的参数,分别为高斯分布的期望和方差。当有确定值时,p(x)也就确定了,特别当μ=0,σ^2=1时,X的分布为标准正态分布。
所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。
Matlab实现
a=ptCloud0.Location; m=max(a); n=min(a); sigma = 0.025;%标准差 mean = n+ (m-n)/2;%均值 ss = mean +sigma*randn(10000,3);%10000个噪声点 ptCloudA = pointCloud([a;ss]); figure pcshow(ptCloudA); title('Noisy Data');
效果如图
随机噪声
顾名思义,遵循随机分布
代码实现更加简单,注意ss = n+(m-n)* rand(10000,3);此时不再是randn
效果如图