single
Tiefpass- und Hochpassfilter
Swipe um das Menü anzuzeigen
Einer der Hauptvorteile der Fourier-Transformation ist die Möglichkeit, High-Pass- und Low-Pass-Filter anzuwenden.
Nach der Anwendung der Fourier-Transformation:
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
muss eine Filter-Maske erstellt werden.
Low-Pass-Filterung (Weichzeichnung)
Ein Low-Pass-Filter entfernt hochfrequente Komponenten, was zu einem verschwommenen Bild führt. Low-Pass-Maske:
rows, cols = image.shape
crow, ccol = rows // 2, cols // 2
mask = np.zeros((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
rows, cols = image.shape: Ermittelt die Anzahl der Zeilen und Spalten des Graustufenbildes;crow, ccol = rows // 2, cols // 2: Berechnet die Mittelpunktkoordinaten des Bildes;mask = np.zeros((rows, cols), np.uint8): Erstellt eine Maske aus Nullen mit denselben Dimensionen wie das Bild;mask[crow-30:crow+30, ccol-30:ccol+30] = 1: Setzt einen 60×60 Pixel großen Bereich im Zentrum der Maske auf 1, sodass nur die niederfrequenten Komponenten (nahe dem Zentrum des Frequenzbereichs) durchgelassen werden, während hochfrequente Details herausgefiltert werden.
Hochpassfilterung (Kantenerkennung)
Ein Hochpassfilter entfernt niederfrequente Komponenten und hebt Kanten hervor. Hochpass-Maske:
highpass_mask = np.ones((rows, cols), np.uint8)
highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
highpass_mask = np.ones((rows, cols), np.uint8): Initialisiert eine Maske aus Einsen mit denselben Dimensionen wie das Bild, sodass zunächst alle Frequenzen durchgelassen werden;highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: Setzt ein kleines 10×10-Quadrat im Zentrum (Niederfrequenzbereich) auf Null und blockiert damit diese Frequenzen.
Anwendung des Filters
Nach dem Erstellen der Maske muss ein Filter angewendet und das Bild zurück in den Ortsraum transformiert werden:
dft_filtered = dft_shift * mask
dft_inverse = np.fft.ifftshift(dft_filtered) # Inverse shifting
image_filtered = np.fft.ifft2(dft_inverse) # Inverse transformation
image_filtered = np.abs(image_filtered) # Remove negative values
dft_filtered = dft_shift * mask: wendet die Frequenzbereichsmaske (z. B. Tiefpass oder Hochpass) durch elementweise Multiplikation mit der verschobenen DFT des Bildes an;dft_inverse = np.fft.ifftshift(dft_filtered): kehrt die zuvor angewendete Verschiebung um, um die Frequenzkomponenten wieder an ihre ursprünglichen Positionen zu bringen;image_filtered = np.fft.ifft2(dft_inverse): berechnet die Inverse Fourier-Transformation, um die gefilterten Frequenzdaten zurück in den Ortsbereich zu überführen;image_filtered = np.abs(image_filtered): nimmt den Absolutwert, um verbleibende imaginäre Komponenten zu entfernen, was zu einem reellwertigen gefilterten Bild führt.
Swipe to start coding
Es liegt ein Bild des Schafs in der Variable image und ein Bild im Frequenzbereich in der Variable dft_shift vor:
- Die Form der Matrix
imageermitteln und in den Variablenrowsundcolsspeichern; - Den Mittelpunkt berechnen und in
crowundccolspeichern; - Die Variable
low_maskals ein Array aus Nullen mit der Form(rows, cols)und dem Typnp.uint8definieren; - Den 20x20 großen zentralen Bereich von
low_maskauswählen und mit1füllen. - Die Variable
high_maskals ein Array aus Einsen mit der Form(rows, cols)und dem Typnp.uint8definieren; - Den 20x20 großen zentralen Bereich von
high_maskauswählen und mit0füllen; low_maskundhigh_maskaufdft_shiftanwenden und die gefilterten Frequenzen entsprechend inlowpass_dft_filteredundhighpass_dft_filteredspeichern;- Inverse Transformation für
lowpass_dft_filtereddurchführen:- Inverses Shifting durchführen und in
lowpass_dft_inversespeichern; - Inverse Transformation durchführen und das Bild in
image_lowpassspeichern; - Negative Werte aus
image_lowpassentfernen.
- Inverses Shifting durchführen und in
- Inverse Transformation für
highpass_dft_inversedurchführen:- Inverses Shifting durchführen und in
lowpass_dft_inversespeichern; - Inverse Transformation durchführen und das Bild in
image_highpassspeichern; - Negative Werte aus
image_highpassentfernen.
- Inverses Shifting durchführen und in
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen