CS/영상처리

[영상처리] How to Filter in Frequency Domain(주파수 영역에서 필터링하는 과정) [컴공과고씨]

시간빌게이츠 2022. 6. 2. 00:07
반응형

이제 주파수 영역에서 필터링을 공부해 보겠습니다.

 

어떤 이미지에 주기성이 있는 노이즈가 섞여있다고 할 때 정말 유용합니다.

위 처럼 노이즈가 주기성이 있는 경우 주파수 도메인으로 변경해주면 노이즈가 보일 것입니다. 앞에서 배웠듯이 주기가 큰 (width) 다른 도메인은 반비례하게 나타나기 때문에 저렇게 나오게 되고 또한 크기는 같고 반대쪽에도 생기기 때문에 노이즈에 대한 것이 2개 찍혀있는 것을 볼 수 있습니다. 우리는 주파수를 분석해서 노이즈 주파수만 0인 필터를 만들고 두 개를 곱해주면 노이즈가 제거된 이미지를 볼 수 있을 것입니다.

하지만 이 방법은 많은 문제를 야기 합니다. 그래서 더 자세히 배워보도록 하겠습니다.

 

문제1. discrete 도메인에서  푸리에 변환을 하다 보면 오차가 발생하게 됩니다. 그렇게 되면 실수값이 아닌 복소수 값이 남게 될 수 있습니다. 우리가 원하는 이미지는 복소수 값이 아닌 실수값에 대한 이미지이기 때문에 IDFT 과정에서 값들을 실수값을 취해주어야 합니다.

 

문제2. 우리가 앞에서 배웠듯이 위 처럼 곱하게 되면 반대 도메인에서는 convolution이 일어나는 것이 아니라 circular convolution이 일어나게 됩니다. 

왼쪽을 보시면 우리가 원했던 그림은 오른쪽인데 왼쪽처럼 circular가 일어나 신호가 곂쳐지는 현상을 볼 수 있습니다.

그래서 오른쪽처럼 zero padding 즉 m + n - 1 이상을 0으로 채워 주면 됩니다. 

이미지에서 보면 우리의 이미지를 M x N 이라고 하면 우리가 적용할 필터 h(x,y) 도 M x N 이므로 우리는

2M-1 by 2N-1 이상으로 padding 을 해주어야 합니다. 이때 보통 DFT를 할 때 2의 배수로 하기 때문에 2M x 2N 으로 패딩을 해줍니다.

 

자 그럼 이제 한번 필터링 알고리즘을 설명해 보도록 하겠습니다.

 

1. Padding 을 해준다. (패딩의 종류는 다양함)

2. Centering 

센터링 같은 경우 보통 주파수 도메인에서 해주는 경우가 많습니다.

이유는 time 도메인에서 하게 되면 -1을 곱하게 되어 음수를 처리해야하기 때문에 복잡해 집니다.

그래서 DFT 후 M/2 N/2 만큼 옮겨 센터링을 수행하는 것이 좋습니다. 

3.DFT

푸리에 변환을 통해서 주파수 도멘인으로 변환합니다.

 

4. Filtering

필터와 F(u,v)를 곱해줍니다.

5. IDFT

역 푸리에 변환해줍니다.

이때 중요한 것은 실수값을 취해주어야 하고 역센터링을 해주어 이미지의 위치를 원래대로 돌려줍니다. 

6.Extraction 

마지막으로 이미지는 패딩된 상태이기 때문에 우리가 원래 원했던 만큼의 크기만 뽑아내 줍니다.

 

 

필터링 완료!

 

전체 과정.

 

반응형