사진의 한 줄을 따라가며 밝기가 얼마나 자주 오르내리는지를 공간 주파수라 한다. 흐릿한 큰 모양은 천천히 바뀌고(낮은 주파수), 촘촘한 무늬와 결은 빠르게 바뀐다(높은 주파수). 해상도는 일정한 길이 안에 담을 수 있는 가장 빠른 변화로, 픽셀 N개로는 밝고 어두운 줄을 최대 N/2쌍까지만 그릴 수 있다. 다행히 사람은 낮은 주파수만 있어도 무엇인지 알아보므로, 데이터를 줄일 때는 높은 주파수부터 버린다.
예시로 보기
같은 장미 사진을 가로세로 1024픽셀에서 512, 256, …, 32로 반씩 줄이면 픽셀 수는 매번 1/4이 된다. 1024에서 32까지 가면 1/1024로 줄어든다. 그런 뒤 다시 같은 크기로 키워 보면, 픽셀이 적은 사진일수록 꽃잎의 결부터 사라지고 결국 덩어리진 네모만 남는다.
그럼 데이터를 1/4로 줄여야 한다면 무엇을 버려야 할까? 아이 사진 한 장으로 두 방법을 비교하면 이렇다.
| 남긴 것 | 결과 |
|---|---|
| 픽셀 25% (위쪽 부분만) | 아이 머리 윗부분만 보이고 나머지는 빈칸 |
| 픽셀 6.25% | 더 작은 조각만 남음 |
| 가장 낮은 주파수 25% | 조금 흐릿하지만 아이 얼굴 전체가 보임 |
| 가장 낮은 주파수 6.25% | 더 흐릿하지만 여전히 아이로 알아봄 |
같은 25%라도 낮은 주파수를 남기면 전체 모양이 살아남는다. 1차원으로 같은 실험을 하면 이렇다.
회색 선이 원래 신호(표본 64개)다. 주황 선은 앞쪽 16개 표본만 남긴 것이라 나머지를 전혀 모른다. 파란 선은 가장 낮은 주파수 16개만 남겨 되살린 것인데 원래 신호와 거의 겹친다1.
정의
- 공간 주파수: \(x\)축이나 \(y\)축 같은 한 줄(스캔 라인)을 따라 밝기가 바뀌는 빠르기다. 주기는 시간이 아니라 거리(길이)로 재고, 주파수는 단위 거리마다 밝기가 바뀌는 횟수다.
- 해상도: 단위 거리에 나타낼 수 있는 최대 공간 주파수다.
디지털 이미지에서는 거리를 픽셀 개수로 잰다. 공간 주파수는 “픽셀 \(N\)개에 밝기가 몇 번 오르내리는가”이고, 가로·세로·대각선 어느 방향으로도 잴 수 있다. 밝은 줄 하나와 어두운 줄 하나, 곧 한 주기를 그리려면 픽셀이 적어도 2개 필요하다. 그래서
\[\text{최대 공간 주파수} = \frac{N}{2}\ \text{주기 (픽셀 } N\text{개당)}\]이다. 8픽셀이면 0, 255, 0, 255, …로 4주기가 한계다. 더 빠른 무늬를 픽셀마다 재면 느린 무늬로 둔갑한다. 예를 들어 픽셀당 0.6주기인 줄무늬를 재면 픽셀당 0.4주기 줄무늬와 똑같은 값이 나온다. 신호 쪽에서는 이것을 에일리어싱이라 부른다(표본화와 양자화)2.
dpi(dot per inch). 화면 크기가 정해져 있으면 단위 면적당 픽셀 수가 해상도를 정한다. 1인치에 몇 점을 찍는지를 dpi로 적는다. 예를 들어 1250, 200, 150, 72 dpi가 있다. 폭 4인치 그림이면 72 dpi로 288픽셀, 1250 dpi로 5000픽셀이다.
어? 카메라가 물체에 다가가면 해상도는 어떻게 될까? 센서의 픽셀 수는 그대로지만, 물체의 같은 길이에 더 많은 픽셀이 들어간다. 그래서 그 물체에 대해서는 더 높은 공간 주파수, 곧 더 작은 결까지 담는다. 대신 화면에 들어오는 범위가 좁아진다.
사람이 쓰는 정보. 사람이 지각하는 정보는 공간 주파수의 분포(스펙트럼)로 나눠 볼 수 있다.
| 주파수 | 담긴 정보 |
|---|---|
| 낮은 쪽 | 물체의 대략적인 모양과 윤곽(무엇이 어디에 있는가) |
| 높은 쪽 | 물체 표면의 질감(결, 털, 잔무늬) |
활용
- JPEG 같은 압축은 영상을 공간 주파수로 나눈 뒤 높은 주파수를 거칠게 적거나 버린다. 사람이 대략의 모양을 낮은 주파수에서 읽기 때문에 크게 줄여도 알아본다3.
- 흐리게 하기(평균 필터)는 높은 공간 주파수를 줄이는 일이다. 창이 클수록 더 낮은 주파수까지 지운다: 2차원 합성곱.
- 흔한 실수: dpi를 영상 자체의 성질로 아는 것. 픽셀 수가 같은 영상도 출력 크기에 따라 dpi가 달라진다.
연결
자주 하는 오해
반만 맞다. 위 표는 윤곽을 낮은 주파수 쪽에 둔다. 이것은 “물체가 대략 어떤 모양으로 어디 있는가”를 낮은 주파수만으로 알 수 있다는 뜻이다. 그러나 날카롭게 딱 끊기는 경계를 그리려면 높은 주파수도 필요하다. 확인 방법: 위 예시에서 낮은 주파수 6.25%만 남긴 사진은 아이를 알아볼 수 있지만 머리카락과 얼굴의 경계가 흐릿하다. 모양은 남고 선명함은 사라진다4.
확인 문제
C1 공간 주파수와 해상도를 정의하고, 디지털 이미지에서 픽셀 N개의 최대 공간 주파수를 쓰라.
답: 공간 주파수는 한 줄을 따라 단위 거리마다 밝기가 바뀌는 횟수다. 해상도는 단위 거리에 나타낼 수 있는 최대 공간 주파수다. 픽셀 \(N\)개로는 최대 \(N/2\)주기다.
C2 최대 공간 주파수가 왜 N이 아니라 N/2인지 이유를 대라.
답: 한 주기는 밝은 줄 하나와 어두운 줄 하나다. 한 픽셀은 값 하나만 가지므로 한 주기를 그리려면 픽셀이 적어도 2개 필요하다. 그래서 \(N\)개로는 \(N/2\)주기가 한계다. 더 빠른 무늬는 픽셀마다 재면 느린 무늬로 둔갑한다.
C3 데이터를 25%만 남겨야 한다. (가) 픽셀 25%를 남기기 (나) 가장 낮은 주파수 25%를 남기기 중 사람이 그림을 알아보기에 나은 것은? 다른 쪽이 왜 나쁜지도 쓰라.
답: (나). 낮은 주파수에 전체 모양이 담겨 있어 조금 흐려질 뿐 전체가 남는다. (가)는 남긴 부분은 선명하지만 버린 75%는 아무 정보가 없어 그림 대부분이 사라진다.
-
26_resolution-spatial-frequency_plot.py로 그렸고, 두 방법의 복원 오차를 같은 코드로 확인했다. ↩
-
표본화 정리의 표준 내용이다. ↩
-
JPEG의 원리는 이산 코사인 변환 계수를 양자화해 높은 주파수를 거칠게 적는 것이다. ↩
-
“윤곽선은 저주파”라는 요약을 대략의 모양과 날카로운 경계로 나눠 해석했다. 날카로운 경계(계단)가 높은 주파수 성분을 가진다는 것은 푸리에 급수의 표준 결과다(푸리에 급수의 수렴). ↩