matlab给图像加高斯白噪声SNR

1. randn()
首先来说一下randn()这个函数,它是默认产生一个期望为0,标准差为1的正态分布,具体生成的是向量还是矩阵都是自行控制,比如下面这样可以产生一个期望为1,标准差为2的正态分布矩阵:

r=1+2.*randn(2,2)
r =
-1.0327 0.2521
1.0459 -0.7869

于是下面我们可以用randn()给图像添加均值为0,标准差为10,方差为100的高斯白噪声了:

origImg = imread(‘Lena.bmp’);
figure, imshow(origImg,[])
% 关于此处用double的解释:原图是uint8格式的数据,而randn函数生成的是float类
% 型的数据,因此要进行数据类型转换
distImg = double(origImg) + 10*randn(size(origImg));
figure, imshow(distImg,[])
noise = distImg - double(origImg);
figure,imshow(noise,[])
var = var(double(noise(😃)) % 方差
std = std2(noise) % 标准差
mean = mean2(noise) % 二维数组的均值
var =
101.0287
std =
10.0513
mean =
-0.0105

可以看到,所求出来的基本符合预期了。

2. wgn()
官方文档是这样写的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值