Laagdoorlaat- en Hoogdoorlaatfilters
Een van de belangrijkste voordelen van de Fourier-transformatie is dat het ons in staat stelt om high-pass en low-pass filtering toe te passen.
Na het toepassen van de Fourier-transformatie:
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
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
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: 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)
highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
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) op nul, waardoor deze frequenties effectief worden geblokkeerd.
Filter toepassen
Na het aanmaken van het masker moet het filter worden toegepast en de foto terug worden getransformeerd naar het ruimtelijk domein:
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: past de frequentiedomeinmasker toe (bijvoorbeeld laagdoorlaat of hoogdoorlaat) door elementgewijze vermenigvuldiging met de verschoven DFT van de afbeelding;dft_inverse = np.fft.ifftshift(dft_filtered): maakt de eerder toegepaste verschuiving ongedaan om de frequentiecomponenten terug 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.
Swipe to start coding
Je hebt 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
imagematrix en sla deze op in de variabelenrowsencols; - Bereken het middelpunt en sla deze op in
crowenccol; - Definieer de
low_maskals een array van nullen met de vorm(rows, cols)en het typenp.uint8; - Kies het 20x20 centrale gebied van
low_masken vul dit met1. - Definieer de
high_maskals een array van enen met de vorm(rows, cols)en het typenp.uint8; - Kies het 20x20 centrale gebied van
high_masken vul dit met0; - Pas
low_maskenhigh_masktoe opdft_shiften sla de gefilterde frequenties respectievelijk op inlowpass_dft_filteredenhighpass_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 inverse shifting uit en sla op in
- 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.
- Voer inverse shifting uit en sla op in
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.45
Laagdoorlaat- en Hoogdoorlaatfilters
Veeg om het menu te tonen
Een van de belangrijkste voordelen van de Fourier-transformatie is dat het ons in staat stelt om high-pass en low-pass filtering toe te passen.
Na het toepassen van de Fourier-transformatie:
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
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
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: 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)
highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
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) op nul, waardoor deze frequenties effectief worden geblokkeerd.
Filter toepassen
Na het aanmaken van het masker moet het filter worden toegepast en de foto terug worden getransformeerd naar het ruimtelijk domein:
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: past de frequentiedomeinmasker toe (bijvoorbeeld laagdoorlaat of hoogdoorlaat) door elementgewijze vermenigvuldiging met de verschoven DFT van de afbeelding;dft_inverse = np.fft.ifftshift(dft_filtered): maakt de eerder toegepaste verschuiving ongedaan om de frequentiecomponenten terug 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.
Swipe to start coding
Je hebt 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
imagematrix en sla deze op in de variabelenrowsencols; - Bereken het middelpunt en sla deze op in
crowenccol; - Definieer de
low_maskals een array van nullen met de vorm(rows, cols)en het typenp.uint8; - Kies het 20x20 centrale gebied van
low_masken vul dit met1. - Definieer de
high_maskals een array van enen met de vorm(rows, cols)en het typenp.uint8; - Kies het 20x20 centrale gebied van
high_masken vul dit met0; - Pas
low_maskenhigh_masktoe opdft_shiften sla de gefilterde frequenties respectievelijk op inlowpass_dft_filteredenhighpass_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 inverse shifting uit en sla op in
- 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.
- Voer inverse shifting uit en sla op in
Oplossing
Bedankt voor je feedback!
single