【问题标题】:Gaussian notch filter in PythonPython中的高斯陷波滤波器
【发布时间】:2020-01-26 18:46:02
【问题描述】:

我正在尝试在 Python 中设计一个高斯陷波滤波器来去除周期性噪声。我尝试实现以下公式:

Gaussian Notch Filter

这里是代码:

import numpy as np

def gaussian_bandpass_filter(image):
    image_array = np.array(image)
    #Fourier Transform
    fourier_transform = np.fft.fftshift(np.fft.fft2(image_array)) 

    #Size of Image
    m = np.shape(fourier_transform)[0]
    n = np.shape(fourier_transform)[1]

    u = np.arange(m)
    v = np.arange(n)

    # Find the center
    u0 = int(m/2)
    v0 = int(n/2)

    # Bandwidth
    D0 = 10

    gaussian_filter = np.zeros(np.shape(fourier_transform))

    for x in u:
        for y in v:
            D1 = math.sqrt((x-m/2-u0)**2 + (y-n/2-v0)**2)
            D2 = math.sqrt((x-m/2+u0)**2 + (y-n/2+v0)**2)
            gaussian_filter[x][y] = 1 - math.exp(-0.5 * D1*D2/(D0**2))

    #Apply the filter
    fourier_transform = fourier_transform + gaussian_filter
    image_array = np.fft.ifft2(np.fft.ifftshift(fourier_transform))

    return image_array

这个函数应该对图像应用高斯陷波滤波器并返回过滤后的图像,但它似乎不起作用。我不知道我哪里出了问题(也许我没有正确理解公式?)所以如果有人可以帮助我,我将不胜感激。

编辑:

例如,这里是noisy image。 使用 scipy.ndimage 库中现有的 gaussian_filter 函数,我得到this,这是可以接受的。 但我的函数返回this。 (我正在使用 PIL.Image.fromarray 函数将数组转换为图像)

【问题讨论】:

  • “它不起作用”到底是什么意思?
  • 您需要自己制作还是只是想过滤一些图像?
  • @wwii - 我这样做是为了完成一项任务。我必须在不使用预先存在的函数的情况下实现自己的高斯陷波滤波器。

标签: python numpy image-processing gaussian


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 2014-10-02
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2018-01-26
    • 2013-02-01
    • 2018-10-03
    相关资源
    最近更新 更多