푸리에 변환(Fourier transform) (2) - 영상에서의 응용

 우리는 앞서 푸리에 변환(Fourier transform)이 무엇이고 이를 유도하는 방법에 대해서 알아보았다. 사실 푸리에 변환을 사용하기에 이전 글의 유도과정은 전혀 중요하지 않다. 공대생의 입장에서 푸리에 변환은 주어진 신호를 주파수 영역에서 손쉽게 해석 및 처리하기 위한 도구라고만 알면 끝이다. 다만 이를 사용하는 입장에서 한번쯤은 의문을 가져볼만하다.

 

 글로 풀어진 푸리에 변환의 해석이나 유도는 여러번 보아도 전혀 와닿지 않을 것이다. 과연 이것이 어떻게 우리의 연구나 과제에 도움이 되고 어떻게 사용할지는 실제 예를 통해서 습득하는 것이 가장 효과적이다(적어도 공대생인 필자는 그랬다.). 이제 좀 더 눈이 보이고 직관적인 예를 통해서 자세히 알아보고자 한다.

 

 본 글에서는 다양한 신호 중에 영상을 이용한 푸리에 변환의 예를 다룰 예정이다. 

 

 

1. 고역통과 및 저역통과 필터(High-pass filter & Low-pass filter)

 

 일반적으로 고역통과 및 저역통과 필터는 다만 영상에서 쓰일 뿐만 아니라 신호의 주파수의 필터링이 필요한 전기적 장치에서 흔히 쓰이는 말이다(전자파나 음파 분야에서는 필터보다 여파기라는 단어를 쓴다.). 아무튼 영상처리에서는 아래와 같이 정의할 수 있다.

 

- 고역통과 필터: 신호의 주파수 중 기준값 이하의 주파수를 제거하고, 기준값 이상의 주파수를 통과시키는 필터

- 저역통과 필터: 신호의 주파수 중 기준값 이상의 주파수를 제거하고, 기준값 이하의 주파수를 통과시키는 필터

 

 고역통과 및 저역통과 필터를 사용하기 위해서는 신호의 푸리에 변환을 통한 주파수 확인이 필요하다. 만약 아래와 같은 영상이 있을때, 영상의 푸리에 변환 후의 신호는 다음 그림과 같다. (대부분의 영상은 이차원이므로 이차원 푸리에 변환이 필요하다. 그리고 모든 영상 정보는 신호가 연속적이지 않기 때문에 불연속 푸리에 변환을 한다. 이차원 푸리에 변환과 불연속 푸리에 변환의 자세한 내용은 본 글에서 다루고자하는 핵심 내용에 벗어나기 때문에 다루지 않겠다. )

 

<고양이 '삼색이' 사진>
<고양이 사진의 2차원 고속 푸리에 변환 후의 실수부분 영상>

 영상을 푸리에 변환을 하면 주어진 영상과 동일한 크기의 주파수 정보를 얻을 수 있다. 이는 불연속적인 픽셀로 이루어진 영상은 최대 주파수가 영상의 크기에 의해서 결정되어지기 때문이다. 이제 주파수 정보를 자세히 보면 중심부(저주파수)가 상대적으로 높은 강도의 신호를 가지고 외부(고주파수)가 상대적으로 낮은 강도의 신호를 가지는 패턴을 볼 수 있을 것이다. 이는 대부분의 영상에서 나타나는 패턴이다. 우리가 흔히 보는 영상이 대부분 저주파수로 이루어져 있음을 알 수 있다.

 

<고역통과 필터>

 

 자, 그럼 먼저 고역통과 필터를 적용해보자. 고역통과 필터는 아래와 같이 만들 수 있다. 기준값은 임의로 결정하였다.

 

<고역통과 필터>

 위 그림에서 흰색 영역은 1을 가지고 검정 영역은 0을 가진다. 즉, 고역통과 필터와 영상의 원소 간의 곱을 하면 중심부의 저주파수는 사라지고 외부에 상대적으로 고주파수만 남게 된다. 그 신호를 다시 푸리에 역변환을 거치면 아래와 같은 영상을 얻을 수 있다.

 

<고역통과 필터링 후의 삼색이 사진>

 

 고양이 사진을 보면 경계부분과 상세한 모양은 남아있지만 그 경계를 채워주는 요소가 결여되어 있다. 이것이 고양이 영상에서의 고주파 신호이다. 그럼 저주파 신호는 어떨까?

 

<저역통과 필터>

 

 위에서와 반대로 저역필터를 만들어준다. 앞서 설정한 기준값 이하의 부분은 1을 가지고 나머지는 0을 가지는 필터이다.  아래 만들어진 저역통과 필터를 푸리에 변환된 영상의 신호에 원소 간의 곱을 한 후에 푸리에 역변환을 하면 다음 고양이을 영상을 얻을 수 있다. 

 

<저역통과 필터>
<저역통과 필터링 후 삼색이 사진>

 이번 영상을 어떤가? 굉장히 오래된 핸드폰으로 찍은 낮은 해상도 그림을 보는 것 같다고 생각하면 정확하게 본 것이다. 고주파 정보란 정해진 길이의 정보(예: 고양이 사진)에서 굉장히 많은 반복수를 가진 정보이다. 다른 말로 특정 공간에서 작게 분해된 정보이고 이런 정보가 많은 영상을 고해상도라고 말한다. 위 영상은 저역통과 필터로 인해서 고해상도가 대부분 사라졌기 때문에 저해상도 영상이다.

 

 필자가 대학교 수업을 들을 때에 담당교수님께서 하신 말씀을 빌리자면,

