Fourier Transform 이란?
푸리에 변환(Fourier Transform)은 신호처리(Signal Processing), 컴퓨터 비전(Computer Vision), 그래프 신호처리(Graph signal processing) 등의 분야에서 특정 입력 신호(signal)를 여러개의 단순한 sin과 cos 주기 함수들로 분해하여 나타내기 위해 사용된다.
위 그림에서 주파수(frequency)와 진폭(amplitude)이 각기 다른 파란색 sin과 cos 주기 함수수들을 합치면 빨간색의 신호가 된다.
이렇게 신호를 단순한 주기함수들로 분해하는 것을 signal을 time domain 에서 frequency domain으로 옮기는 것으로 볼 수 있다.
위 그림의 오른쪽 그림에서 위에 있는 그림은 signal을 time domain에 나타낸 모습,
그 밑의 파란색 그림은 같은 signal을 frequency domain에 나타낸 모습이다.
Fourier Transform 을 사용하면 복잡해 보이는 어떠한 신호(주기 신호, 비주기 신호)도 모두 단순한 주기함수들의 선형 결합으로 나타낼 수 있다. 이렇게 신호를 주기함수들로 분해하여 나타내게되면 각 주기함수들의 frequency와 amplitude만으로 신호를 나타낼 수 있어 데이터를 압축하는데에도 아주 효율적이다.
(반대로 time domain에 있는 signal을 시간 t에 대해 저장하려면 시간 축(t 축)을 촘촘하게 쪼개서 각 구간마다의 signal 정보를 저장해야해서 비효율적이다.)
Signal Processing 에서는 Fourier transform을 하는 것을 time domain에서 frequency domain으로의 변환,
computer vision이나 graph signal processing 에서는 spatial domain 에서 frequency domain으로의 변환이라고 한다.
Fourier transform 을 수식으로 표현하기 전에 먼저
Inverse Fourier transform(푸리에 역변환)을 살펴보는 것이 이해하는데에 더 도움이 된다.
\(f(x)\)는 입력으로 받은 원본 signal(복잡한 신호)이다. \(i\)는 허수, \(e^{2\pi ix\xi}\)는 \(\xi\)를 frequency로하는 주기함수,
\(\hat{f}(\xi)\)는 해당 주기함수의 amplitude를 나타내는 coefficient(계수)이다.
Inverse Fourier transform은 한마디로 각각의 frequency와 amplitude를 갖는 주기함수들의 합(적분한 것)이 원본 signal이라는 것을 수식으로 풀어낸 것이다.
적분구간이 \(-\infty\)에서 \(\infty\)까지인 이유는 원본 signal이 주기신호가 아닌 비주기 신호인 경우에도 식이 적용가능하도록
비주기 함수를 주기가 무한대인 주기 함수로 가정하기 위함이다.
이제 Fourier transform(푸리에 변환)을 수식으로 살펴보자.
Fourier transform은 \(\hat{f}(\xi)\) 즉, \(e^{2\pi ix\xi}\)의 amplitude를 나타내는 coefficient을 구하기 위한 식이다.
앞서 언급한 것 처럼 원본 signal을 주기함수들로 분해했을때 구성하고 있는 주기함수들의 amplitude를 구할 수 있다.
\(e^{2\pi ix\xi}\)에 대해 좀 더 깊이 알아보기 전에 3가지 정의에 대해 짚고 넘어가자.
- Trigonometric Form : 모든 주기함수는 삼각함수의 선형 결합으로 나타낼 수 있다.
- Compact Form : sin함수는 cos 함수의 선형결합으로 나타낼 수 있다.
- Exponential Form : 삼각함수는 지수함수의 선형결합으로 나타낼 수 있다.
[reference]
푸리에 급수와 푸리에 변환(Fourier Transform)에 대해
안녕하세요 레몬입니다. 맨 처음으로 통신이론 과목소개 글을 작성하려 했는데, 통신이론이나 신호 및 시스템 과목을 소개하려니 푸리에 변환에 대한 언급이 없을 수가 없어서 차라리 가장 먼
renelemon.tistory.com
위 식에서 주기함수를 뜻하는 \(e^{2\pi ix\xi}\)를 좀 더 잘 이해하기 위해서는 Euler's formula(오일러공식)을 들여다보아야한다.
오일러 공식을 통해 복소지수함수는 삼각함수로 표현될 수 있다는 것을 알 수 있다.
이를 \(e^{2\pi ix\xi}\)에 적용하면 \(e^{2\pi ix\xi}\)는 real_part가 \(cos(2\pi ix\xi)\)이고 imaginary_part가 \(i sin(2\pi ix\xi)\)인 , 즉 \(\xi\)를 frequency로 하는 지수함수를 복소지수함수로 표현한 것이라는 것을 알 수 있다.
Fourier 변환식과 그 역변환식을 살펴보면 Fourier transform formula에서는 \(e^{-2\pi ix\xi}\)를 사용한다는 것을 알 수 있다.
-를 붙인 이유는 내적을 하기 위해서 인데(복소수에서는 내적을 하기 위해 허수 부분의 부호를 반대로 바꾼다),
\(f(x)\)와 \(e^{2\pi ix\xi}\)를 내적을 하면 우리가 원하는 coefficient \(\hat{f}(\xi)\)를 구할 수 있기 때문이다.
이 배경에는 \(e^{2\pi ix\xi}\)를 모든 신호를 생성할 수 있는 orthogonal basis(직교기저) 함수들의 집합으로 봤을때, 모든 신호는 이 직교기저함수들의 선형결합으로 표현될 수 있는데, 이때 basis함수들이 모두 orthogonal하므로 선형결합 계수를 직교기저함수와 입력 신호의 내적으로 구할 수 있다는 사실이 잠재되어있다.
다크프로그래머스님의 푸리에 변환에 대해 정리해 놓으신 글을 보고 나름대로 이해하여 다시 정리해보았는데
잘못 이해한 점이 있으면 댓글로 남겨주시면 감사하겠습니다:-)
[reference]
Fourier Transform(푸리에 변환)의 이해와 활용
푸리에 변환(Fourier transform)에 대해서는 예전부터 한번 정리를 해야겠다고 생각만 했었는데 이번에 기회가 되어 글을 올립니다. 푸리에 변환(Fourier transform)은 신호처리, 음성, 통신 분야에서 뿐만
darkpgmr.tistory.com