Chapter 05

모든 것은 주파수의 합

온도 분포, 소리, 사진, 렌즈가 맺은 상, 휴대폰 전파. 겉모습은 전혀 다르지만 푸리에의 눈으로 보면 모두 같은 것, 즉 여러 주파수의 사인파를 더한 것입니다. 복잡한 것을 단순한 진동으로 쪼개면, 쪼갠 조각 하나하나는 거의 공짜로 풀립니다. 이 장에서는 그 쪼개는 기계를 손으로 돌려 보고, 렌즈와 JPEG와 MRI 안에서 같은 기계가 돌아가는 모습을 확인합니다.

이 수식이 없었다면MRI (자기공명영상)

MRI 스캐너는 몸속 사진을 직접 찍지 않습니다. 렌즈도 없고 X선처럼 몸을 투과하는 빛도 쓰지 않습니다. 강한 자기장 속의 수소 원자핵(양성자)은 자기장 세기에 비례하는 주파수(1.5 T에서 약 64 MHz)로 신호를 내는데, 여기에 위치에 따라 세기가 변하는 기울기 자기장을 걸면 위치가 곧 주파수(와 위상)가 됩니다. 수신 코일이 듣는 것은 몸 전체가 동시에 부르는 "화음" 하나뿐입니다.

그 화음은 바로 단면 영상의 푸리에 변환의 한 줄입니다. 기울기를 바꿔 가며 줄을 모아 k-공간을 채우고, 역 푸리에 변환을 하면 영상이 나타납니다. 푸리에 변환이 없다면 이 화음은 그냥 잡음 섞인 진동일 뿐입니다.

몸속 양성자 분포→기울기 자기장: 위치 → 주파수→코일 신호 = 화음→2D 역 푸리에 변환→단면 영상

푸리에의 원래 문제: 쇠막대는 어떻게 식는가

울퉁불퉁한 온도 분포의 미래 예측

양 끝을 0 °C 얼음물에 담근 쇠막대가 있다. 처음 온도 분포는 가운데 한 구간만 뜨겁거나, 두 군데가 뜨겁거나, 아무렇게나 생겼다. 열방정식 \(\partial u/\partial t = \alpha\, \partial^2 u/\partial x^2\)은 알지만, 이런 임의의 초기 모양에서 시작한 해를 어떻게 쓸까?

조제프 푸리에(Joseph Fourier)가 1807년 프랑스 학술원(Institut de France)에 제출한 열전도 논문이 이 문제를 다뤘습니다. 그의 관찰은 단순했습니다. 초기 모양이 마침 사인파 \(\sin(n\pi x/L)\)라면, 열방정식에서 \(\partial^2/\partial x^2\)는 그 사인파에 \(-(n\pi/L)^2\)을 곱할 뿐이므로 모양은 그대로이고 높이만 지수적으로 줄어듭니다(4장의 1차 미분방정식 하나). 그렇다면 임의의 모양을 사인파들의 합으로 쪼갤 수만 있으면, 각 조각을 따로 식힌 뒤 다시 더하면 끝입니다.

$$u(x,0)=\sum_{n=1}^{\infty} b_n \sin\frac{n\pi x}{L}\quad\Longrightarrow\quad u(x,t)=\sum_{n=1}^{\infty} b_n\, e^{-\alpha (n\pi/L)^2 t}\,\sin\frac{n\pi x}{L}$$
\(b_n = \frac{2}{L}\int_0^L u(x,0)\sin\frac{n\pi x}{L}\,dx\). 각 모드는 다른 모드와 섞이지 않고 혼자 감쇠한다. 감쇠율은 \(n^2\)에 비례하므로 3번 모드는 1번보다 9배, 10번 모드는 100배 빨리 사라진다.
처음 온도 분포 u(x, 0) 양 끝 0 °C = + + × e−τ × e−4τ × e−9τ n = 1 (느림) n = 2 n = 3 (9배 빠름)
그림 5-1. 임의의 온도 분포 = 사인 모드의 합. 각 모드는 모양을 유지한 채 \(e^{-n^2\tau}\)로 줄어든다(\(\tau = \alpha\pi^2 t/L^2\)). 그래서 시간이 조금만 지나도 고주파 굴곡은 사라지고 매끈한 1번 모드만 남는다.

심사위원이던 라그랑주는 "불연속인 함수까지 매끈한 사인파의 합으로 쓸 수 있다"는 주장을 받아들이지 않았고, 논문은 한동안 출판되지 못했습니다. 푸리에는 수정본으로 1812년 학술원 상을 받았지만 엄밀성에 대한 비판은 계속됐고, 이론 전체는 1822년 『열의 해석적 이론(Théorie analytique de la chaleur)』으로 출간됩니다. 어떤 함수가 실제로 급수로 수렴하는지에 대한 엄밀한 조건은 1829년 디리클레가 처음 제시했습니다. 공학적으로 중요한 것은 엄밀성 논쟁이 아니라 이 방법이 편미분방정식을 서로 독립인 상미분방정식 여러 개로 바꾼다는 점입니다.

SIMULATOR

막대의 열: 모드마다 다른 속도로 식는다

