首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图像的加信噪比与实测信噪比之差

图像的加信噪比与实测信噪比之差
EN

Stack Overflow用户
提问于 2016-02-14 22:19:21
回答 1查看 597关注 0票数 0

我试图按照以下步骤将5dB的噪声添加到matlab中的图像中

代码语言:javascript
复制
SNR = 5;
Im = double(Io) / 255;
vm = var(Im(:)) / 10^(SNR/10);
I_my_noisy = imnoise(Im, 'gaussian', 0, vm);

但是当我用matlab命令测量信噪比时

代码语言:javascript
复制
[peaksnr,snr] = psnr(I_my_noisy, Im)

我的信噪比等于10。那么,我的代码有什么问题?为什么结果与我的add dB不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 07:03:48

如果你这样做了:

代码语言:javascript
复制
Error = I_my_noisy - Im;
SNR = 10*log10(var(Im(:))/var(Error(:)));

你会得到你刚开始设置的信噪比。问题是,你用psnr计算的信噪比是不同的。不同的是函数psnr测量信噪比的方式。

如果您看到psnr的源代码,您将看到以下2行:

代码语言:javascript
复制
err = immse(A,ref);
snr = 10*log10(mean(ref(:).^2)/err);

在您的例子中,immse(A,ref)等同于var(Error(:)),因为噪声是高斯的,均值为零。但是mean(ref(:).^2)var(Im(:))不一样,因为Im没有零均值,所以这个运算不等于方差。

这就是为什么你没有得到你所期望的价值。

编辑:

无论如何,信噪比的正确形式是在psnr函数中测量的信噪比,因为信噪比测量的是信噪比和噪声的功率比,计算方法是用mean(ref(:).^2)进行计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35398709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档