푸리에 변환의 핵심 수식

이미지를 “밝기의 공간적 배열”이 아니라 “여러 주파수 성분의 합”으로 바라보면 블러·샤프닝·노이즈 제거 같은 처리를 훨씬 간단한 곱셈 연산으로 표현할 수 있다. 이 글은 그 관점 전환에 필요한 수식들을 1차원 → 2차원 → 실제 필터링·최적화 순서로 정리한다. 이산 이미지에 실제로 적용하는 예시는 DFT 기반 Convolution 글에서 이어진다.

1. 기본 푸리에 변환

1.1 1차원 푸리에 변환

신호 x(t)를 주파수 영역으로 변환:

F(ω) = ∫ x(t) • e^(-iωt) dt

여기서:

  • F(ω): 주파수 영역에서의 신호
  • x(t): 시간 영역에서의 신호
  • ω: 각주파수 (2πf)
  • i: 허수 단위 (i² = -1)

1.2 이산 푸리에 변환 (DFT)

디지털 신호의 변환:

F[k] = Σ x[n] • e^(-i2πkn/N)

역변환: x[n] = (1/N) • Σ F[k] • e^(i2πkn/N)

아주 작은 예로 감을 잡아보기: 신호 x = [1, 1, 1, 1] (N=4, 값이 전부 동일)를 DFT하면, 모든 주파수 성분의 위상이 서로 상쇄되고 k=0(직류 성분)만 살아남아 F = [4, 0, 0, 0]이 된다. 값이 하나도 변하지 않는 신호는 “변화가 없다”는 의미에서 주파수가 0인 성분(평균값)만 갖는다는 것을, 계산 없이도 직관적으로 확인할 수 있는 경우다.

2. 2차원 푸리에 변환

2.1 이미지 처리용 기본 수식

F(u,v) = Σ Σ f(x,y) • e^(-i2π(ux/M + vy/N))

역변환: f(x,y) = (1/MN) • Σ Σ F(u,v) • e^(i2π(ux/M + vy/N))

2.2 복소수 형태

F(u,v) = R(u,v) + i•I(u,v)

  • R(u,v): 실수부
  • I(u,v): 허수부

3. 실용적인 수식들

3.1 오일러 공식 활용

e^(-iθ) = cos(θ) - i•sin(θ)

따라서 DFT는 다음과 같이 표현 가능: F[k] = Σ x[n] • (cos(2πkn/N) - i•sin(2πkn/N))

3.2 진폭과 위상

진폭 스펙트럼: |F(u,v)| = √(R² + I²)

위상 스펙트럼: φ(u,v) = tan⁻¹(I/R)

4. 게임 개발 응용

4.1 주파수 도메인 필터링

H(u,v) = F(u,v) × G(u,v)

  • F(u,v): 입력 이미지의 푸리에 변환
  • G(u,v): 필터 함수
  • H(u,v): 필터링된 결과

4.2 가우시안 블러

G(u,v) = e^(-(u² + v²)/(2σ²))

4.3 모션 블러

H(u,v) = sinc(πT(uu₀ + vv₀)) • e^(-iπT(uu₀ + vv₀))

5. 최적화 기법

5.1 대칭성

F(-u,-v) = F*(u,v)

  • F*: 복소 켤레 (a - i•b)

5.2 분리 가능한 변환

2D DFT = (1D DFT on rows) × (1D DFT on columns)

5.3 고속 푸리에 변환 (FFT)

N-포인트 FFT 복잡도:

  • 연산 수 = N•log₂(N)
  • 메모리 = 2N (실수부 + 허수부)

6. 실시간 근사

6.1 블룸 효과

I_bloom = I + α•Blur(max(I - threshold, 0))

6.2 간단한 주파수 필터링

F_filtered = F × Mask

  • Mask = 0 또는 1로 구성된 간단한 필터

핵심 정리

  • 공간(시간) 영역의 합성곱(convolution)은 주파수 영역에서는 단순 곱셈이 된다 — 필터링을 훨씬 싼 연산으로 바꿔주는 성질이다.
  • 저주파는 “완만한 변화”(전체 밝기, 큰 형태), 고주파는 “급격한 변화”(경계선, 노이즈, 세부 텍스처)에 대응한다는 감각만 있으면 Low/High/Band-pass 필터의 효과를 예측할 수 있다.
  • FFT는 DFT를 O(N²)에서 O(N log N)으로 줄이는 알고리즘으로, 이미지·오디오 실시간 처리가 가능한 것은 사실상 FFT 덕분이다.