처음 온도 분포
1번 모드 남은 비율 e−τ—
3번 모드 e−9τ—
구리 10 cm 막대라면—
위: 온도 분포(파란 선 = N개 모드의 합, 점선 = 처음 분포). 아래: 모드별 진폭 |bn|(테두리 = 처음, 채움 = 지금). 해볼 것: ① '가운데 구간'에서 τ = 0, N을 1→40으로 올리며 계단을 사인으로 쌓아 보기(모서리의 출렁임은 다음 절의 깁스 현상). ② ▶ 식히기를 누르고 아래 막대가 높은 n부터 사라지는 것 보기. ③ '두 군데'로 바꾸면 처음엔 봉우리가 둘이지만 금방 하나의 매끈한 언덕이 된다. 모델: 1차원 막대, 양 끝 온도 0 고정(디리클레 경계), 열확산율 α 일정. 구리 환산은 α ≈ 1.11×10⁻⁴ m²/s, L = 10 cm(1번 모드 시간상수 L²/(απ²) ≈ 9.1 s).
엔지니어의 눈으로 칩 위 핫스팟이 왜 금방 퍼지는지, 왜 열 시뮬레이션에서 짧은 시간 간격이 필요한지가 모두 \(n^2\) 감쇠에서 나온다. 미세한 온도 굴곡(높은 n)은 아주 빨리 사라지고, 큰 규모의 온도 차(n = 1)만 오래 버틴다. 같은 구조가 확산 공정의 도펀트 분포(ProcessBook)에도 그대로 나온다.

회전하는 원들의 합은 어떤 파형이든 그린다

사각파를 사인파로?

디지털 클록은 0과 1 사이를 순간적으로 뛰는 사각파다. 매끈한 사인파를 아무리 더해도 '순간 점프'가 만들어질 수 있을까? 만들어진다면 몇 개가 필요하고, 무엇이 남는가?

2장에서 본 것처럼 \(e^{i n\theta}\)는 반지름 1인 원 위를 각속도 \(n\)으로 도는 점입니다. 사인파 \(\sin n\theta\)는 그 점의 세로 그림자일 뿐이죠. 그러니 사인파들의 합은 원 위에 원을 얹고 또 얹은 톱니바퀴 장치의 끝점 높이입니다. 큰 원(기본 주파수)이 전체 윤곽을 잡고, 작은 원들(배음)이 빠르게 돌며 모서리를 깎아 냅니다. 프톨레마이오스의 주전원(Epicycle)과 같은 구조입니다.

$$\text{사각}=\frac{4}{\pi}\sum_{n\ \text{홀수}}\frac{\sin n\theta}{n},\qquad \text{톱니}=\frac{2}{\pi}\sum_{n\ge1}\frac{(-1)^{n+1}\sin n\theta}{n},\qquad \text{삼각}=\frac{8}{\pi^2}\sum_{n\ \text{홀수}}\frac{(-1)^{\frac{n-1}{2}}\sin n\theta}{n^2}$$
점프가 있는 파형은 계수가 \(1/n\)로, 꺾임만 있는 파형은 \(1/n^2\)로 줄어든다. 매끈할수록 높은 주파수 성분이 빨리 사라진다 — 1절의 열이 시간이 지나면 매끈해지는 것과 같은 이야기를 거꾸로 한 것.
SIMULATOR

원 N개로 파형 그리기 — 깁스 현상

목표 파형
가장 높은 배음 n—
최대 오버슈트(점프 대비)—
RMS 오차—
왼쪽: 원들이 각자 n배 속도로 돌고, 마지막 끝점의 높이가 오른쪽 그래프의 맨 왼쪽 점이 됩니다(점선 = 목표 파형). 해볼 것: ① 사각에서 N = 1→50. RMS 오차는 계속 줄지만 점프 옆 봉우리 높이는 약 9%(점프 크기 2의 0.179)에서 멈추고 폭만 좁아진다. ② 삼각으로 바꾸면 N = 3만 돼도 거의 완벽하다(1/n² 감쇠, 점프 없음). ③ 톱니는 원의 크기가 1/n로 줄어 사각보다 꼬리가 길다. 모델: 진폭 ±1, 위상 0인 이상적 파형의 푸리에 부분합.

N을 아무리 키워도 남는 약 9%의 봉우리가 깁스 현상(Gibbs Phenomenon)입니다. 정확히는 점프 크기의 \(\frac{1}{\pi}\int_0^\pi \frac{\sin t}{t}dt - \frac12 \approx 0.0895\)배. 1848년 윌브러엄(Wilbraham)이 먼저 발견했지만 1899년 기브스가 다시 설명하면서 이름이 붙었습니다. 부분합은 오차의 제곱 평균을 0으로 보내지만 최댓값은 0으로 보내지 않습니다. 이 차이가 실무에서는 이미지 윤곽 옆의 링잉(Ringing), 대역 제한 필터를 통과한 디지털 펄스의 오버슈트로 나타납니다.

계수는 어떻게 찾나: 신호를 원에 감는 기계

섞인 소리에서 주파수 하나 골라내기

두 개의 진동이 더해진 신호 \(g(t)\)를 받았다. 이 안에 2 Hz 성분이 있는지, 있다면 얼마나 센지 알고 싶다. 파형만 보면 꾸불꾸불한 선 하나다. 사인파들을 분리하는 '체'가 필요하다.

3Blue1Brown이 대중화한 그림을 따라가 봅시다. 신호 \(g(t)\)를 시간에 따라 원 주위로 감습니다. 매 순간 \(g(t)\)를 반지름으로 삼고, 각도는 초당 \(f\)바퀴의 속도로 돕니다. 복소수로 쓰면 \(g(t)e^{-2\pi i f t}\)입니다. 그다음 감긴 그림의 질량중심을 봅니다.

