Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Tiefpass- und Hochpassfilter | Bildverarbeitung mit OpenCV
Computer Vision Essentials

Swipe um das Menü anzuzeigen

book
Tiefpass- und Hochpassfilter

Einer der Hauptvorteile der Fourier-Transformation ist, dass sie Hochpass- und Tiefpassfilterung ermöglicht.

Nach der Anwendung der Fourier-Transformation:

Es ist erforderlich, eine Filter-Maske zu erstellen.

Tiefpassfilterung (Weichzeichnung)

Ein Tiefpassfilter entfernt hochfrequente Komponenten, was zu einem verschwommenen Bild führt. Tiefpassmaske:

  • rows, cols = image.shape: retrieves the number of rows and columns from the grayscale image;

  • crow, ccol = rows // 2, cols // 2: computes the center coordinates of the image;

  • mask = np.zeros((rows, cols), np.uint8): creates a mask of zeros with the same dimensions as the image;

  • mask[crow-30:crow+30, ccol-30:ccol+30] = 1: sets a 60×60 square region at the center of the mask to 1, allowing only the low-frequency components (near the center of the frequency domain) to pass through while filtering out high-frequency details.

Hochpassfilterung (Kantenerkennung)

Ein Hochpassfilter entfernt niederfrequente Komponenten und hebt Kanten hervor. Hochpass-Maske:

  • highpass_mask = np.ones((rows, cols), np.uint8): Initialisiert eine Maske aus Einsen mit denselben Dimensionen wie das Bild, sodass alle Frequenzen zunächst 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 effektiv.

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: 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 an ihre ursprünglichen Positionen zurückzubringen;

  • 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.

Aufgabe

Swipe to start coding

Sie erhalten ein Bild des Schafs in der Variable image und ein Bild im Frequenzbereich in der Variable dft_shift:

  • Ermitteln Sie die Form der Matrix image und speichern Sie diese in den Variablen rows und cols;
  • Berechnen Sie den Mittelpunkt und speichern Sie ihn in crow und ccol;
  • Definieren Sie low_mask als ein Array aus Nullen mit der Form (rows, cols) und dem Typ np.uint8;
  • Wählen Sie den 20x20-Zentralbereich von low_mask und füllen Sie ihn mit 1.
  • Definieren Sie high_mask als ein Array aus Einsen mit der Form (rows, cols) und dem Typ np.uint8;
  • Wählen Sie den 20x20-Zentralbereich von high_mask und füllen Sie ihn mit 0;
  • Wenden Sie low_mask und high_mask auf dft_shift an und speichern Sie die gefilterten Frequenzen entsprechend in lowpass_dft_filtered und highpass_dft_filtered;
  • Führen Sie die Invers-Transformation für lowpass_dft_filtered durch:
    • Führen Sie das inverse Shifting durch und speichern Sie das Ergebnis in lowpass_dft_inverse;
    • Führen Sie die Inverse-Transformation durch und speichern Sie das Bild in image_lowpass;
    • Entfernen Sie negative Werte aus image_lowpass.
  • Führen Sie die Invers-Transformation für highpass_dft_inverse durch:
    • Führen Sie das inverse Shifting durch und speichern Sie das Ergebnis in lowpass_dft_inverse;
    • Führen Sie die Inverse-Transformation durch und speichern Sie das Bild in image_highpass;
    • Entfernen Sie negative Werte aus image_highpass.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 3

Fragen Sie AI

expand
ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

book
Tiefpass- und Hochpassfilter

Einer der Hauptvorteile der Fourier-Transformation ist, dass sie Hochpass- und Tiefpassfilterung ermöglicht.

Nach der Anwendung der Fourier-Transformation:

Es ist erforderlich, eine Filter-Maske zu erstellen.

Tiefpassfilterung (Weichzeichnung)

Ein Tiefpassfilter entfernt hochfrequente Komponenten, was zu einem verschwommenen Bild führt. Tiefpassmaske:

  • rows, cols = image.shape: retrieves the number of rows and columns from the grayscale image;

  • crow, ccol = rows // 2, cols // 2: computes the center coordinates of the image;

  • mask = np.zeros((rows, cols), np.uint8): creates a mask of zeros with the same dimensions as the image;

  • mask[crow-30:crow+30, ccol-30:ccol+30] = 1: sets a 60×60 square region at the center of the mask to 1, allowing only the low-frequency components (near the center of the frequency domain) to pass through while filtering out high-frequency details.

Hochpassfilterung (Kantenerkennung)

Ein Hochpassfilter entfernt niederfrequente Komponenten und hebt Kanten hervor. Hochpass-Maske:

  • highpass_mask = np.ones((rows, cols), np.uint8): Initialisiert eine Maske aus Einsen mit denselben Dimensionen wie das Bild, sodass alle Frequenzen zunächst 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 effektiv.

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: 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 an ihre ursprünglichen Positionen zurückzubringen;

  • 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.

Aufgabe

Swipe to start coding

Sie erhalten ein Bild des Schafs in der Variable image und ein Bild im Frequenzbereich in der Variable dft_shift:

  • Ermitteln Sie die Form der Matrix image und speichern Sie diese in den Variablen rows und cols;
  • Berechnen Sie den Mittelpunkt und speichern Sie ihn in crow und ccol;
  • Definieren Sie low_mask als ein Array aus Nullen mit der Form (rows, cols) und dem Typ np.uint8;
  • Wählen Sie den 20x20-Zentralbereich von low_mask und füllen Sie ihn mit 1.
  • Definieren Sie high_mask als ein Array aus Einsen mit der Form (rows, cols) und dem Typ np.uint8;
  • Wählen Sie den 20x20-Zentralbereich von high_mask und füllen Sie ihn mit 0;
  • Wenden Sie low_mask und high_mask auf dft_shift an und speichern Sie die gefilterten Frequenzen entsprechend in lowpass_dft_filtered und highpass_dft_filtered;
  • Führen Sie die Invers-Transformation für lowpass_dft_filtered durch:
    • Führen Sie das inverse Shifting durch und speichern Sie das Ergebnis in lowpass_dft_inverse;
    • Führen Sie die Inverse-Transformation durch und speichern Sie das Bild in image_lowpass;
    • Entfernen Sie negative Werte aus image_lowpass.
  • Führen Sie die Invers-Transformation für highpass_dft_inverse durch:
    • Führen Sie das inverse Shifting durch und speichern Sie das Ergebnis in lowpass_dft_inverse;
    • Führen Sie die Inverse-Transformation durch und speichern Sie das Bild in image_highpass;
    • Entfernen Sie negative Werte aus image_highpass.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 3
Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
Wir sind enttäuscht, dass etwas schief gelaufen ist. Was ist passiert?
some-alt