에일리어싱(aliasing)은 신호를 일정 간격으로 표본화할 때, 초당 재는 횟수의 절반보다 자주 오르내리는 성분이 원래와 다른 느린 신호로 둔갑해 나타나는 현상이다. 영화 속 마차 바퀴가 거꾸로 도는 착시는 이 현상이 눈에 보이게 드러난 사례다.
프레임당 30°, 살 간격의 절반을 넘으면 뒤로 보인다

프레임당 30도. 살이 여덟 개 달린 바퀴가 초당 두 바퀴를 돌고, 그 앞에 초당 24장을 찍는 카메라가 있으면 프레임과 프레임 사이에 바퀴는 딱 그만큼 돈다. 그런데 그렇게 찍은 장면을 차례로 이어 붙여 보면, 화면 속 바퀴는 앞으로 가지 않는다. 초당 한 바퀴씩 거꾸로 돈다.
필름은 움직임을 통째로 담지 않는다. 초당 24번 셔터를 열어 그 순간의 모습만 남기고, 셔터가 닫혀 있는 동안 일어난 일은 기록하지 않는다. 이렇게 연속으로 변하는 것을 일정한 간격으로 끊어 찍는 일을 표본화(sampling)라고 한다.
표본과 표본 사이가 비어 있다는 것 자체는 아직 문제가 아니다. 문제는 그 빈자리를 채우는 방식이 하나로 정해져 있다는 데 있다. 앞 장면과 뒤 장면을 잇는 가장 짧은 움직임이 실제로 일어난 일로 읽힌다. 카메라만 그러는 것도 아니다. 깜빡이는 스트로보 조명 아래에서는 눈에 닿는 것 자체가 끊긴 장면들이고, 같은 계산이 그대로 통한다. 찍힌 네 장을 나란히 놓으면 그 읽는 방식이 어디서 어긋나는지 눈으로 확인할 수 있다.
그림 1에서 밝게 칠한 살 하나만 눈으로 따라가면 그 살은 매번 시계 방향으로 30도씩 나아간다. 여기까지는 실제로 일어난 그대로다. 그런데 진짜 필름에는 이 표식이 없다. 살 여덟 개는 서로 똑같이 생겨서, 다음 프레임에 보이는 살이 방금 그 살인지 옆에 있던 살인지 가릴 수가 없다. 살은 45도마다 하나씩 있으니까, 30도 돌아간 자리는 다음 살이 원래 있던 자리에서 15도 못 미친 곳이다. 눈에는 그쪽이 훨씬 가깝다.
이것은 눈이 잘못 본 것이 아니다. 네 장만 놓고 보면 바퀴가 앞으로 30도 갔다는 증거와 뒤로 15도 갔다는 증거가 똑같이 없다. 두 해석 모두 네 장을 흠 없이 설명한다. 어느 쪽이 맞는지는 프레임과 프레임 사이의 시간에 적혀 있었고, 그 시간은 애초에 찍히지 않았다.
설명이 두 개뿐인 것도 아니다. 앞으로 75도, 앞으로 120도처럼 45도씩 더해 간 각들도 똑같은 네 장을 만든다. 이 글에서는 그중 크기가 가장 작은 각 하나가 보이는 것으로 두고 계산한다. 프레임 사이에 살이 몇 도를 도는지는 숫자 두 개만 있으면 나온다. 한 바퀴가 360도이니, 초당 $v$ 바퀴를 초당 $f$ 장으로 찍으면 한 프레임 사이의 각은 360에 회전수를 곱하고 프레임 수로 나눈 값이다.
식 1에 초당 두 바퀴와 초당 프레임 수(fps) 24를 넣으면 30도가 나온다. 마차 바퀴 착시를 다룬 Purves 연구팀의 1996년 논문도 이 각을 첫 식으로 적어 두었다. 갈림길은 살 간격의 절반이다.
살이 여덟 개면 살과 살 사이가 45도이고, 그 절반은 22.5도다. 프레임 사이 각이 22.5도 아래면 가장 가까운 해석은 그냥 앞으로 조금 간 것이다. 22.5도를 넘어서면 다음 살이 뒤에서 그 자리로 왔다고 읽는 쪽이 더 가깝다. 각이 정확히 45도이거나 그 배수면 살들이 앞 프레임과 똑같은 자리에 놓여, 바퀴가 아예 멈춘 것처럼 보인다. 살 개수와 프레임 수는 그대로 두고 회전 속도만 바꾸면 겉보기 방향이 어디서 갈리는지 계산해 볼 수 있다.
spokes, fps = 8, 24 # 살 8개, 초당 24 프레임
gap = 360 / spokes # 살 간격 45°
for v in (1, 2, 3, 4): # 초당 회전수(rps)
theta = 360 * v / fps # 프레임 사이에 바퀴가 돈 각
apparent = (theta + gap / 2) % gap - gap / 2 # 살 간격 안으로 접은 각
name = "정지" if apparent == 0 else ("정방향" if apparent > 0 else "역방향")
print(f"v={v} rps 프레임당 {theta:5.1f}° 겉보기 {apparent:6.1f}° {name}")v=1 rps 프레임당 15.0° 겉보기 15.0° 정방향
v=2 rps 프레임당 30.0° 겉보기 -15.0° 역방향
v=3 rps 프레임당 45.0° 겉보기 0.0° 정지
v=4 rps 프레임당 60.0° 겉보기 15.0° 정방향겉보기 각을 구하는 한 줄이 하는 일은 간단하다. 프레임 사이 각을 살 간격만큼씩 빼거나 더해서 −22.5도와 22.5도 사이로 끌어들인다. 눈이 가장 가까운 살을 고르는 일을 산술로 옮긴 것이다.
초당 한 바퀴에서는 프레임당 15도라서 절반 규칙에 걸리지 않고, 바퀴는 그대로 앞으로 돈다. 초당 두 바퀴에서 30도가 되면 22.5도를 넘는다. 겉보기 각은 −15도로 뒤집힌다. 초당 세 바퀴에서는 45도가 되어 바퀴가 멈춘 것처럼 보이고, 초당 네 바퀴에서 다시 앞으로 도는 것으로 돌아온다. 속도는 한 방향으로만 올렸는데 화면 위의 방향은 앞·뒤·정지·앞으로 되풀이된 셈이다.
세 번째 줄이 특히 이상하다. 초당 세 바퀴면 첫 줄의 세 배 속도인데, 화면에서는 아무 일도 일어나지 않는다. 그 정지는 바퀴가 느려서 생긴 것이 아니다. 살이 한 프레임 사이에 옆 살 자리로 정확히 옮겨 앉는 바람에, 모든 프레임이 앞 프레임과 구별되지 않게 된 것이다. 속도를 0에서 초당 여섯 바퀴까지 연속으로 훑으면 그 되풀이가 톱니 모양으로 드러난다.
그림 2에서 곧게 올라가는 기준선은 실제 회전 속도이고, 톱니 모양으로 꺾이는 선은 화면에 보이는 속도다. 두 선은 초당 1.5회전까지만 겹친다. 그 위로는 톱니선이 아래로 꺾여 0 밑으로 내려가고, 초당 3회전에서 0을 지난 뒤 같은 모양을 한 번 더 되풀이한다. 톱니선이 0 아래에 놓인 구간, 그러니까 초당 1.5~3회전과 4.5~6회전이 바퀴가 거꾸로 도는 구간이다.
실제 속도를 아무리 올려도 화면 속 속도는 이 톱니의 높이를 넘지 못한다. 그 높이는 초당 1.5회전이고, 프레임 수를 살 개수의 두 배로 나눈 값이다. 카메라가 담을 수 있는 회전 속도의 상한이 여기서 정해진다.
상한을 넘지 못한다는 말은 방향만 뒤집힌다는 뜻이 아니다. 앞의 출력에서 마지막 줄이 그 경우다. 초당 네 바퀴로 도는 바퀴가 화면에서는 초당 한 바퀴짜리로 찍힌다. 방향은 그대로인데 속도만 4분의 1로 줄어든 셈이다.
초당 한 바퀴 거꾸로 돈다는 값은 살 여덟 개·24 fps·초당 두 바퀴라는 한 점에서 나온 것이다. 살 개수나 프레임 수가 달라지면 멈춰 보이는 속도도, 거꾸로 도는 구간도 함께 옮겨 간다. 살이 $s$ 개일 때 바퀴가 멈춰 보이는 속도는 $v = k f / s$ 이고, 거꾸로 도는 구간은 그 바로 아래 절반이다.
날이 세 장인 선풍기를 같은 카메라로 찍으면 날 사이가 120도로 벌어지니, 멈춰 보이는 속도는 초당 여덟 바퀴로 올라간다. 살이 여덟 개인 바퀴보다 훨씬 빨리 돌아야 이상해진다는 뜻이다. 반대로 살이 촘촘할수록 거꾸로 돌기 시작하는 속도는 낮아진다. 바퀴가 몇 도를 도는지만으로는 아무것도 정해지지 않고, 살 간격과 견주어야 방향이 정해진다.
여기까지가 이 글의 답이다. 초당 재는 횟수의 절반보다 자주 오르내리는 것, 곧 주기가 표본 간격의 두 배보다 짧은 것은 기록에서 지워지지 않는다. 대신 느리게 변하는 다른 것으로 바뀌어 남는다. 바퀴에서는 그 다른 것이 거꾸로 도는 회전이거나 멈춰 선 바퀴였고, 바퀴 밖에서도 사정은 같다.
바퀴에서 신호로 — 섀넌의 표본화 정리
변하는 것 대부분은 사인파 성분의 합으로 나눠 볼 수 있다. 소리도 온도 기록도 서버 부하 곡선도 빠른 성분과 느린 성분이 겹친 것이다. 같은 방식으로 이미지를 나눠 본 이야기는 푸리에 이미지 변환 편에서 다뤘다. 1949년에 클로드 섀넌(Claude Shannon)은 표본이 원래를 담는 조건을 정리 하나로 적었다.
If a function f(t) contains no frequencies higher than W cps, it is completely determined by giving its ordinates at a series of points spaced 1/2W seconds apart.
함수 f(t) 에 초당 W 번(W cps, 지금의 Hz)보다 높은 주파수가 없다면, 그 함수는 1/2W 초 간격으로 늘어놓은 값들만으로 완전히 결정된다.
Shannon, “Communication in the Presence of Noise”, Proc. IRE 37(1), 1949신호에 든 가장 빠른 성분이 초당 $W$ 번 흔들린다면, 표본은 1/2W 초 이하 간격으로 찍어야 한다는 말이다. 여기서 $W$ 는 신호 쪽 숫자이고, 표본 간격 $\Delta t$ 는 재는 쪽 숫자다. 두 숫자 사이의 조건은 부등호 하나로 끝난다.
식 2를 뒤집어 읽으면 표본 간격이 정해지는 순간 담을 수 있는 최고 주파수도 정해진다 — 초당 100번 재는 장치는 초당 50번까지만 담는다. 조건을 지키면 원래 곡선을 되찾는 공식까지 따라온다. 다만 섀넌 자신은 이 정리를 새로 발견했다고 쓰지 않는다. 바퀴에서 절반을 넘긴 회전이 뒤로 접혔듯, 신호에서도 절반 위 성분은 절반 아래로 접혀 내려온다. 초당 100번 재는 경우를 계산하면 이렇다.
| 원래 성분 | 표본에 남는 성분 |
|---|---|
| 5 Hz | 5 Hz |
| 45 Hz | 45 Hz |
| 55 Hz | 45 Hz |
| 95 Hz | 5 Hz |
| 105 Hz | 5 Hz |
| 150 Hz | 50 Hz |
| 195 Hz | 5 Hz |
접힌 값은 원래 주파수에서 표본화율의 정수배를 뺀 것 중 가장 작은 값, 곧 $|f – k f_s|$ 의 최솟값이다. 절반인 50 Hz 아래는 그대로 지나가고, 그 위는 50을 축으로 접혀 내려온다. 눈여겨볼 자리는 오른쪽 칸에 5 Hz 가 네 번 적힌다는 것이다. 표본만 손에 든 사람은 그 5 Hz 가 원래부터 5 Hz 였는지, 95·105·195 중 하나가 접혀 내려온 것인지 가릴 방법이 없다.
같은 표본을 지나는 두 곡선 — 표본화 뒤엔 되돌릴 수 없다
그 말을 그림 하나로 확인할 수 있다. 초당 55번 흔들리는 사인파와, 위아래가 뒤집힌 45 Hz 사인파를 한 좌표에 겹쳐 그린다. 그런 다음 초당 100번씩 표본을 찍어 보면 된다.
그림 3의 두 곡선은 생김새가 전혀 다르다. 그런데 표본점 스무 개에서는 값이 정확히 같다. 표본이 원래 함수를 하나로 결정한다는 섀넌의 유일성도 이 그림과 어긋나지 않는다. 하나뿐이라는 것은 대역 안에 든 함수 중에서 하나뿐이라는 뜻이다. 그래서 접힘을 막을 수 있는 자리는 한 곳뿐이다.
그림 4에서 표본화 바로 앞에 붙은 상자가 안티에일리어싱 필터(anti-aliasing filter)다. 절반 위 성분을 표본화 전에 미리 잘라 낸다. 점선으로 갈라져 나간 경로가 이 상자를 건너뛴 경우다. 잘리지 않은 빠른 성분은 느린 가짜가 되어 표본 안으로 들어온다.
표본화 뒤에는 아무리 좋은 필터를 걸어도 소용이 없다. 진짜 5 Hz 와 접힌 5 Hz 가 데이터 안에서 똑같이 생겼기 때문이다. 같은 조건이 우리가 매일 쓰는 규격에도 그대로 적혀 있다.
연속 조명에서도 바퀴는 뒤로 도는가 — 미결 논쟁
필름과 스트로보 아래의 역전은 논쟁거리가 아니다. 장치가 실제로 표본을 찍고 있으니, 프레임 사이 각을 살 간격의 절반과 견준 앞의 계산이 그대로 맞는다. 이상한 것은 그다음이다.
Purves 연구팀은 1996년 논문에서 깜빡이지 않는 빛 아래에서도 같은 착시가 난다고 보고했다. 지름 40 cm짜리 알루미늄 원판을 직류 모터에 물려 돌렸고, 연구자들 자신 말고 처음 보는 관찰자 12명 중 11명이 착시를 봤다. 레코드플레이어를 33~78 rpm(분당 회전수)으로 돌렸을 때도 봤다고 적는다. 저자들은 이를 두고 우리가 영화를 보듯 시각도 장면을 이어 붙여 처리하는 것 같다고 해석했다.
"시각계가 이산 표본을 찍는다"는 문장은 Purves 연구팀이 자기 관찰에 붙인 해석이지 확정된 사실이 아니다. 착시가 난다는 관찰과 그 원인이 표본화라는 설명은 갈라서 읽어야 한다.
반대 증거도 나왔다. Kline 과 Eagleman 은 2008년에 두 가지를 들어 이 설명에 반대했다. 하나는 같은 자리에 겹쳐 놓은 두 방향의 운동에서 역전이 따로 일어난다는 것이다. 시각계가 그 영역을 통째로 표본화한다면 둘은 함께 뒤집혀야 한다.
다른 하나는 규칙적으로 반복되지 않는 자극에서도 역전이 난다는 것이다. 두 사람이 내놓은 대안은 지각 경쟁(perceptual rivalry)이다. 영화와 스트로보의 역전은 표본화로 끝난 이야기이고, 연속광 쪽은 아직 갈려 있다.
재는 횟수의 절반을 넘는 순간
서버 지표는 1분에 한 번 찍히고, 온도 센서는 10분에 한 번 읽힌다. 모니터링 대시보드는 하루 한 번 갱신되고, 설문 조사는 주 단위로 돈다. 이것들은 전부 표본화이고, 각각에는 담을 수 있는 가장 짧은 주기가 딸려 온다. 그 주기는 재는 간격의 두 배다. 1분 간격 지표는 2분보다 짧은 주기로 튀는 부하를 담지 못하고, 주 단위 설문은 2주보다 짧게 오르내리는 기분을 담지 못한다.
그런데 지표가 평평하게 나오지는 않는다. 그 부하는 몇 시간짜리 완만한 물결로 바뀌어 그래프 위에 남고, 그 물결을 보고 세운 대책은 있지도 않은 추세를 겨눈다. 그래서 곡선의 모양보다 먼저 확인해야 하는 것이 있다. 이 데이터는 얼마나 자주 재서 만든 것인가?
간격을 좁히는 것이 첫 번째 답이지만 늘 그럴 수 있는 것은 아니고, 그때 거를 자리는 앞에서 본 그 자리다. 평균을 내든 창을 씌우든, 기록으로 남기기 전에 해야 한다. 재고 나서 곡선을 매끄럽게 다듬는 것은 가짜까지 함께 매끄럽게 만들 뿐이다.
재는 간격이 있는 곳에는 언제나 담기는 빠르기의 상한이 따라붙고, 그보다 빠른 변화는 데이터에서 사라지는 대신 그럴듯하게 느린 추세로 위장한다.
더 읽기
- Shannon, C. E. (1949), "Communication in the Presence of Noise", Proc. IRE 37(1):10–21. https://fab.cba.mit.edu/classes/S62.12/docs/Shannon_noise.pdf
- Purves, D., Paydarfar, J. A. & Andrews, T. J. (1996), "The wagon wheel illusion in movies and reality", PNAS 93(8):3693–3697. https://doi.org/10.1073/pnas.93.8.3693
- Kline, K. A. & Eagleman, D. M. (2008), "Evidence against the temporal subsampling account of illusory motion reversal", Journal of Vision 8(4):13. https://eagleman.com/papers/kline_2008.pdf