Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中从图像中获取信噪比?_Python_Image Processing - Fatal编程技术网

如何在Python中从图像中获取信噪比?

如何在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函数scipy.stats.signaltonoise(),但是我得到了一个数字数组,我真的不知道我得到了什么

是否有其他方法获取我的图像的信噪比?

更新:(适用于未阅读评论中链接材料的用户)
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》一书中,作者提供了一个关于它被删除原因的推理,以及一个在需要时创建它的简单方法。