我正在使用BrainWeb来模拟正常大脑 MR 图像的数据集。我想验证调用包的MyDenoise函数。为此,我从 BrainWeb 下载了两组图像,一组具有0%噪声和0%强度不均匀性的原始图像,另一组具有相同选项但具有9%噪声和40%强度不均匀性的噪声图像。并且,我根据以下已弃用的版本计算信噪比 (SNR) :denoise_nl_meansskimage.restorationscipy.statsdef 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 已经高于原始图像。我想知道是否有更好的测量方法来验证图像中的去噪功能。这是我的结果:Original image SNR: 1.23Noisy image SNR: 1.41Denoised image SNR: 1.44谢谢。
1 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
这不是计算 SNR 的方法。
核心概念是,对于任何一幅给定的图像,您不知道什么是噪声,什么是信号。如果我们这样做,去噪就不成问题了。因此,不可能测量一幅图像的噪声水平(可以估计它,但我们无法计算它)。
解决方案是使用无噪声图像。这是事实真相,也是去噪操作的目标。因此,我们可以通过将任何一张图像与该地面实况进行比较来估计噪声,差异就是噪声:
noise = image - ground_truth
您现在可以计算均方误差 (MSE):
mse = np.mean(noise**2)
或信噪比:
snr = np.mean(ground_truth) / np.mean(noise)
(请注意,这是信噪比的许多可能的不同定义之一,我们通常使用信号的功率而不仅仅是它们的平均值,并且通常以 dB 为单位进行测量。)
总的来说,MSE 是讨论去噪误差的一个非常好的方法。您会看到该领域的大多数科学论文另外使用峰值信噪比 (PSNR),这只是 MSE 的缩放和对数映射。因此,同时使用两者是没有意义的。
您还可以查看平均绝对误差 (MAE),它对误差较大的单个像素更敏感。
添加回答
举报
0/150
提交
取消