我正在使用BrainWeb一个模拟数据集,用于正常的大脑磁共振图像。我想验证调用skimage.restoration
包的denoise_nl_means
的MyDenoise
函数。为此,我从BrainWeb下载了两组图像,一组是带有0%噪声和0%强度不均匀性的原始图像,另一组是带有相同选项但带有9%噪声和40%强度不均匀性的噪声图像。并且,我根据弃用版本的scipy.stats
计算信噪比(SNR),如下所示:
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)
我假设,在去噪之后,我们应该有一个更高的信噪比,这总是正确的。然而,与原始图像相比,噪声图像的信噪比更高。我猜这是因为图像的总平均值比标准差增加得更明显。因此,信噪比似乎不能很好地衡量去噪后的图像是否更接近原始图像,因为噪声图像的信噪比已经高于原始图像。我想知道是否有更好的方法来验证图像中的去噪功能
Original image SNR: 1.23
Noisy image SNR: 1.41
Denoised image SNR: 1.44
多谢各位
这不是计算信噪比的方法
核心概念是,对于任何一个给定的图像,你都不知道什么是噪声,什么是信号。如果我们这样做了,去噪就不会成为问题。因此,无法从一幅图像中测量噪声级(可以估计噪声级,但我们无法计算噪声级)
解决方案是使用无噪图像。这是基本事实,也是去噪操作的目标。因此,我们可以通过将任何一幅图像与该地面真实值进行比较来估计噪声,差异就是噪声:
现在可以计算均方误差(MSE):
或信噪比:
(请注意,这是许多不同的信噪比定义之一,我们通常使用信号的功率,而不仅仅是它们的平均值,通常以dB为单位进行测量。)
一般来说,MSE是讨论去噪误差的一个很好的方法。您将看到该领域的大多数科学论文另外使用峰值信噪比(PSNR),这只是MSE的缩放和对数映射。因此,两者都使用是毫无意义的
您还可以查看平均绝对误差(MAE),它对误差较大的单个像素更为敏感
相关问题 更多 >
编程相关推荐