research blog for data science

Short-time Fourier Transform(STFT) 과 Discrete Wavelet Transform(DWT)

|

Fourier Transform의 단점은 무한히 흘러가는 파동에 대한 주파수 분석만 가능하기 때문에 국소적인 시간 부분 단위로는 주파수 분석을 할 수가 없습니다. 따라서 시간-주파수 영역 모두 분석할 수 있는 방법으로 Short-term Fourier Transform과 Discrete Wavelet Transform이 있습니다.

Limitation of Fourier Transform

그림 1. Fourier Transform

<그림 1.>을 보면, 시간에 따라 주파수가 변화는 신호에 대해서 푸리에 변환은 시간에 따른 변화 정보를 담지 못합니다. 일정한 속도로 진동하는 정현파(sine함수와 cosine함수)가 아니라 갑자기 sharp한 포인트를 가지는 파동같은 경우에도 이러한 변화를 푸리에 변환을 통해선 확인할 수가 없습니다.

따라서, 일정한 시간 블럭(window)로 나눠서 각각 블럭에 대해 푸리에 변환을 적용한다면 이러한 푸리에 변환의 단점을 어느정도 완화시킬 수 있습니다. 이 방법이 바로 국소 푸리에 변환(Short-Time Fourier Transform, STFT)입니다.

Short-Time Fourier Transform(STFT)