$$\hat g(f) = \frac{1}{T}\int_0^T g(t)\,e^{-2\pi i f t}\,dt \qquad (\text{감긴 곡선의 질량중심})$$
\(T\)로 나누지 않고 \(T\to\infty\)까지 적분하면 이것이 푸리에 변환 \(\hat g(f)=\int g(t)e^{-2\pi i f t}dt\)다. 크기 \(|\hat g|\)은 그 주파수 성분의 세기, 각도 \(\arg\hat g\)는 위상이다.
SIMULATOR

감기 기계: 질량중심이 튀어나오는 주파수 찾기

g(t)·e−2πift
질량중심 vs 감는 주파수 f
질량중심 크기 |ĝ(f)|—
감는 한 바퀴 시간 1/f—
판정—
왼쪽 위 띠: 신호 g(t)(4초)와 한 바퀴마다의 눈금. 아래: 감긴 곡선과 질량중심(주황 점·화살표). 오른쪽: 모든 f에 대한 |ĝ(f)|(파랑)과 실수부(점선). 오른쪽 그래프를 클릭하면 그 f로 감습니다. 해볼 것: ① f를 천천히 움직이다 f = f₁, f₂에서 곡선이 한쪽으로 쏠리는 순간 보기(높이 = 진폭의 절반 0.5, 0.3). ② 직류를 켜면 f = 0에 큰 봉우리(평균값)가 생기고, 끄면 사라진다. ③ f₁ = f₂로 겹치면 봉우리 하나가 0.8로 합쳐진다. 모델: g(t) = cos 2πf₁t + 0.6 cos 2πf₂t (+1.6), 관측 시간 T = 4 s(그래서 봉우리 폭 ≈ 1/T = 0.25 Hz).

왜 이게 되는가: 직교성은 "평균하면 0"

감기 기계의 비밀은 한 줄입니다. 서로 다른 정수 주파수의 사인파를 곱해서 한 주기 동안 평균하면 0이고, 같은 주파수끼리만 0이 아닌 값이 남습니다.

sin x sin 2x 곱: 위아래 넓이가 상쇄 → 평균 0 같은 주파수끼리 sin 2x · sin 2x ≥ 0 → 평균 1/2 (넓이 π) ⟨sin mx, sin nx⟩ = 0 (m ≠ n) = ∫₀²π sin mx · sin nx dx
그림 5-2. 직교성. 서로 다른 주파수의 곱은 양수 부분과 음수 부분이 정확히 상쇄되고, 같은 주파수의 곱(제곱)은 항상 0 이상이라 평균이 남는다. 감기 기계에서 '맞는 f'만 질량중심을 끌어내는 이유다.

이것은 3장의 기저 벡터와 똑같은 구조입니다. 함수를 무한 차원 벡터로 보고 내적을 \(\langle f, g\rangle = \int f\,\bar g\,dt\)로 정의하면, \(\{e^{2\pi i n t/T}\}\)는 서로 수직인 단위 벡터들(정규직교 기저)이 됩니다. 그러면 계수 찾기는 그 축 방향으로의 사영일 뿐입니다.

$$g(t) = \sum_n c_n\, e^{2\pi i n t/T},\qquad c_n = \big\langle g,\ e^{2\pi i n t/T}\big\rangle = \frac1T\int_0^T g(t)\,e^{-2\pi i n t/T}\,dt$$
3차원 벡터의 x 성분을 \(\vec v\cdot\hat x\)로 구하듯, n번째 주파수 성분은 신호와 그 주파수의 회전자의 내적이다. 기저가 직교하므로 다른 성분이 섞여 들어오지 않는다. 에너지도 성분별로 그대로 나뉜다: \(\frac1T\int|g|^2dt=\sum|c_n|^2\) (파스발 정리).

DFT와 FFT: 숫자 열의 스펙트럼

1초에 수만 번 계산해야 하는 내적

디지털 오디오는 1초에 44 100개의 숫자다. N개 표본의 스펙트럼을 내적으로 구하면 주파수 N개 × 표본 N개 = N² 번 곱셈. N = 1024면 약 100만 번, 이것을 한 프레임마다 해야 한다.

표본화된 신호 \(x[0],\dots,x[N-1]\)에 감기 기계를 적용한 것이 이산 푸리에 변환(DFT)입니다. 감는 주파수는 N개의 '정수 바퀴 수' \(k=0,\dots,N-1\)만 쓰면 충분합니다.

$$X[k]=\sum_{n=0}^{N-1} x[n]\,e^{-2\pi i kn/N},\qquad x[n]=\frac1N\sum_{k=0}^{N-1}X[k]\,e^{2\pi i kn/N}$$
표본화 주파수 \(f_s\)에서 \(k\)번 칸은 \(k f_s/N\) Hz에 해당한다. 칸 간격(주파수 분해능) \(\Delta f = f_s/N\) = 1/(관측 시간). \(k > N/2\)는 음의 주파수다(6장의 에일리어싱).

1965년 쿨리와 튜키(Cooley–Tukey)는 N개짜리 DFT가 짝수 번째 표본의 DFT와 홀수 번째 표본의 DFT 두 개(N/2개짜리)로 쪼개진다는 점을 이용해 계산량을 \(N\log_2 N\)으로 줄였습니다. 이것이 FFT(Fast Fourier Transform)입니다. N = 1024에서 100만 번이 약 1만 번으로, 100배 빨라집니다(가우스가 1805년경 같은 아이디어를 썼다는 사실이 나중에 알려졌습니다). 이 장의 모든 시뮬레이터는 브라우저 안에서 FFT를 직접 돌립니다.

SIMULATOR

시간과 주파수를 동시에 보기

