matlab 图像中加入高斯白噪声,matlab – 使用imnoise为图像添加高斯噪声

让我们首先看看SNR与噪声的关系.您的错误图像是原始图像和噪声图像之间的差异,这意味着错误图像是噪声本身.因此,SNR实际上是:

SNR = 10log10[var(image)/var(noise)]

对于给定的图像和SNR = 5db,噪声的方差将是:

var(noise) = var(image)/10SNR/10 = var(image)/sqrt(10)

现在让我们将所有这些转换成MATLAB代码.要使用imnoise命令将白高斯噪声添加到图像(表示I),语法为:

I_noisy = imnoise(I, 'gaussian', m, v)

其中m是平均噪声,v是其方差.同样重要的是要注意,imnoise假设图像I的强度范围从0到1.

在我们的例子中,我们将添加零均值噪声,其方差为v = var(I(:))/ sqrt(10).完整的代码是:

%// Adjust intensities in image I to range from 0 to 1

I = I - min(I(:));

I = I / max(I(:));

%// Add noise to image

v = var(I(:)) / sqrt(10);

I_noisy = imnoise(I, 'gaussian', 0, v);

澄清:我们使用var(I(:))来计算图像I中所有样本的方差(而不是var(I),它计算沿列的方差).

希望这可以帮助!

I = imread('eight.tif');

I = double(I);

%// Adjust intensities in image I to range from 0 to 1

I = I - min(I(:));

I = I / max(I(:));

%// Add noise to image

v = var(I(:)) / sqrt(10);

I_noisy = imnoise(I, 'gaussian', 0, v);

%// Show images

figure

subplot(1, 2, 1), imshow(I), title('Original image')

subplot(1, 2, 2), imshow(I_noisy), title('Noisy image, SNR=5db')

这是结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值