Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Laagdoorlaat- en Hoogdoorlaatfilters | Beeldverwerking met OpenCV
Essentiële Computervisie

Veeg om het menu te tonen

book
Laagdoorlaat- en Hoogdoorlaatfilters

Een van de belangrijkste voordelen van de Fourier-transformatie is dat deze ons in staat stelt om high-pass en low-pass filtering toe te passen.

Na het toepassen van de Fourier-transformatie:

moeten we een filter masker maken

Low-pass filtering (vervagen)

Een low-pass filter verwijdert hoge-frequentie componenten, wat resulteert in een vervaagd beeld. Low-pass masker:

  • rows, cols = image.shape: haalt het aantal rijen en kolommen op uit de grijswaardenafbeelding;

  • crow, ccol = rows // 2, cols // 2: berekent de coördinaten van het midden van de afbeelding;

  • mask = np.zeros((rows, cols), np.uint8): maakt een masker van nullen met dezelfde afmetingen als de afbeelding;

  • mask[crow-30:crow+30, ccol-30:ccol+30] = 1: stelt een vierkant gebied van 60×60 in het midden van het masker in op 1, waardoor alleen de laagfrequente componenten (dicht bij het midden van het frequentiedomein) worden doorgelaten en hoge-frequentiedetails worden gefilterd.

Hoogdoorlaatfiltering (Randdetectie)

Een hoogdoorlaatfilter verwijdert laagfrequente componenten en versterkt randen. Hoogdoorlaatmasker:

  • highpass_mask = np.ones((rows, cols), np.uint8): initialiseert een masker van enen met dezelfde afmetingen als de afbeelding, wat betekent dat alle frequenties aanvankelijk worden doorgelaten;

  • highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: stelt een klein vierkant van 10×10 in het midden (laagfrequent gebied) in op nul, waardoor deze frequenties effectief worden geblokkeerd.

Het filter toepassen

Na het aanmaken van het masker moet het filter worden toegepast en de afbeelding terug worden getransformeerd naar het ruimtelijk domein:

  • dft_filtered = dft_shift * mask: past de frequentiedomeinmasker toe (bijvoorbeeld low-pass of high-pass) door elementgewijze vermenigvuldiging met de verschoven DFT van de afbeelding;

  • dft_inverse = np.fft.ifftshift(dft_filtered): draait de eerder toegepaste verschuiving terug om de frequentiecomponenten naar hun oorspronkelijke posities te brengen;

  • image_filtered = np.fft.ifft2(dft_inverse): berekent de Inverse Fourier-transformatie om de gefilterde frequentiedata terug te zetten naar het ruimtelijk domein;

  • image_filtered = np.abs(image_filtered): neemt de absolute waarde om eventuele resterende imaginaire componenten te verwijderen, wat resulteert in een reëelwaardige gefilterde afbeelding.

Taak

Swipe to start coding

Je krijgt een afbeelding van het schaap in de variabele image en een afbeelding in het frequentiedomein in de variabele dft_shift:

  • Verkrijg de vorm van de image matrix en sla deze op in de variabelen rows en cols;
  • Bereken het middelpunt en sla deze op in crow en ccol;
  • Definieer de low_mask als een array van nullen met de vorm (rows, cols) en het type np.uint8;
  • Kies het 20x20 centrale gebied van low_mask en vul dit met 1.
  • Definieer de high_mask als een array van enen met de vorm (rows, cols) en het type np.uint8;
  • Kies het 20x20 centrale gebied van high_mask en vul dit met 0;
  • Pas low_mask en high_mask toe op dft_shift en sla de gefilterde frequenties respectievelijk op in lowpass_dft_filtered en highpass_dft_filtered;
  • Voer een inverse transformatie uit voor lowpass_dft_filtered:
    • Voer inverse shifting uit en sla op in lowpass_dft_inverse;
    • Voer een inverse transformatie uit en sla de afbeelding op in image_lowpass;
    • Verwijder negatieve waarden voor image_lowpass.
  • Voer een inverse transformatie uit voor highpass_dft_inverse:
    • Voer inverse shifting uit en sla op in lowpass_dft_inverse;
    • Voer een inverse transformatie uit en sla de afbeelding op in image_highpass;
    • Verwijder negatieve waarden voor image_highpass.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 3
