验证图像处理中的去噪功能的最佳测量是什么?信噪比似乎让我失望

我正在使用BrainWeb来模拟正常大脑 MR 图像的数据集。我想验证调用包的MyDenoise函数。为此,我从 BrainWeb 下载了两组图像,一组具有0%噪声和0%强度不均匀性的原始图像,另一组具有相同选项但具有9%噪声和40%强度不均匀性的噪声图像。并且,我根据以下已弃用的版本计算信噪比 (SNR) :denoise_nl_meansskimage.restorationscipy.stats

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, 0, m/sd)

我认为,去噪后,我们应该有更高的信噪比,这始终是正确的。然而,与原始图像相比,噪声图像中的信噪比更高。我猜这是因为图像的总平均值比标准差增加得更显着。因此,SNR 似乎不能成为验证去噪图像是否更接近原始图像的良好测量方法,因为噪声图像的 SNR 已经高于原始图像。我想知道是否有更好的测量方法来验证图像中的去噪功能。

这是我的结果:

https://img1.sycdn.imooc.com/65966e4a0001cab816750633.jpg

Original image SNR: 1.23

Noisy image SNR: 1.41

Denoised image SNR: 1.44

谢谢。


郎朗坤
浏览 101回答 1
1回答

喵喔喔

这不是计算 SNR 的方法。核心概念是,对于任何一幅给定的图像,您不知道什么是噪声,什么是信号。如果我们这样做,去噪就不成问题了。因此,不可能测量一幅图像的噪声水平(可以估计它,但我们无法计算它)。解决方案是使用无噪声图像。这是事实真相,也是去噪操作的目标。因此,我们可以通过将任何一张图像与该地面实况进行比较来估计噪声,差异就是噪声:noise = image - ground_truth您现在可以计算均方误差 (MSE):mse = np.mean(noise**2)或信噪比:snr = np.mean(ground_truth) / np.mean(noise)(请注意,这是信噪比的许多可能的不同定义之一,我们通常使用信号的功率而不仅仅是它们的平均值,并且通常以 dB 为单位进行测量。)总的来说,MSE 是讨论去噪误差的一个非常好的方法。您会看到该领域的大多数科学论文另外使用峰值信噪比 (PSNR),这只是 MSE 的缩放和对数映射。因此,同时使用两者是没有意义的。您还可以查看平均绝对误差 (MAE),它对误差较大的单个像素更敏感。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python