창 함수
가장 센 주파수—
분해능 fs/N—
파스발: Σx² vs ΣX²/N—
위: 시간 파형(앞 32 ms), 아래: 크기 스펙트럼(dB). 해볼 것: ① '사각파'는 250, 750, 1250 … Hz의 홀수 배음만, 높이가 1/n로 줄어드는 사다리. ② '짧은 펄스'는 시간에선 점 하나인데 스펙트럼은 넓게 퍼지고 1000 Hz마다 0이 된다(폭 1 ms의 sinc). ③ '잡음 속의 1000 Hz'는 파형에선 전혀 안 보이지만 스펙트럼에선 바닥 위로 뚜렷한 봉우리 — 잡음 에너지는 1024칸에 흩어지고 사인 에너지는 한 칸에 모이기 때문. 창을 '사각'으로 바꾸면 처프·사인의 봉우리 옆 누설(leakage)이 커진다. 모델: fs = 8 kHz, N = 1024(128 ms), 사각파는 4 kHz 이하 배음만 더한 대역 제한 파형. 소리는 이 128 ms 프레임을 반복 재생.
창 함수는 왜 필요한가 DFT는 관측한 N개가 무한히 반복된다고 가정한다. 프레임 끝과 처음이 어긋나면 그 '이음매 점프'가 넓은 스펙트럼을 만들어 봉우리 옆으로 에너지가 샌다(누설). 핸 창은 양 끝을 0으로 부드럽게 줄여 이음매를 없애는 대신 봉우리를 조금 넓힌다. 자세한 트레이드오프는 MusicBook의 스펙트럼 분석에서 소리로 확인할 수 있다.

짧으면 넓다: 시간–주파수 불확정성

위 펄스에서 보았듯이, 시간에서 좁은 것은 주파수에서 넓습니다. 이것은 측정 장비의 한계가 아니라 푸리에 변환 자체의 성질입니다. 신호를 시간 축으로 \(a\)배 압축하면 스펙트럼은 \(a\)배 늘어납니다: \(g(at)\leftrightarrow \frac{1}{|a|}\hat g(f/a)\). 에너지 분포의 표준편차로 폭을 재면 그 곱에는 하한이 있습니다.

$$\Delta t\cdot\Delta f \;\ge\; \frac{1}{4\pi}\approx 0.0796$$
\(\Delta t\), \(\Delta f\): \(|g(t)|^2\)과 \(|\hat g(f)|^2\)을 확률분포로 볼 때의 표준편차. 등호는 가우스 포락선일 때만 성립한다. 양자역학의 하이젠베르크 불확정성 \(\Delta x\,\Delta p\ge\hbar/2\)와 수학적으로 같은 부등식이다.
SIMULATOR

짧은 소리 ↔ 넓은 스펙트럼

포락선 모양
Δt—
Δf—
Δt·Δf (하한 0.0796)—
1000 Hz 사인파에 포락선을 씌운 '톤 버스트'. 위: 시간 파형(±100 ms), 아래: 스펙트럼 크기(선형, 0–4 kHz), 색 띠는 ±Δ. 해볼 것: ① 폭을 줄이면 소리가 '삐–'에서 '틱'으로 바뀌고 스펙트럼이 넓어진다. ② 가우스에서는 폭을 바꿔도 곱이 0.0796 근처로 일정하다(하한에 딱 붙음). ③ 사각 포락선은 곱이 훨씬 크다 — 모서리(점프)가 만든 1/f 꼬리 때문. 모델: fs = 8 kHz, N = 2048. Δt, Δf는 복소 포락선(기저대역) 기준으로 계산하며 스펙트럼 꼬리는 4 kHz에서 잘린다.

그래서 레이더는 거리 분해능(짧은 펄스)을 얻으려면 넓은 대역폭이 필요하고, 음악 분석기는 저음의 음높이를 정밀하게 읽으려면 긴 창(느린 반응)을 감수해야 합니다. 5G가 짧은 지연을 얻기 위해 심볼을 짧게 만들면 부반송파 간격이 넓어지는 것도 같은 부등식입니다.

합성곱 정리: 필터는 주파수 곱셈이다

잡음 낀 센서 신호 다듬기

센서 출력의 잡음을 줄이려고 이웃 표본 w개를 평균한다(이동 평균). 이 연산은 어떤 주파수를 얼마나 깎는가? 평균 폭을 두 배로 하면 무엇이 변하는가? 시간 영역에서 미끄러지며 곱하고 더하는 계산만 들여다봐서는 답이 잘 안 보인다.

이동 평균, 가우스 블러, 렌즈 번짐, RC 회로의 응답… 선형이고 시간(위치)에 따라 성질이 변하지 않는 시스템의 출력은 모두 입력과 임펄스 응답 \(h\)의 합성곱(Convolution)입니다. 그리고 합성곱은 푸리에 변환을 거치면 곱셈이 됩니다.

$$y(t)=(x*h)(t)=\int x(\tau)\,h(t-\tau)\,d\tau \quad\Longleftrightarrow\quad Y(f)=X(f)\cdot H(f)$$
이유: \(e^{2\pi i f t}\)는 선형 시불변 시스템의 고유함수다. 사인파를 넣으면 같은 주파수의 사인파가 나오고 크기·위상만 \(H(f)\)만큼 바뀐다(3장의 고유벡터). 신호를 고유함수로 쪼개면 시스템은 대각 행렬, 즉 주파수별 곱셈이 된다.
x(t), h(t)시간(위치) 영역 y = x * h미끄러지며 곱해 더하기 · N×M X(f), H(f)주파수 영역 Y = X · H주파수마다 곱셈 한 번 직접 계산(느림) 곱하기(빠름) FFT 역 FFT
그림 5-3. 합성곱 정리. 긴 필터는 FFT로 주파수 영역에 가서 곱한 뒤 돌아오는 편이 빠르다(비용 \(\sim N\log N\)). 더 중요한 것은 이해의 지름길이다: 필터의 효과는 \(|H(f)|\) 그래프 하나로 다 보인다.
SIMULATOR