Onze excuses dat er iets mis is gegaan. Wat is er gebeurd?

Vraag AI

expand
ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

book
Laagdoorlaat- en Hoogdoorlaatfilters

Een van de belangrijkste voordelen van de Fourier-transformatie is dat deze ons in staat stelt om high-pass en low-pass filtering toe te passen.

Na het toepassen van de Fourier-transformatie:

moeten we een filter masker maken

Low-pass filtering (vervagen)

Een low-pass filter verwijdert hoge-frequentie componenten, wat resulteert in een vervaagd beeld. Low-pass masker:

  • rows, cols = image.shape: haalt het aantal rijen en kolommen op uit de grijswaardenafbeelding;

  • crow, ccol = rows // 2, cols // 2: berekent de coördinaten van het midden van de afbeelding;

  • mask = np.zeros((rows, cols), np.uint8): maakt een masker van nullen met dezelfde afmetingen als de afbeelding;

  • mask[crow-30:crow+30, ccol-30:ccol+30] = 1: stelt een vierkant gebied van 60×60 in het midden van het masker in op 1, waardoor alleen de laagfrequente componenten (dicht bij het midden van het frequentiedomein) worden doorgelaten en hoge-frequentiedetails worden gefilterd.

Hoogdoorlaatfiltering (Randdetectie)

Een hoogdoorlaatfilter verwijdert laagfrequente componenten en versterkt randen. Hoogdoorlaatmasker:

  • highpass_mask = np.ones((rows, cols), np.uint8): initialiseert een masker van enen met dezelfde afmetingen als de afbeelding, wat betekent dat alle frequenties aanvankelijk worden doorgelaten;

  • highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0: stelt een klein vierkant van 10×10 in het midden (laagfrequent gebied) in op nul, waardoor deze frequenties effectief worden geblokkeerd.

Het filter toepassen

Na het aanmaken van het masker moet het filter worden toegepast en de afbeelding terug worden getransformeerd naar het ruimtelijk domein:

  • dft_filtered = dft_shift * mask: past de frequentiedomeinmasker toe (bijvoorbeeld low-pass of high-pass) door elementgewijze vermenigvuldiging met de verschoven DFT van de afbeelding;

  • dft_inverse = np.fft.ifftshift(dft_filtered): draait de eerder toegepaste verschuiving terug om de frequentiecomponenten naar hun oorspronkelijke posities te brengen;

  • image_filtered = np.fft.ifft2(dft_inverse): berekent de Inverse Fourier-transformatie om de gefilterde frequentiedata terug te zetten naar het ruimtelijk domein;

  • image_filtered = np.abs(image_filtered): neemt de absolute waarde om eventuele resterende imaginaire componenten te verwijderen, wat resulteert in een reëelwaardige gefilterde afbeelding.

Taak

Swipe to start coding

Je krijgt een afbeelding van het schaap in de variabele image en een afbeelding in het frequentiedomein in de variabele dft_shift:

  • Verkrijg de vorm van de image matrix en sla deze op in de variabelen rows en cols;
  • Bereken het middelpunt en sla deze op in crow en ccol;
  • Definieer de low_mask als een array van nullen met de vorm (rows, cols) en het type np.uint8;
  • Kies het 20x20 centrale gebied van low_mask en vul dit met 1.
  • Definieer de high_mask als een array van enen met de vorm (rows, cols) en het type np.uint8;
  • Kies het 20x20 centrale gebied van high_mask en vul dit met 0;
  • Pas low_mask en high_mask toe op dft_shift en sla de gefilterde frequenties respectievelijk op in lowpass_dft_filtered en highpass_dft_filtered;
  • Voer een inverse transformatie uit voor lowpass_dft_filtered:
    • Voer inverse shifting uit en sla op in lowpass_dft_inverse;
    • Voer een inverse transformatie uit en sla de afbeelding op in image_lowpass;
    • Verwijder negatieve waarden voor image_lowpass.
  • Voer een inverse transformatie uit voor highpass_dft_inverse:
    • Voer inverse shifting uit en sla op in lowpass_dft_inverse;
    • Voer een inverse transformatie uit en sla de afbeelding op in image_highpass;
    • Verwijder negatieve waarden voor image_highpass.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 3
Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Onze excuses dat er iets mis is gegaan. Wat is er gebeurd?
some-alt