【问题标题】:scipy.signal.wiener always show warningscipy.signal.wiener 总是显示警告
【发布时间】:2016-01-29 15:20:47
【问题描述】:

我正在尝试在灰度图像中使用 Scipy 的 wiener denoise 函数:

image = data.imread(image_path, as_grey=True)
image = signal.wiener(image)

但我总是收到此警告:

/usr/lib/python2.7/dist-packages/scipy/signal/signaltools.py:425: RuntimeWarning: divide by zero encountered in true_divide
      res *= (1 - noise / lVar)
    /usr/lib/python2.7/dist-packages/scipy/signal/signaltools.py:425: RuntimeWarning: invalid value encountered in multiply
      res *= (1 - noise / lVar)

过滤器工作正常,但为什么我收到此警告?

【问题讨论】:

  • 如果image 中的所有值都相同,我可以重现这些警告,例如wiener(np.ones((24, 24)))。你的意见是这样的吗?
  • 其实数组不一定是常数。我还收到wiener(np.random.randint(0, 2, size=(24, 24)) 的警告。
  • 不。事实并非如此。

标签: python filter scipy noise-reduction


【解决方案1】:

尝试将输入图片的数据类型转换为float32或float64,即:

image = image.astype('float64')
image = signal.wiener(image)

我想我们将“除以零”作为下溢数。

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2023-04-02
    • 2021-11-24
    • 2018-10-12
    相关资源
    最近更新 更多