필터 = 스펙트럼에 H를 곱하기

필터 h
|H| 첫 0 위치—
직접 합성곱 vs FFT 곱 차이—
위: 입력(회색)과 출력(파랑). 아래: 입력 스펙트럼 |X|(회색), 필터 응답 |H|(주황, 최댓값 1로 정규화), 출력 스펙트럼 |Y| = |X||H|(파랑). 해볼 것: ① 이동 평균의 폭 w를 키우면 |H|가 sinc 모양으로 좁아지고 첫 0이 N/w 칸으로 내려온다 — 잡음(고주파)은 사라지지만 모서리도 무뎌진다. ② 이동 평균은 |H|에 옆 봉우리(부엽)가 있어 일부 고주파가 새고, 가우스는 부엽이 없다. ③ '차분'은 저주파를 죽이고 모서리만 남긴다(윤곽 검출). 모델: N = 256, 순환 합성곱. '차이'는 시간 영역 직접 계산과 FFT 곱셈 결과의 최대 오차(부동소수점 반올림 수준).

이미지도 주파수의 합이다: 2D 푸리에 변환

사진의 '선명함'은 어디에 들어 있나

사진을 흐리게 하면 무엇이 사라지는가? 샤프닝은 무엇을 키우는가? 반대로 사진 대부분의 정보는 어디에 모여 있어서, 무엇을 버려도 사람이 눈치채지 못하는가?

2차원 신호(이미지)의 기저는 물결무늬 판 \(e^{2\pi i (ux+vy)}\)입니다. \((u,v)\)는 가로·세로 공간주파수(주기/픽셀 또는 lp/mm)이고, 물결의 방향은 \((u,v)\) 벡터 방향, 촘촘함은 \(\sqrt{u^2+v^2}\)입니다. 2D DFT는 가로줄마다 1D FFT, 그 결과의 세로줄마다 1D FFT를 하면 끝납니다. 스펙트럼 그림에서 가운데는 낮은 주파수(밝기의 큰 흐름), 바깥은 높은 주파수(윤곽과 질감)입니다. 영상 속 가로 윤곽은 스펙트럼에 세로 줄무늬로, 세로 윤곽은 가로 줄무늬로 나타납니다.

$$F[u,v]=\sum_{y=0}^{N-1}\sum_{x=0}^{N-1} f[x,y]\,e^{-2\pi i(ux+vy)/N}$$
SIMULATOR

스펙트럼에 구멍 뚫기: 저역·고역 필터

원본 128×128
log |F| (가운데 = 저주파)
역변환 결과
마스크
남긴 계수—
남긴 에너지(직류 제외)—
가운데 그림의 어두운 부분이 버린 주파수, 주황 원이 마스크 경계입니다. 해볼 것: ① 저역 통과 r = 6 정도면 계수의 1%도 안 남겼는데 장면이 알아볼 만하다 — 에너지가 저주파에 몰려 있다. ② 날카로운 원형 마스크는 윤곽 옆에 물결(링잉)을 남긴다. 2절의 깁스 현상이 2D에서 나타난 것. '부드러운 가장자리'를 켜면 사라진다. ③ 고역 통과로 바꾸면 윤곽만 남는다(고역 결과는 회색 0.5를 0으로 놓고 표시). 모델: 128×128 순환 2D FFT, 이상적 원형/가우스 마스크.
카메라의 샤프닝 언샤프 마스크는 "원본 + k × (원본 − 블러)", 즉 주파수 영역에서 \(1 + k(1-H_{\text{blur}})\)를 곱해 고주파를 들어 올리는 필터다. 너무 세게 하면 윤곽 옆에 하얀 테두리(헤일로)가 생기는데, 이것도 링잉이다. 실제 ISP의 샤프닝·노이즈 제거는 CameraBook에서 다룬다.

렌즈는 푸리에 변환기다: PSF·OTF·MTF

렌즈가 무한히 선명할 수 없는 이유

수차를 완벽히 잡은 렌즈라도 점 하나를 점으로 맺지 못하고 작은 원반(에어리 원반)으로 번진다. 번짐의 크기는 무엇이 정하는가? 픽셀을 1 µm보다 작게 만들면 해상도가 계속 좋아지는가?

렌즈 앞 초점면에 물체(예: 회절격자)를 두고 평행한 빛을 비추면, 렌즈 뒤초점면에는 물체의 공간주파수가 점들로 펼쳐집니다. 격자 주기가 촘촘할수록 점들이 중심에서 멀리 떨어집니다. 정확히는 뒤초점면의 빛 진폭이 물체 투과율의 2D 푸리에 변환이고, 위치 \(x'\)는 공간주파수 \(u = x'/(\lambda f)\)에 대응합니다. 아베(Ernst Abbe)가 1873년 현미경 결상 이론에서 정리한 이 관점이 푸리에 광학(Fourier Optics)의 출발점입니다.

