Ich versuche, einen Gaußschen Notch -Filter in Python zu entwerfen, um periodisches Rauschen zu entfernen.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
< /code>
Diese Funktion soll den Gaußschen Notch -Filter auf ein Bild anwenden und das gefilterte Bild zurückgeben, es scheint jedoch nicht zu funktionieren. Ich weiß nicht, wo ich damit falsch gelaufen bin (vielleicht habe ich die Formel nicht richtig verstanden?) Also, wenn mir jemand helfen könnte, würde ich es wirklich schätzen. akzeptabel.
Aber meine Funktion gibt dies zurück. (Ich verwende Pil.image.FromArray -Funktion, um das Array in das Bild umzuwandeln)
Gaußscher Notch -Filter in Python ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post