微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在图像处理中验证去噪功能的最佳方法是什么?信噪比似乎使我失望

如何解决在图像处理中验证去噪功能的最佳方法是什么?信噪比似乎使我失望

我正在使用BrainWeb用于正常大脑MR图像的模拟数据集。我想验证调用MyDenoise包中的denoise_nl_means的{​​{1}}函数。为此,我从BrainWeb下载了两套图像,一张是 0%噪声和 0%强度不均匀的原始图像,以及具有相同选项但 9%噪声和 40%强度不均匀的嘈杂图像。而且,我根据已弃用的skimage.restoration版本计算出 信噪比(SNR) ,如下所示:

scipy.stats

我认为去噪后,我们应该有一个更高的SNR,这始终是正确的。但是,与原始图像进行比较时,我们在嘈杂的图像中具有更高的SNR。我猜这是因为图像的总均值比标准偏差增加了更多。因此,似乎SNR并不是验证我的去噪图像是否更接近原始图像的好方法,因为嘈杂的图像已经比原始图像具有更高的SNR。我想知道是否有更好的方法来验证图像中的降噪功能

这是我的结果:

enter image description here

def signaltonoise(a,axis=0,ddof=0):
    a = np.asanyarray(a)
    m = a.mean(axis)
    sd = a.std(axis=axis,ddof=ddof)
    return np.where(sd == 0,m/sd)

谢谢。

解决方法

这不是您计算SNR的方式。

核心概念是,对于任何给定的图像,您都不知道什么是噪声,什么是信号。如果我们做到了,去噪将不是问题。因此,不可能从一张图像中测量噪声水平(可以估计它,但我们不能计算出它)。

解决方案是使用无噪点图像。这是基本事实,即降噪操作的目标。因此,我们可以通过将任何一张图像与此地面真实情况进行比较来估算噪声,区别在于噪声:

noise = image - ground_truth

您现在可以计算均方误差(MSE):

mse = np.mean(noise**2)

或信噪比:

snr = np.mean(ground_truth) / np.mean(noise)

(请注意,这是信噪比的许多可能的不同定义之一,通常我们使用信号的功率,而不仅仅是信号的均值,并且通常以dB为单位。)

通常,MSE是讨论降噪错误的一种非常好的方法。您会在该领域看到大多数科学论文,另外还使用峰值信噪比(PSNR),这只是MSE的比例映射和对数映射。因此,两者都没有意义。

您还可以查看平均绝对误差(MAE),它对具有较大误差的单个像素更敏感。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。