+1차0차 (직류)−1차 물체(격자) 렌즈 1 푸리에 면(뒤초점면) 렌즈 2 상 ← f →← f → ← f →← f →
그림 5-4. 4f 광학계. 렌즈 1이 물체의 푸리에 변환을 뒤초점면에 만들고, 렌즈 2가 다시 변환해 상을 만든다. 같은 각도로 나간 빛(같은 공간주파수)은 한 점에 모인다. 이 면에 구멍(조리개)이나 마스크를 두면 6절의 '스펙트럼에 구멍 뚫기'를 빛으로 하는 셈이다. 조리개 밖으로 나간 고차 회절광은 상에 기여하지 못한다.

카메라 렌즈의 조리개(동공, Pupil)는 바로 이 '통과시킬 주파수의 구멍'입니다. 그 결과 점 하나의 상, 즉 점 확산 함수(PSF)는 동공의 푸리에 변환으로 정해집니다. 자연광처럼 서로 간섭하지 않는(비간섭성) 빛에서는 다음 관계가 성립합니다.

$$\text{PSF}=\big|\mathcal F\{P\}\big|^2,\qquad \text{OTF}=\mathcal F\{\text{PSF}\}=\frac{P\star P}{\textstyle\int|P|^2}\ (\text{동공의 자기상관}),\qquad \text{MTF}=|\text{OTF}|$$
\(P\): 동공 함수(투과 영역 × 수차의 위상 \(e^{i2\pi W}\)). 원형 동공이면 PSF는 에어리 패턴이고 첫 번째 어두운 고리의 반경은 \(1.22\,\lambda N\) (\(N\): F수). 자기상관은 동공을 자기 자신과 겹쳐 밀어 볼 때 겹친 넓이이므로, 동공 지름만큼 밀면 0이 된다 → 차단 주파수 \(f_c = 1/(\lambda N)\). 그 이상의 공간주파수는 어떤 센서로도 복원할 수 없다.
SIMULATOR

조리개 모양 → PSF → MTF (2D FFT로 계산)

동공 P (색 = 위상)
PSF = |FFT(P)|²
MTF (가로 방향)
동공 모양
차단 주파수 1/(λN)—
에어리 원반 지름 2.44λN—
MTF @ fc/2—
스트렐 비—
MTF 그래프의 점선은 무수차 원형 동공의 이론 곡선 \(\frac{2}{\pi}(\arccos\nu-\nu\sqrt{1-\nu^2})\), \(\nu=f/f_c\). 해볼 것: ① 원 → 정사각: PSF가 십자 모양 sinc²가 되고 가로 MTF는 직선(1−ν). ② 중앙 차폐(반사 망원경·반사 렌즈)를 키우면 중심 봉우리는 좁아지지만 고리에 에너지가 몰리고 중간 주파수 MTF가 움푹 꺼진다. ③ 초점 어긋남 W₂₀을 0.25λ 이상으로 올리면 스트렐 비가 급락하고 MTF가 중간에서 0 아래로(위상 반전) 꺾여 '가짜 해상'이 생긴다. 모델: 128×128 격자, 동공 반경 12픽셀, 단색광, 비간섭성 결상, 스칼라 회절. F수는 물리 단위 환산에만 쓰인다.

숫자로 보면 F/2.8, λ = 550 nm에서 \(f_c \approx 649\) lp/mm, 에어리 원반 지름은 약 3.8 µm입니다. 1.0 µm 픽셀 센서의 나이퀴스트 주파수는 500 lp/mm이므로, F/2.8 근처에서 이미 렌즈의 회절 한계와 픽셀 크기가 맞붙습니다. 픽셀을 더 줄여도 F수를 함께 낮추지 않으면 해상도가 거의 늘지 않는 이유입니다. 이 계산의 센서 쪽 절반은 SensorBook, 렌즈 쪽 절반은 OpticsBook에서 이어집니다.

노광 장비도 같은 수식 반도체 노광기는 마스크 패턴을 축소 투영하는 거대한 결상계다. 마스크의 공간주파수 중 동공(NA/λ)을 통과한 것만 웨이퍼에 도달하므로, 해상 한계는 \(k_1\lambda/\mathrm{NA}\) 꼴이 된다. 사입사 조명, 위상 반전 마스크, 광근접 보정(OPC)은 모두 "어떤 회절 차수를 동공 안에 넣을 것인가"를 설계하는 푸리에 광학 기술이다. 자세한 것은 LithoBook.

JPEG: 사람이 못 보는 주파수부터 버리기

사진 한 장을 10분의 1로

1200만 화소 RGB 사진은 원래 36 MB다. 화질 차이를 거의 못 느끼게 하면서 몇 MB로 줄여야 한다. 무엇을 버려야 하는가?

6절에서 보았듯이 자연 영상의 에너지는 저주파에 몰려 있고, 사람 눈은 아주 촘촘한 밝기 변화에 덜 민감합니다. 1992년 표준이 된 JPEG(ISO/IEC 10918-1, ITU-T T.81)은 이 두 사실을 이용합니다. 영상을 8×8 블록으로 자르고, 각 블록을 이산 코사인 변환(DCT)으로 64개 주파수 계수로 바꾼 다음, 고주파일수록 거칠게 양자화(큰 눈금으로 반올림)합니다. 대부분의 고주파 계수가 0이 되고, 연속된 0은 거의 공짜로 저장됩니다. 정보를 실제로 버리는 곳은 양자화 단계 하나뿐입니다.

