如何在Python中从图像中获取信噪比?
我正在过滤图像,我想知道信噪比。我尝试使用scipy函数scipy.stats.signaltonoise(),但是我得到了一个数字数组,我真的不知道我得到了什么 是否有其他方法获取我的图像的信噪比?更新:(适用于未阅读评论中链接材料的用户)如何在Python中从图像中获取信噪比?,python,image-processing,Python,Image Processing,我正在过滤图像,我想知道信噪比。我尝试使用scipy函数scipy.stats.signaltonoise(),但是我得到了一个数字数组,我真的不知道我得到了什么 是否有其他方法获取我的图像的信噪比?更新:(适用于未阅读评论中链接材料的用户) scipy.stats.signaltonoise函数已被弃用并删除。在中,您可以找到自己实现它的原始配方: def signaltonoise(a, axis=0, ddof=0): a = np.asanyarray(a) m = a.
scipy.stats.signaltonoise
函数已被弃用并删除。在中,您可以找到自己实现它的原始配方:
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)
原始答案:
返回数组而不是单个数字的原因是,在调用scipy.stats.signaltonoise
时未指定axis=None
因此,您可能需要:
snr = scipy.stats.signaltonoise(img, axis=None)
如果没有该选项,您将获得图像中每列的信噪比。当数据实际上不是图像,而是一系列时间信号(例如)时,这很有意义。检查它将告诉您数字数组的含义如何定义图像的信噪比?如果它是一个相机图像,我猜你有均匀颜色的区域,它将信号和像素上的波动表示为噪声。在这种情况下,您可以将此图像的感兴趣区域限制为这些均匀区域,然后获取
平均值
值和标准偏差。但是如果没有你的图像的更多信息,我们真的帮不了你:你的问题不是很明确。我已经阅读了doc@sk11,我相信它给出了所选轴上每个像素的信噪比。然而,我想知道孔图像的信噪比,有可能吗?对不起@OliverW。这是我在这个网站上的第一篇帖子,我还不习惯。这是一幅灰度图像。我实际上是在处理医学图像,我想计算滤波图像的信噪比,以了解其有效性SignalTonoise不受欢迎!在版本1.3.1中消失。。。还有其他建议吗?@FrankMusteman在v0.16.0之前的scipy.stats中使用的信噪比只是平均值除以STDEV。在《关于github》一书中,作者提供了一个关于它被删除原因的推理,以及一个在需要时创建它的简单方法。