셀카를 찍으면 얼굴이 부어보이는 이유는 아직 카메라의 해상도가 사람의 눈을 못 따라오기 때문에 카메라에 담기는 정보는 마치 저역통과 필터를 거친 영상이므로 경계부분이 뚜렷하지 않아 그렇게 보인다. 라고 하셨다.

(사실 요즘 카메라는 예전에 비해서는 많이 좋아져서 눈에 띌 정도의 저역통과 필터는 아닌 것 같다. 하하하)

 

 한가지 재미있는 사실을 말해보자면 사람의 눈도 볼 수 있는 최대 주파수(혹은 해상도)가 있기 때문에 멀리있는 사물을 볼 때에는 대부분 저주파수만을 보는 것과 마찬가지이다. 고양이의 원본영상과 저역통과 필터를 거친 영상을 굉장히 축소시키면 멀리서 고양이를 보는 것과 유사한데, 멀어질수록 두 영상의 차이를 점점 구별하기 힘들어진다.

 

<원본 영상과 저역통과 필터를 거친 영상을 축소한 결과>

 

 

2. 주파수강조 필터 (Frequency-emphasizing filter)

 

 주파수강조 필터는 많이들 고역통과 및 저역통과 필터와 혼용되어 불리는데 나는 이를 구분하고 싶다. 주파수강조 필터는 특정주파수를 제거하는 것이 아닌 각 주파수 별로 가중치를 곱하여 데이터를 처리하는 방법이다. 본 글에서는 간단하게 대표적인 몇가지에 대해서만 알아볼 예정이다. 

 

<영상 미분(Image gradient)>

 

  영상처리에 대해서 한번이라도 배운적이 있다면 영상 미분이라면 한번쯤 보았을 것이다. 하지만 이것은 단순히 인접하는 두 픽셀의 값을 빼는 것으로 푸리에 변환이랑은 무관하다. 그 식은 아래와 같다.

$$ \triangledown_{x} f_{x,y} = f_{x+1,y} - f_{x,y}$$

  여기서 \( f_{x,y} \) 는 영상에서의 임의의 좌표를 의미하고 \( \triangledown_{x} \)는 x방향으로의 미분을 의미한다. 이는 푸리에 변환을 이용한 해석이 가능하다.

  공간좌표계에서의 이동은 주파수좌료계에서 $$ \mathcal{F}\left\{f_{x+1,y}\right\} = e^{-i(2\pi) u}\mathcal{F}\left\{f_{x,y}\right\} $$ 이므로

  $$ f_{x+1,y} - f_{x,y} = \mathcal{F}^{-1}\left\{(e^{-i(2\pi) u}-1)\mathcal{F}\left\{f_{x,y}\right\}\right\} = \mathcal{F}^{-1}\left\{(\cos (2\pi u)-1-i \sin (2\pi u))\mathcal{F}\left\{f_{x,y}\right\}\right\}$$ 이다 (exponential 함수에서 삼각함수로의 변환은 오일러공식을 통해 가능하다.).

  여기서 \( \cos (2\pi u)-1-i \sin (2\pi u) \) 가 영상의 푸리에 변환 후에 곱해지는 주파수 가중치이다. 복소수를 포함하고 있기 때문에 이에 절대값을 취하여 가중치의 크기만을 확인하면 다음과 같다.

  $$ |\cos (2\pi u)-1-i \sin (2\pi u)| = 2 - 2\cos (2\pi u)$$

이를 그래프를 그려서 확인하면 낮은 주파수부터 가장 높은 주파수까지 점차 가중치가 상승하는 모양이다(아래 u축의 값은 신경쓰지말고 가중치가 0인 부분을 가장 낮은 주파수로 생각하면 된다.).

<주파수 영역에서의 영상 미분처리의 가중치>

즉, 영상 미분은 주파수가 0인 부분을 제거하고 고주파수를 상대적으로 증폭시키는 고주파수강조 필터이다.

 

<램프 필터(Ramp filter)>

 

 영상 재건에 관심이 있다면 램프 필터를 본 적이 있을 것이다. CT와 같은 의료영상이나 그 외 회전하면 촬영하는 영상 시스템에서 많이 사용되는데, 1차원 영상을 2차원 단면영상으로 해석적으로 재건할 때에 램프필터링 후 각 영상을 합성하게 된다. 램프필터는 단순히 영상을 주파수 영역으로 변환한 뒤에 \( |u| \) 를 곱한 것이다. 이는 주파수영역에서 아래 그림과 같이 표현할 수 있다. 

<주파수 영역에서의 램프 필터의 가중치>
<램프필터링된 삼색이 사진>

 램프필터와 같이 특정주파수 강조 필터들은 주파수를 제거하는 것이 아니고 상대적인 비율을 조절하는 것이라 고역통과 및 저역통과 필터보다 훨씬 자연스러운 이미지가 나온다. 하지만 느낌은 다르다.

 

 이것 외에도 영상처리에서 푸리에 변환을 이용하는 경우가 무수히 많다. 본 글에서는 간단히 응용되는 예를 살펴보았다. 이 후 글에서는 좀 더 구체적인 사례들을 알아보고자 한다.

 

 

※ 본 글은 필자가 공부를 하며 얻은 이해를 바탕으로 적은 글이므로 다소 해석의 오류가 있을 수 있습니다. 글이 도움이 되었다면 하트 클릭 부탁드립니다 :) (비로그인으로도 가능합니다.)

댓글

Designed by JB FACTORY