그림 5-5. 8×8 DCT의 기저 64장. 왼쪽 위가 직류(블록 평균 밝기), 오른쪽으로 갈수록 가로 주파수, 아래로 갈수록 세로 주파수가 높다. 모든 8×8 블록은 이 64장의 가중합으로 정확히 표현된다. DCT는 1974년 아메드·나타라잔·라오가 제안했으며, 사인과 코사인을 모두 쓰는 DFT와 달리 블록 경계에서 신호를 거울처럼 접어 이음매 점프(누설)를 줄인다.
$$F[u,v]=\sum_{x,y=0}^{7} c_u c_v\, f[x,y]\cos\frac{(2x+1)u\pi}{16}\cos\frac{(2y+1)v\pi}{16},\qquad q[u,v]=\mathrm{round}\!\left(\frac{F[u,v]}{Q[u,v]}\right)$$
\(c_0=\sqrt{1/8}\), \(c_{k>0}=\sqrt{2/8}\) (정규직교). \(Q\): 양자화 표. 표준 부록 K의 휘도 표는 직류가 16, 가장 높은 주파수 근처가 100 안팎이다. '품질' 값은 이 표 전체에 곱하는 배율이다(IJG 방식: 품질 50 = 표 그대로, 품질이 낮을수록 표가 커짐).
SIMULATOR

JPEG 품질 슬라이더: 8×8 DCT 양자화

원본
복원(양자화 후)
차이 × 4
0이 아닌 계수—
추정 비트/픽셀—
추정 압축비—
PSNR—
해볼 것: ① 품질 50에서 이미 64개 중 평균 몇 개만 살아남는지 보기. ② 품질 5 이하로 내리면 블록마다 직류(평균)만 남아 8×8 타일이 보인다(블록 노이즈). ③ '글자'와 '존 플레이트'는 고주파가 많아 같은 품질에서 계수가 훨씬 많이 남고 윤곽 근처에 모기 잡음(mosquito noise)이 생긴다. 모델: 흑백 128×128, 표준 휘도 양자화 표(ITU-T T.81 부록 K)와 IJG 품질 배율. 비트 수는 허프만 부호를 "0 아닌 계수 하나당 (4 + 크기 비트), 블록당 EOB 4비트, 직류 차분 (2 + 크기 비트)"로 근사한 추정이다(실제 파일과 ±수십 % 차이 가능). 색 성분의 크로마 서브샘플링은 생략.

다시 MRI로: k-공간을 채우면 영상이 떠오른다

안테나 하나로 단면 영상 만들기

수신 코일은 위치를 구별하지 못한다. 몸 전체의 양성자가 내는 신호의 합 하나가 들어올 뿐이다. 이 '합 하나'로부터 어떻게 256×256 픽셀의 영상을 얻는가?

양성자의 세차 주파수는 \(f = \bar\gamma B\)이고 \(\bar\gamma \approx 42.58\) MHz/T입니다. x 방향으로 기울기 \(G_x\)를 걸면 위치 \(x\)의 양성자는 \(\bar\gamma(B_0+G_x x)\)로 돕니다. 예를 들어 \(G_x = 10\) mT/m이면 1 mm 떨어진 두 지점의 주파수 차는 약 426 Hz. 그러면 코일 신호는

$$s(t)=\iint \rho(x,y)\,e^{-2\pi i\,(k_x x+k_y y)}\,dx\,dy,\qquad k_x(t)=\bar\gamma\!\int_0^t G_x\,dt',\quad k_y=\bar\gamma\!\int G_y\,dt'$$
\(\rho(x,y)\): 양성자 밀도(와 이완 시간 가중). 기저 주파수 \(\bar\gamma B_0\)는 복조로 제거했다. 신호의 각 순간이 바로 영상의 2D 푸리에 변환 \(F(k_x,k_y)\)의 한 점이다! 읽기 기울기 \(G_x\)를 켠 채 표본을 받으면 k-공간의 가로 한 줄이, 그 전에 \(G_y\)를 잠깐 걸어 위상을 감아 두면 줄의 높이 \(k_y\)가 정해진다(위상 인코딩).
몸속 세 지점 B = B₀ + Gₓ·x f₁ 낮음f₂f₃ 높음 코일 신호 = 합 FFT 주파수 = 위치 위치별 세기
그림 5-6. 주파수 인코딩. 기울기 자기장 때문에 위치마다 다른 '음높이'로 노래하고, 코일은 그 화음을 듣는다. FFT로 화음을 음별로 나누면 위치별 양성자 양, 즉 영상의 한 방향 투영이 나온다. 위상 인코딩으로 다른 방향까지 구별하면 2D 영상이 된다.

MRI 영상화의 역사도 이 생각을 따라 발전했습니다. 1973년 라우터버(Paul Lauterbur)가 기울기 자기장으로 위치를 부호화하는 방법을 발표했고, 맨스필드(Peter Mansfield)가 빠른 영상 기법을 발전시켜 두 사람은 2003년 노벨 생리의학상을 받았습니다. 지금의 표준인 '푸리에 영상법'(k-공간을 격자로 채우고 2D FFT)은 1975년 에른스트(Richard Ernst) 연구팀이 제안한 방식에서 출발합니다.

SIMULATOR

k-공간 채우기: 스캔하는 동안 영상이 나타난다

k-공간 (채운 부분, log)
|역 2D FFT| = 영상
채우는 순서
채운 k-공간 점—
담긴 신호 에너지—
영상 RMS 오차—
시험 영상은 CT·MRI 알고리즘 검증용 표준인 셰프–로건 팬텀(수정판)입니다. 해볼 것: ① '줄 단위'로 스캔하면 위쪽 고주파 줄을 아무리 채워도 아무것도 안 보이다가, 가운데(ky ≈ 0) 줄을 지나는 순간 영상이 확 나타난다. ② '중심부터' 5%만 채워도 명암과 윤곽 대부분이 보인다(흐릿할 뿐) — 영상 대비는 k-공간 중심에 있다. ③ '가장자리만'은 에너지가 1%도 안 되는데 윤곽선만 그려진다. 모델: 128×128 이산 격자, 잡음·이완·코일 감도 무시, 실수 영상의 완전 직교 표본.

