Lavpas- og Højpasfiltre
En af de vigtigste fordele ved Fourier-transformationen er, at den muliggør high-pass og low-pass filtrering.
Efter vi har anvendt Fourier-transformationen:
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
vi skal oprette en filtrerings-maske
Low-pass filtrering (Sløring)
Et low-pass filter fjerner højfrekvente komponenter, hvilket resulterer i et sløret billede. 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
: henter antallet af rækker og kolonner fra gråtonebilledet;crow, ccol = rows // 2, cols // 2
: beregner billedets centrumkoordinater;mask = np.zeros((rows, cols), np.uint8)
: opretter en maske af nuller med samme dimensioner som billedet;mask[crow-30:crow+30, ccol-30:ccol+30] = 1
: sætter et 60×60 kvadratisk område i midten af masken til 1, hvilket kun tillader lavfrekvente komponenter (nær centrum af frekvensdomænet) at passere igennem, mens højfrekvente detaljer filtreres fra.
Højpasfiltrering (Kantdetektion)
Et højpasfilter fjerner lavfrekvente komponenter og fremhæver kanter. Højpasmaske:
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)
: initialiserer en maske af ettaller med samme dimensioner som billedet, hvilket betyder at alle frekvenser i starten får lov at passere;highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
: sætter et lille 10×10 kvadrat i midten (lavfrekvent område) til nul, hvilket effektivt blokerer disse frekvenser.
Anvendelse af filteret
Efter oprettelse af masken skal vi anvende et filter og transformere vores billede tilbage til det rumlige domæne:
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
: anvender frekvensdomænemasken (f.eks. low-pass eller high-pass) ved elementvis multiplikation med det forskudte DFT af billedet;dft_inverse = np.fft.ifftshift(dft_filtered)
: ophæver det tidligere anvendte skift for at bringe frekvenskomponenterne tilbage til deres oprindelige positioner;image_filtered = np.fft.ifft2(dft_inverse)
: beregner den inverse Fourier-transformation for at konvertere de filtrerede frekvensdata tilbage til det rumlige domæne;image_filtered = np.abs(image_filtered)
: tager den absolutte værdi for at fjerne eventuelle resterende imaginære komponenter, hvilket resulterer i et realværdigt filtreret billede.
Swipe to start coding
Du har fået et billede af fåret i variablen image
og et billede i frekvensdomænet i variablen dft_shift
:
- Find formen på
image
-matricen og gem den i variablernerows
ogcols
; - Beregn centrumspunktet og gem det i
crow
ogccol
; - Definér
low_mask
som et array af nuller med formen(rows, cols)
og typennp.uint8
; - Vælg det 20x20 centrale område af
low_mask
og udfyld det med1
. - Definér
high_mask
som et array af ettaller med formen(rows, cols)
og typennp.uint8
; - Vælg det 20x20 centrale område af
high_mask
og udfyld det med0
; - Anvend
low_mask
oghigh_mask
pådft_shift
og gem de filtrerede frekvenser i henholdsvislowpass_dft_filtered
oghighpass_dft_filtered
; - Udfør invers transformation for
lowpass_dft_filtered
:- Udfør invers shifting og gem i
lowpass_dft_inverse
; - Udfør invers transformation og gem billedet i
image_lowpass
; - Fjern negative værdier for
image_lowpass
.
- Udfør invers shifting og gem i
- Udfør invers transformation for
highpass_dft_inverse
:- Udfør invers shifting og gem i
lowpass_dft_inverse
; - Udfør invers transformation og gem billedet i
image_highpass
; - Fjern negative værdier for
image_highpass
.
- Udfør invers shifting og gem i
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain the difference between high-pass and low-pass filtering in more detail?
How do I choose the size of the mask for filtering?
What are some practical applications of these filters in image processing?
Awesome!
Completion rate improved to 3.45
Lavpas- og Højpasfiltre
Stryg for at vise menuen
En af de vigtigste fordele ved Fourier-transformationen er, at den muliggør high-pass og low-pass filtrering.
Efter vi har anvendt Fourier-transformationen:
dft = np.fft.fft2(image)
dft_shift = np.fft.fftshift(dft)
vi skal oprette en filtrerings-maske
Low-pass filtrering (Sløring)
Et low-pass filter fjerner højfrekvente komponenter, hvilket resulterer i et sløret billede. 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
: henter antallet af rækker og kolonner fra gråtonebilledet;crow, ccol = rows // 2, cols // 2
: beregner billedets centrumkoordinater;mask = np.zeros((rows, cols), np.uint8)
: opretter en maske af nuller med samme dimensioner som billedet;mask[crow-30:crow+30, ccol-30:ccol+30] = 1
: sætter et 60×60 kvadratisk område i midten af masken til 1, hvilket kun tillader lavfrekvente komponenter (nær centrum af frekvensdomænet) at passere igennem, mens højfrekvente detaljer filtreres fra.
Højpasfiltrering (Kantdetektion)
Et højpasfilter fjerner lavfrekvente komponenter og fremhæver kanter. Højpasmaske:
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)
: initialiserer en maske af ettaller med samme dimensioner som billedet, hvilket betyder at alle frekvenser i starten får lov at passere;highpass_mask[crow-5:crow+5, ccol-5:ccol+5] = 0
: sætter et lille 10×10 kvadrat i midten (lavfrekvent område) til nul, hvilket effektivt blokerer disse frekvenser.
Anvendelse af filteret
Efter oprettelse af masken skal vi anvende et filter og transformere vores billede tilbage til det rumlige domæne:
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
: anvender frekvensdomænemasken (f.eks. low-pass eller high-pass) ved elementvis multiplikation med det forskudte DFT af billedet;dft_inverse = np.fft.ifftshift(dft_filtered)
: ophæver det tidligere anvendte skift for at bringe frekvenskomponenterne tilbage til deres oprindelige positioner;image_filtered = np.fft.ifft2(dft_inverse)
: beregner den inverse Fourier-transformation for at konvertere de filtrerede frekvensdata tilbage til det rumlige domæne;image_filtered = np.abs(image_filtered)
: tager den absolutte værdi for at fjerne eventuelle resterende imaginære komponenter, hvilket resulterer i et realværdigt filtreret billede.
Swipe to start coding
Du har fået et billede af fåret i variablen image
og et billede i frekvensdomænet i variablen dft_shift
:
- Find formen på
image
-matricen og gem den i variablernerows
ogcols
; - Beregn centrumspunktet og gem det i
crow
ogccol
; - Definér
low_mask
som et array af nuller med formen(rows, cols)
og typennp.uint8
; - Vælg det 20x20 centrale område af
low_mask
og udfyld det med1
. - Definér
high_mask
som et array af ettaller med formen(rows, cols)
og typennp.uint8
; - Vælg det 20x20 centrale område af
high_mask
og udfyld det med0
; - Anvend
low_mask
oghigh_mask
pådft_shift
og gem de filtrerede frekvenser i henholdsvislowpass_dft_filtered
oghighpass_dft_filtered
; - Udfør invers transformation for
lowpass_dft_filtered
:- Udfør invers shifting og gem i
lowpass_dft_inverse
; - Udfør invers transformation og gem billedet i
image_lowpass
; - Fjern negative værdier for
image_lowpass
.
- Udfør invers shifting og gem i
- Udfør invers transformation for
highpass_dft_inverse
:- Udfør invers shifting og gem i
lowpass_dft_inverse
; - Udfør invers transformation og gem billedet i
image_highpass
; - Fjern negative værdier for
image_highpass
.
- Udfør invers shifting og gem i
Løsning
Tak for dine kommentarer!
single