\[\hat f(t, u) = \int_{-\infty}^{\infty}f(t')w(t'-t)e^{-i2\pi t'u}dt' \tag{1}\]

국소 푸리에 변환은 신호를 슬라이딩 윈도우 기법처럼 특정 길이를 가진 윈도우를 시그널 위에 움직이면서, 각각 윈도우에서 푸리에 변환을 하는 것입니다. 특정 시간 t에 대해서 푸리에 변환을 여러번 계산하게 되는데, 계산한 횟수만큼 평균을 구해서 특정 시간 t에서의 주파수 스펙트럼을 구합니다.

그렇다면 국소 푸리에 변환의 결과에 영향을 주는 변수는 어떤걸까요? 바로 슬라이딩 윈도우의 크기입니다.

Trade-offs between frequency resolution and time resolution

그림 2. Trade-Offs between Frequency and Time in STFT

윈도우 크기가 너무 작으면(narrow window), 주파수 영역의 해상도가 떨어집니다. 조금만 생각하면 이해하기 쉽습니다. 푸리에 변환하는 대상인 윈도우를 크기를 작게해서 변환하는 윈도우 갯수를 늘린다면, 비슷한 시각 근처의 윈도우들의 분석 결과가 대부분 유사할 것입니다. 따라서, 특정 시간 t 주변에 frequency 스펙트럼이 비슷하게 그려지기 때문에, <그림 2.> 처럼 frequency 축으로 ‘spread-out’ 되어 해상도가 떨어집니다. 반대로 윈도우 크기가 너무 크면(broad window), 반대로 주파수 영역 해상도는 올라가지만 time 영역 해상도가 떨어집니다. <그림 2.>를 보시면, 왼쪽그림으로 갈수록 시간 영역에 흐릿한 영역이 넓어지는 것을 확인할 수 있습니다.

그렇다면, 어떻게 해야 시간 영역과 주파수 영역 모두 해상도를 높게 가져갈 수 있을까요 ? <그림 1.>의 신호에서 진동이 빠른 부분(높은 주파수)은 윈도우 크기를 작게 가져가고, 진동이 느린 부분(낮은 주파수)은 윈도우 크기를 넓게 가져가는 것입니다. 그러나, STFT는 고정된 윈도우 사이즈에 대해서만 계산이 가능합니다. 이의 단점을 해결한 것이 바로 웨이블릿 변환(Wavelet Transform)입니다.

Wavelet Transform

푸리에 변환은 cosine과 sine으로 구성된 기저함수로의 분해입니다. 여기서 cosine과 sine은 정현파로, 시간에 따라 변하지 않고 일정한 속도와 크기로 움직입니다. 반면에 웨이블릿 변환은 ‘웨이블릿(wavelet)’이라는 기저함수로 분해됩니다. Wave는 파동, let은 ‘작다’ 라는 의미로, 작은 파동을 뜻합니다. 웨이블릿 변환은 사전에 정의된 웨이블릿 기저함수들로 분해하는 것입니다. 그렇다면 웨이블릿 변환은 왜 시간과 주파수 영역 둘 다에서 높은 해상도를 가지는 걸까요 ? 웨이블릿의 특징을 살펴보면 알 수 있습니다.

그림 3. Example Wavelets

<그림 1.>은 웨이블릿 함수의 예입니다. 웨이블릿은 국소 시간 부분에만 파동이 존재하고, 대부분은 0의 값을 가지는 파동입니다.

A Wavelet is wave-like oscillation that is localized in time

웨이블릿은 2가지 파라미터가 있습니다. scale과 location입니다. Scale은 웨이블릿 파동을 늘이거나 줄이는데 관여합니다.

그림 4. 웨이블릿의 scale변수

scale값이 크면, 웨이블릿은 늘어난 형태로 즉 작은 주파수를 가지게 되고, 국소 시간 부분의 크기가 증가합니다. 반대로 scale이 작아지면 웨이블릿은 큰 주파수를 가지게 되고 국소 시간 부분의 크기가 감소합니다.

그림 5. 웨이블릿의 location변수

location변수는 wavelet의 이동과 관련됩니다. 주어진 location 변수만큼 웨이블릿은 주어진 신호를 슬라이딩하면서 변환을 계산하는 것입니다. 이러한 특징 때문에 웨이블릿 변환은 합성곱(convolution)으로 볼 수 있습니다.

그림 6. 웨이블릿 변환 애니메이션

따라서, 웨이블릿 변환은 작은 주파수에 대해선 넓은 윈도우 크기를 가지고, 큰 주파수에 대해선 좁은 윈도우 크기를 가지기 때문에 시간과 주파수 두 영역 모두에서 높은 해상도를 가질 수 있게 되는 것입니다.

Differences among FT, STFT, and WT

그림 5. FT, STFT 와 WT 비교

<그림 5.>는 푸리에 변환, 국소 푸리에 변환과 웨이블릿 변환을 비교한 그림입니다. FT는 time domain영역에 대한 주파수 변화는 볼 수 없고, STFT는 모두 동일한 윈도우 크기에 대해서만 주파수 영역을 분석할 수 있습니다. 반면에 WT는 주파수 크기에 따른 유연한 윈도우 크기를 설정하여 시간과 주파수 영역에 대한 해상도를 높일 수 있습니다.

Various kinds of Wavelets

아래는 다양한 웨이블릿 함수입니다.

그림 6. 웨이블릿 종류들

그림에서 다양한 웨이블릿인 것처럼, 어떤 웨이블릿을 선택하느냐에 따라 다른 변환 결과를 갖게 될 것입니다. 따라서, 주어진 신호에서 어떠한 특징을 뽑고 싶은지를 판단해야 하므로, 각 웨이블릿의 특징들을 살펴봐야 합니다. 여기서는 생략하도록 하겠습니다.

Discrete Wavelet Transform

좀 더 들어가서, 이산 웨이블릿 변환의 계산과정에 대해 살펴보겠습니다. 웨이블릿 변환은 해당 신호가 주어진 scale과 location 변수를 가진 wavelet과 얼마만큼 닮았는지에 대한 양에 해당되는 계수를 구하는 과정입니다. 따라서 이 계수들은 filter-bank를 반복적으로 적용하는 형태로 순차적으로 계산됩니다.

그림 7. Filter bank view of wavelet decomposition

이산 웨이블릿 변환에서는 두 변수 scale(a)과 location(b)은 2의 배수씩 증가시켜서 다양한 웨이블릿 형태를 얻습니다.

\[a^j = 2^j , \,\,\,\, b_{j,k} = 2^jk \triangle t, \\where \,\, j = 1, 2, \dots, \infty, \\k=-\infty, \dots, -2, -1, 0, 1, 2, \dots, \infty\]

직관적으로 이해하면, scale이 커질수록 주파수가 작아지기 때문에 국소 시간 부분의 크기가 증가합니다. 따라서, 여기에 맞춰서 scale이 커질수록 shift되는 정도도 큼직해야하고, 반면에 샘플링 정도는 작아져야 합니다. 그렇게 되어야 시간-주파수 영역에서의 해상도를 유지할 수 있습니다(그림 8.).

그림 8. dyadic sampling

따라서 처음에 적용하는 웨이블릿은 scale이 가장 작기 때문에, 높은 주파수 영역대의 웨이블릿과의 신호와의 합성곱의 결과로 해당 웨이블릿과 유산한 양이 계산됩니다. 그렇다면 나머지 주파수 영역대에 대해서도 그 다음 scale인 2배된 scale을 통과해야 하는데 이는 마치 high-pass filter를 통과하고 난 나머지 부분에 대해서 처음 적용했던 필터보단 낮지만 높은 주파수 영역대를 살펴보는 또다른 high-pass filter를 통과시키는 것과 같은 과정을 거치게 됩니다. 따라서 결국엔 recursive한 형태를 보이게 되는 겁니다.

그림 9. filter bank view of wavelet decomposition(2)


이상으로 포스팅을 마치겠습니다.


  1. The Wavelet Transform, https://towardsdatascience.com/the-wavelet-transform-e9cfa85d7b34
  2. Lecture 16 : Limitations of the Fourier Transform: STFT, https://qiml.radiology.wisc.edu/wp-content/uploads/sites/760/2020/10/notes_016_stft.pdf
  3. Lecture 17 : Wavelets: Motivation and Description, https://qiml.radiology.wisc.edu/wp-content/uploads/sites/760/2020/10/notes_017_wavelets_intro.pdf

Comments