실제 스캐너는 이 성질을 적극적으로 이용합니다. 영상 대비를 결정하는 k-공간 중심을 원하는 시점에 얻도록 줄 순서를 바꾸고(중심 우선 순서), 실수 영상의 스펙트럼이 켤레 대칭이라는 점을 이용해 절반 조금 넘게만 채우거나(부분 푸리에), 여러 수신 코일의 감도 차이나 영상의 희소성을 이용해 줄을 건너뛰고 복원합니다(병렬 영상, 압축 센싱). 모두 "어떤 푸리에 계수를 꼭 측정해야 하는가"라는 질문에 대한 답들입니다. 인체 쪽 이야기는 BodyBook에서 이어집니다.

이 도구가 쓰이는 곳

푸리에 변환은 시리즈 전체에서 가장 자주 불려 나오는 도구입니다. 각 책의 해당 장에서 "더 깊이"를 누르면 이 장으로 돌아옵니다.

MathBook 안에서는 6장(표본화하면 스펙트럼이 복제된다), 7장(잡음의 전력 스펙트럼), 8장(변환 부호화와 압축 한계)이 이 장의 도구를 바로 이어 씁니다.

핵심 정리

  1. 푸리에 분해는 열전도 문제에서 태어났다. 사인 모드는 미분 연산자의 고유함수라서 모드마다 따로 풀리고, n번 모드는 \(e^{-n^2\tau}\)로 감쇠한다.
  2. 사인파 = 회전하는 원의 그림자. 원을 충분히 쌓으면 어떤 주기 파형도 그리지만, 점프 근처에는 약 9%의 오버슈트(깁스 현상)가 남는다. 매끈한 파형일수록 계수가 빨리 줄어든다.
  3. 푸리에 계수 = 신호를 주파수 f로 원에 감았을 때의 질량중심 = 그 회전자와의 내적. 서로 다른 주파수는 직교하므로 성분들이 섞이지 않는다.
  4. DFT는 N개 표본에 대한 감기 기계이고, FFT는 그것을 \(N\log N\)으로 계산한다. 분해능은 1/(관측 시간), 시간 폭과 주파수 폭의 곱은 \(1/(4\pi)\) 이상.
  5. 선형 시불변 시스템의 출력 = 입력 * 임펄스 응답, 주파수 영역에서는 \(Y = X\cdot H\). 필터는 스펙트럼에 곱하는 함수다.
  6. 렌즈 뒤초점면에는 물체의 공간주파수가 펼쳐진다. PSF = |FT(동공)|², OTF = 동공의 자기상관, 회절 한계 차단주파수 = 1/(λN).
  7. JPEG는 8×8 DCT 뒤 고주파를 거칠게 양자화하고, MRI는 기울기 자기장으로 k-공간(영상의 FT)을 직접 측정해 역변환한다. 중심은 대비, 가장자리는 윤곽.

확인 퀴즈

양 끝이 0 °C로 유지되는 막대에서, 처음 온도 분포의 3번 사인 모드는 1번 모드에 비해 몇 배 빠르게 감쇠하는가(지수의 비)?

\(\partial^2/\partial x^2\)가 \(\sin(n\pi x/L)\)에 \(-(n\pi/L)^2\)을 곱하므로 감쇠율은 \(n^2\)에 비례한다. 3² = 9.

사각파의 푸리에 부분합에서 항의 수 N을 무한히 늘리면 점프 근처의 최대 오버슈트는?

깁스 현상. 부분합은 제곱 평균 오차를 0으로 보내지만 최대 오차는 약 0.0895 × 점프로 남는다. 봉우리 위치가 점프 쪽으로 다가가며 폭이 좁아질 뿐이다.

g(t) = cos(2π·3t)를 감는 주파수 f로 원에 감았다. 질량중심이 원점에서 가장 멀리 떨어지는 f는?

감는 주파수가 성분 주파수와 같을 때만 봉우리가 한 방향에 쌓인다. 직류가 없으므로 f = 0에서는 평균이 0이다. 이것이 \(\langle g, e^{2\pi i f t}\rangle\)이 f = 3에서만 0이 아닌 이유(직교성)다.

톤 버스트의 길이를 1/4로 줄이면 스펙트럼의 폭은?

시간 압축 \(g(at)\)은 주파수 확장 \(\hat g(f/a)/|a|\)이 된다. 폭의 곱이 일정하므로 시간 폭이 1/4이면 주파수 폭은 4배.

λ = 0.5 µm, F/4인 무수차 렌즈의 (비간섭성) 회절 한계 차단 주파수는?

\(f_c = 1/(\lambda N) = 1/(0.0005\ \text{mm}\times 4) = 500\) lp/mm. OTF가 동공의 자기상관이고, 동공 지름만큼 밀면 겹침이 0이 되기 때문이다.

MRI에서 k-공간의 중심 부분만 측정하고 바깥을 0으로 두고 역변환하면 영상은?

k-공간 중심은 저주파, 즉 넓은 영역의 밝기(대비)를 담는다. 고주파(가장자리)를 버린 것은 저역 통과 필터와 같아 흐릿해지고, 날카롭게 잘랐다면 윤곽 옆에 링잉도 생긴다. 가장자리만 있으면 반대로 윤곽만 남는다.