Computer Vision/Implement

Frequency domain filtering (python)

jstar0525 2021. 6. 9. 13:17
반응형

Frequency domain filtering


머신비전, 영상처리 분야의 Frequency domain filtering에 대해 알아보겠습니다.

 

이번에는 numpy 라이브러리의 FFT (Fast Fourier Transform)을 이용하였습니다.

 

 

 

 

1. 절차


이미지에 대해서, Frequecy domain filtering의 절차는 아래와 같이 진행됩니다.

 

frequenct domain filtering

https://pt.slideshare.net/ASHI14march/enhancement-in-frequency-domain/3

 

Enhancement in frequency domain

Slide 3 of 42 of Enhancement in frequency domain

www.slideshare.net

 

 

 

 

2. Python 구현


사용한 라이브리러는 다음과 같습니다.

 


 

Input 이미지는 아래와 같습니다.

 

input image


 

FFT를 다음과 같이 실행합니다.

 

Fast Fourier Transform

 


 

FFT shift를 이용하여

zero-frequency component를 가운데로 옮겨줍니다.

 

FFT shift


 

이를 filtering하기 위해서,

사용한 이상적인 low, high-pass filter는 다음과 같습니다.

 

ideal low-pass filter
ideal high-pass filter

http://faculty.salina.k-state.edu/tim/mVision/freq-domain/freq_filters.html#low-pass-filters

 

17.8. Frequency Domain Filters — Machine Vision Study Guide

17.8. Frequency Domain Filters Whereas convolution is used to evaluate filters in the spatial domain, filtering is implemented in the frequency domain by multiplication. The image in the frequency domain is multiplied by the filter’s frequency response i

faculty.salina.k-state.edu

 

 

저는 가운데로부터 일정한 거리(반지름)에 있는 부분을

filtering할 수 있도록 함수를 만들었습니다.

 


 

위의 함수를 이용하여 

low-pass filter를 적용하면 아래의 결과를 얻습니다.

 

low-pass filter


 

inverse FFT shift와 inverse FFT를 적용하여

아래와 같은 최종 결과를 얻을 수 있습니다.

 

low-pass filtering result


 

기존 이미지와 비교하면, 그림이 약간 blur되었음을 알 수 있습니다.

 


반지름을 20으로 줄여 결과를 보면,

확실히 blur된 것을 확인할 수 있습니다.

 

low-pass filter and result


 

 

이번에는 high-pass filter를 적용해보겠습니다.

위에 만들었던 함수를 다시 이용하면 다음과 같습니다.

 

high-pass filter

 


 

이에 대해서,

다시 inverse FFT shift와 inverse FFT를 적용하여

최종 결과를 얻을 수 있습니다.

 

high-pass filter result


 

원본 이미지와 비교하면,

edge부분을 보여줌을 알 수 있습니다.

 


 

 

 

해당소스는 아래의 링크에서 보실 수 있습니다.

 

https://github.com/jstar0525/MachineVision/tree/main/07%20Frequency%20domain%20filtering

 

jstar0525/MachineVision

Machine Vision Algorithm. Contribute to jstar0525/MachineVision development by creating an account on GitHub.

github.com

 

반응형