Chapter 11

컴퓨테이셔널 포토그래피

스마트폰 센서는 대부분 풀프레임 센서 면적의 십분의 일도 되지 않는다. 그런데도 밤거리 사진이 그럴듯하게 나오는 것은 셔터 한 번에 한 장이 아니라 열 장 넘게 찍기 때문이다. 이 장에서는 여러 장의 RAW 프레임을 정렬하고 합쳐서 노이즈, 해상도, 심도라는 물리적 한계를 계산으로 넘는 방법과, 그 계산이 넘지 못하는 선이 어디인지를 본다.

작은 센서의 광량 한계

10장의 마지막 절에서 여러 장을 찍어 합치는 흐름을 한 장의 그림으로 훑어보았다. 이 장은 그 그림의 블록 하나하나를 연다. 먼저 왜 여러 장이 필요한지를 숫자로 확인하자.

7장에서 보았듯이 밝은 영역의 SNR은 모은 전자 수의 제곱근이다. 화질은 결국 광자를 몇 개 모았는가로 정해진다. 같은 장면을 같은 화각으로 찍을 때 영상 전체에 모이는 광전자 수는 다음에 비례한다.

$$N_e \;\propto\; \frac{L_{\text{scene}}\cdot A_{\text{sensor}}\cdot t_{\text{exp}}}{F^{2}}$$
\(L_{\text{scene}}\): 장면 휘도, \(A_{\text{sensor}}\): 센서 면적, \(t_{\text{exp}}\): 노출 시간, \(F\): 렌즈의 F-넘버. 센서면 조도는 \(1/F^2\)에 비례하고(5장), 거기에 면적과 시간을 곱한 것이 총 광자 수다.

스마트폰 렌즈는 이미 F1.5~F2.0으로 밝다. 더 밝게 만들기는 어렵다. 장면 휘도는 바꿀 수 없다. 남는 변수는 센서 면적과 노출 시간인데, 면적은 기기 두께가 정한다.

같은 화각 · 같은 F-넘버 · 같은 노출 시간 → 광자 수 ∝ 센서 면적 풀프레임1형1/1.3형1/2.55형 864 mm²116 mm²72 mm²24 mm² 기준−2.9 스톱−3.6 스톱−5.2 스톱 1장약 7장약 12장약 37장
그림 11-1. 센서 포맷별 면적(같은 축척). 맨 아랫줄은 풀프레임 한 장과 같은 수의 광자를 모으려면 같은 노출로 몇 장을 찍어야 하는지를 나타낸다. 면적비가 곧 필요한 프레임 수다.

1/1.3형 센서는 풀프레임보다 면적이 약 12배 작다. 샷 노이즈가 지배하는 조건에서 SNR 차이는 \(\sqrt{12}\approx 3.5\)배, 약 11 dB다. 이 차이를 메우려면 노출 시간을 12배로 늘려야 한다. 문제는 손이다.

카메라를 손에 들면 몸의 미세한 떨림 때문에 카메라가 초당 0.2~1° 정도로 회전한다. 각속도 \(\omega\)로 회전하는 동안 상이 센서 위에서 흐르는 거리를 픽셀 수로 쓰면 다음과 같다.

$$b = \frac{\omega\, t_{\text{exp}}\, f}{p}$$
\(f\): 렌즈의 실제 초점거리, \(p\): 픽셀 피치, \(\omega\): rad/s. 예: \(f\) = 6 mm, \(p\) = 1 µm이면 \(f/p\) = 6000. \(\omega\) = 0.5°/s = 8.7 mrad/s일 때 상은 초당 약 52픽셀 흐른다. 1/30초 노출에 1.7픽셀, 1/4초 노출에 13픽셀이다.

광학식 손떨림 보정(OIS)은 이 흐름을 수분의 일로 줄여 주지만 없애지는 못한다. 그리고 손떨림을 다 잡아도 피사체가 움직이면 소용이 없다. 긴 노출 한 장으로는 광자를 더 모을 수 없다. 그래서 흔들리지 않을 만큼 짧은 노출을 여러 장 찍고 계산으로 합친다. 이것이 컴퓨테이셔널 포토그래피(Computational Photography)의 출발점이다.

기법여러 장에서 얻는 것넘으려는 한계이 장의 절
버스트 병합광자 수(시간축 평균)샷 노이즈, 읽기 노이즈2~4절
야간 모드수 초에 걸친 총 노출손떨림과 피사체 움직임5절
멀티프레임 초해상도서로 다른 서브픽셀 표본 위치픽셀 피치와 CFA의 표본화 한계6절
합성 심도시점이 다른 두 영상(시차)작은 조리개 지름에서 오는 깊은 심도7절
다중 노출 HDR노출이 다른 프레임풀웰과 노이즈 바닥 사이의 다이내믹 레인지9장

버스트 촬영: 긴 한 장 대 짧은 N장

스마트폰 카메라 앱을 열면 센서는 셔터를 누르기 전부터 초당 30장 안팎으로 계속 동작한다. 화면의 프리뷰를 그리기 위해서다. 이 프레임들의 RAW를 버리지 않고 최근 몇 장을 메모리에 돌려 가며 담아 두는 구조가 ZSL 링 버퍼(Zero Shutter Lag Ring Buffer)다. 새 프레임이 오면 가장 오래된 프레임을 덮어쓴다.

셔터 누름 기준 덮어씀 링 버퍼: 최근 8장의 RAW 이후 프리뷰 시간 병합에 쓰는 프레임은 셔터를 누르기 전에 이미 찍혀 있다
그림 11-2. ZSL 링 버퍼. 셔터를 누른 순간 버퍼에 든 프레임들이 곧바로 버스트가 된다. 누른 뒤에 찍기 시작하는 것이 아니므로 셔터 지연이 없고, 사용자가 본 그 순간이 기준 프레임이 된다.

이제 핵심 질문이다. 총 노출 시간 \(T\)를 한 장에 다 쓰는 것과 \(N\)장으로 나누어 쓰는 것은 SNR이 같은가? 광자는 어느 쪽이든 똑같이 모인다. 총 신호 전자 수를 \(S\)라 하면 샷 노이즈 분산도 양쪽 모두 \(S\)다. 다른 것은 읽기 노이즈다. 읽을 때마다 \(\sigma_r\)이 한 번씩 더해지므로 \(N\)번 읽으면 분산 \(\sigma_r^2\)이 \(N\)번 쌓인다(7장).

$$\mathrm{SNR}_{\text{long}} = \frac{S}{\sqrt{S + \sigma_r^{2}}},\qquad \mathrm{SNR}_{\text{burst}} = \frac{S}{\sqrt{S + N\sigma_r^{2}}}$$
\(S\): 총 신호 전자 수(프레임당 \(s = S/N\)), \(\sigma_r\): 읽기 노이즈(e⁻ rms), \(N\): 프레임 수. 암전류는 총 시간이 같으므로 양쪽에 같은 양이 더해져 여기서는 생략했다.

버스트 쪽의 손해, 곧 읽기 노이즈 페널티는 두 식의 비다. \(\sigma_r\) = 2 e⁻, \(N\) = 8일 때 계산해 보면 다음과 같다.

총 신호 \(S\)프레임당 신호 \(s\)긴 노출 1장짧은 노출 8장 병합페널티
16 e⁻2 e⁻11.1 dB7.3 dB3.8 dB
100 e⁻12.5 e⁻19.8 dB18.8 dB1.0 dB
400 e⁻50 e⁻26.0 dB25.7 dB0.3 dB
4,000 e⁻500 e⁻36.0 dB36.0 dB0.03 dB

규칙은 단순하다. 프레임 한 장의 신호 \(s\)가 \(\sigma_r^2\)보다 충분히 크면 나누어 찍어도 잃는 것이 거의 없다. \(s \ge 10\,\sigma_r^2\)이면 페널티는 0.5 dB 미만이다. 반대로 프레임당 전자 몇 개밖에 못 받는 극저조도에서는 나눌수록 손해가 커진다. 읽기 노이즈를 1 e⁻ 아래로 낮추려는 픽셀 기술이 야간 사진에 직접 기여하는 이유가 여기 있다. \(\sigma_r\)이 2 e⁻에서 1 e⁻로 내려가면 손해 없이 나눌 수 있는 조도가 4배 어두워진다.

비교 기준을 바꾸면 버스트의 이득이 보인다. 흔들리지 않으려면 어차피 짧은 노출 한 장밖에 쓸 수 없다고 하자. 그 한 장과 견주면 \(N\)장 병합의 SNR은 조도와 읽기 노이즈에 관계없이 정확히 \(\sqrt{N}\)배다.

$$\frac{\mathrm{SNR}_{\text{burst}}}{\mathrm{SNR}_{\text{single short}}} = \frac{Ns/\sqrt{Ns + N\sigma_r^2}}{s/\sqrt{s+\sigma_r^2}} = \sqrt{N}$$
8장이면 9 dB, 16장이면 12 dB. 노이즈 바닥도 \(\sqrt{N}\)배 낮아지므로 다이내믹 레인지가 \(10\log_{10}N\) dB 넓어진다. 하이라이트가 포화하지 않도록 일부러 어둡게 찍은 프레임 여러 장을 합쳐 암부를 살리는 방식은 이 성질을 이용한다. 노출을 바꿔 가며 찍는 브라케팅 HDR과 달리 모든 프레임의 노출이 같아 정렬이 쉽다.
SIMULATOR

버스트 병합: 긴 노출 1장 대 짧은 노출 N장

프레임당 신호—
짧은 1장 SNR—
N장 병합 SNR—
긴 1장 SNR—
읽기 노이즈 페널티—
블러 (긴 / 짧은)—
위: 같은 시험 패턴을 세 가지 방법으로 찍은 결과(밝기는 같게 맞춰 표시). 아래: 총 신호에 대한 SNR 곡선과 현재 위치. 신호율은 흰색 화소 기준이고, 손떨림은 수평으로 초당 52픽셀 흐른다고 가정했다. 병합은 정렬이 완벽하다고 가정한다. 해볼 것: ① 기본값에서 긴 1장은 SNR이 가장 높지만 줄무늬가 흐려져 있다. 병합 결과는 2.5 dB 낮지만 선명하다. ② 조도를 올리면 두 곡선이 붙는다. 밝은 곳에서는 나누어 찍어도 손해가 없다. ③ 조도를 최저로 내리고 N을 32로 올리면 페널티가 10 dB를 넘는다. 읽기 노이즈를 낮출수록 페널티가 줄어든다. ④ 손떨림 블러를 끄면(삼각대) 긴 1장이 모든 면에서 낫다.

프레임 정렬: 손떨림을 되돌리기

버스트의 프레임들은 서로 조금씩 어긋나 있다. 그대로 평균하면 긴 노출 한 장과 똑같이 흐려진다. 합치기 전에 각 프레임을 기준 프레임(Reference Frame)에 맞춰야 한다. 기준 프레임은 보통 셔터 시점에 가까운 몇 장 가운데 가장 선명한 것을 고른다. 손떨림은 불규칙해서 어떤 프레임은 우연히 거의 흔들리지 않은 채 찍힌다.

어긋남의 원인은 세 가지다.

영상 전체에 변환 하나를 적용하는 방식으로는 뒤의 두 가지를 맞출 수 없다. 그래서 영상을 작은 타일(Tile)로 나누고 타일마다 변위를 따로 구한다. 기준 프레임의 타일 하나를 다른 프레임 위에서 이리저리 옮겨 보며 차이가 가장 작은 위치를 찾는 방법이 블록 매칭(Block Matching)이다.

$$D(u,v) = \sum_{(x,y)\in \text{tile}} \bigl|\, I_{\text{ref}}(x,y) - I_{\text{alt}}(x+u,\,y+v)\,\bigr|^{q},\qquad (u^{*},v^{*}) = \arg\min_{|u|,|v|\le r} D(u,v)$$
\(I_{\text{ref}}\): 기준 프레임, \(I_{\text{alt}}\): 맞출 프레임, \(r\): 탐색 반경, \(q\) = 1(절대차 합) 또는 2(제곱차 합). 탐색 후보는 \((2r+1)^2\)개다.

문제는 계산량이다. 손떨림과 시차를 합치면 변위가 수십 픽셀에 이른다. ±60픽셀을 전부 뒤지면 후보가 \(121^2\) = 14,641개다. 1200만 화소 영상의 모든 타일에서, 버스트의 모든 프레임에 대해 이 계산을 할 수는 없다. 해법은 계층적 정렬(Coarse-to-Fine Alignment)이다. 영상을 반복해서 축소한 피라미드를 만들고 가장 작은 영상에서부터 찾는다.

레벨 0 (원 해상도) 레벨 1 (1/2) 레벨 2 (1/4) 축소 축소 변위 ×2 변위 ×2 ① 가장 작은 레벨에서 ±4 화소를 전부 탐색 ② 결과에 2를 곱해 다음 레벨의 초기값으로 삼고 그 주변 ±4만 탐색 ③ 레벨 0에 이르면 큰 변위도 적은 계산으로 찾는다
그림 11-3. 계층적 타일 정렬. 축소 영상의 1픽셀은 원 영상의 여러 픽셀에 해당하므로 작은 탐색 반경으로 큰 변위를 덮는다. 위 레벨의 결과가 아래 레벨의 출발점이 된다.

축소 비율이 2이고 레벨마다 ±4픽셀을 탐색하면, 4개 레벨로 덮는 범위는 \(4\times(1+2+4+8)\) = ±60픽셀이다. 후보 수는 레벨당 81개씩 모두 324개로, 전부 뒤질 때의 14,641개에 비해 45분의 1이다. 게다가 위 레벨은 화소 수 자체가 적다. 실제 구현은 축소 비율을 2~4로, 타일 크기를 8~32픽셀로 조절해 정확도와 속도를 맞춘다.

정렬은 보통 컬러 영상이 아니라 RAW에서 만든 흑백 축소 영상으로 한다. 베이어 2×2 묶음 하나를 평균해 한 화소로 만들면 디모자이킹 없이 휘도에 가까운 영상이 나온다. 이렇게 구한 변위를 RAW에 적용할 때는 2픽셀 단위로 옮긴다. 홀수 픽셀만큼 옮기면 R 화소 위에 G 화소가 겹쳐 CFA 위상이 깨지기 때문이다.

정수 픽셀보다 정밀한 변위가 필요하면 비용 함수의 최솟값 주변에 포물선을 맞춘다. 최소 위치의 비용 \(D_0\)와 양옆의 비용 \(D_{-1}\), \(D_{+1}\)로부터 서브픽셀 변위를 구한다.

$$\delta = \frac{D_{-1} - D_{+1}}{2\,(D_{-1} - 2D_{0} + D_{+1})},\qquad -0.5 \lt \delta \lt 0.5$$
예: \(D_{-1}\) = 120, \(D_0\) = 80, \(D_{+1}\) = 100이면 \(\delta = 20/(2\times 60) \approx +0.17\)픽셀. 오른쪽 비용이 더 작으므로 진짜 최솟값은 오른쪽으로 조금 치우쳐 있다. 이 서브픽셀 변위는 6절의 초해상도에서 꼭 필요하다.
정렬이 실패하는 곳

블록 매칭은 타일 안에 무늬가 있어야 동작한다. 맑은 하늘이나 흰 벽처럼 무늬가 없는 타일에서는 모든 후보의 비용이 비슷해 노이즈가 결과를 정한다. 수평선이나 전깃줄처럼 한 방향의 가장자리만 있는 타일은 그 방향을 따라 미끄러져도 비용이 변하지 않는다(개구 문제, Aperture Problem). 반복 무늬는 한 주기 어긋난 곳에서도 잘 맞는다. 어두울수록 노이즈가 무늬를 덮어 실패가 늘어난다. 정렬은 틀릴 수 있다는 전제에서, 틀린 결과를 걸러 내는 일을 다음 단계인 병합이 맡는다.

강건 병합: 평균하되 의심하기

정렬이 완벽하고 장면이 멈춰 있다면 병합은 평균이면 된다. \(N\)장을 평균하면 노이즈 표준편차가 \(1/\sqrt{N}\)이 된다. 그런데 장면은 멈춰 있지 않다. 걷는 사람이 프레임마다 다른 위치에 있으면 평균한 결과에는 반투명한 사람이 여럿 겹쳐 보인다. 9장의 HDR 합성에서 본 고스트(Ghost)와 같은 현상이다.

강건 병합(Robust Merge)의 생각은 이렇다. 정렬한 프레임의 값이 기준 프레임과 노이즈로 설명되는 만큼만 다르면 같은 장면으로 보고 평균에 넣는다. 노이즈로 설명할 수 없을 만큼 다르면 다른 장면으로 보고 뺀다. 이를 부드러운 가중치로 쓴 것이 위너 필터 꼴의 병합이다.

$$\hat{x} = \frac{1}{N}\sum_{i=0}^{N-1}\Bigl[x_i + A_i\,(x_0 - x_i)\Bigr],\qquad A_i = \frac{d_i^{2}}{d_i^{2} + c\,\sigma^{2}},\quad d_i = x_0 - x_i$$
\(x_0\): 기준 프레임의 값, \(x_i\): 정렬한 \(i\)번째 프레임의 값, \(\sigma^2\): 그 밝기에서 예상되는 노이즈 분산, \(c\): 조절 상수. \(A_i\) = 0이면 \(x_i\)를 그대로 평균에 넣고, \(A_i\) = 1이면 \(x_i\)를 기준 프레임 값으로 바꿔 넣는다. 화소 하나의 차이는 정지 영역에서도 노이즈만큼 흔들리므로, 실제 구현은 \(d_i\)를 타일이나 이웃 화소에서 평균한 뒤 판단해 정지 영역의 \(A_i\)가 0에 가깝게 한다.
0246 프레임 간 차이 |d| / σ 01 A 차이가 노이즈 수준 A가 작음: 대부분 평균에 포함 노이즈가 1/√N로 줄어든다 차이가 노이즈보다 훨씬 큼 A ≈ 1: 기준 프레임 값으로 대체 고스트는 없지만 노이즈도 그대로 곡선은 c = 2일 때
그림 11-4. 병합 계수 \(A\). 차이가 작으면 믿고 섞고, 크면 기준 프레임으로 되돌린다. 문턱을 정하는 것은 센서의 노이즈 모델이다.

이 식의 요점은 \(\sigma^2\)을 센서의 노이즈 모델에서 가져온다는 것이다. 전자 단위로 \(\sigma^2 = x + \sigma_r^2\), 곧 샷 노이즈와 읽기 노이즈의 합이다(7장). 밝은 영역은 샷 노이즈가 크므로 문턱이 높고, 어두운 영역은 문턱이 낮다. 감마나 톤 매핑을 거친 영상에서는 이 관계가 깨지므로 병합은 선형 RAW에서 한다. 센서의 변환 이득과 읽기 노이즈를 미리 정확히 재 두어야 하는 이유이기도 하다(8장).

가중치가 균일하지 않으면 노이즈가 덜 줄어든다. 각 프레임에 실제로 걸린 가중치를 \(w_i\)(합이 1)라 하면 병합 결과의 노이즈 분산과 유효 프레임 수는 다음과 같다.

$$\sigma_{\text{merged}}^{2} = \sigma^{2}\sum_i w_i^{2},\qquad N_{\text{eff}} = \frac{1}{\sum_i w_i^{2}}$$
모두 같은 가중치 \(1/N\)이면 \(N_{\text{eff}} = N\). 기준 프레임만 쓰면 \(N_{\text{eff}} = 1\). 8장 가운데 4장이 거절된 화소에서는 그 몫을 기준 프레임이 떠안아 가중치가 기준 5/8, 나머지 3장이 1/8씩이 된다. \(N_{\text{eff}} = 64/28 \approx 2.3\)이므로 9 dB 대신 3.6 dB만 얻는다.

그래서 병합한 사진은 화소마다 노이즈가 다르다. 멈춘 배경은 깨끗하고, 움직인 사람의 윤곽은 한 장짜리 노이즈를 그대로 가진다. 뒤따르는 공간 노이즈 저감은 이 유효 프레임 수 지도를 받아 움직인 영역을 더 세게 처리한다.

SIMULATOR

타일 정렬과 고스트

정지 영역 오차—
노이즈 개선—
움직임 영역 오차—
평균 유효 프레임 수—
왼쪽 위: 기준 프레임 한 장. 오른쪽 위: 병합 결과. 왼쪽 아래: 마지막 프레임과 타일별로 추정한 변위(노란 선). 오른쪽 아래: 화소별 유효 프레임 수(빨강 = 1장, 초록 = N장 전부). 모델: 프레임마다 ±4픽셀의 무작위 손떨림, 16×16 타일, ±5픽셀 블록 매칭, 노이즈는 밝기와 무관한 가우시안(최대 밝기 대비 %), 강건 병합의 차이 d는 3×3 이웃 평균을 쓰고 c = 2, 오차는 노이즈 없는 기준 장면과의 rms 차이. 해볼 것: ① 정렬과 강건 병합을 모두 끄면 배경이 흐려지고 원이 여러 개로 번진다. ② 정렬만 켜면 배경은 선명해지지만 원이 지나간 자리에 고스트가 남는다. ③ 강건 병합까지 켜면 고스트가 사라지고, 유효 프레임 수 지도에서 원이 지나간 길이 빨갛게 드러난다. 그 자리는 노이즈가 줄지 않았다. ④ 정렬을 끄고 강건 병합만 켜면 가장자리마다 거절되어 선명하지만 노이즈가 많이 남는다. ⑤ 노이즈를 20 % 이상으로 올리면 움직임과 노이즈를 구별하기 어려워져 고스트가 다시 샌다.
주파수 영역에서 타일 단위로

위 식은 화소 하나에 대해 썼지만, 실제 구현은 타일을 2차원 푸리에 변환한 뒤 공간 주파수 성분마다 같은 식을 적용하는 경우가 많다. 정렬이 조금 어긋나면 높은 주파수 성분만 크게 달라지고 낮은 주파수 성분은 비슷하다. 주파수별로 판단하면 어긋난 프레임에서도 낮은 주파수의 노이즈 저감은 건질 수 있다. 타일은 절반씩 겹치게 놓고 부드러운 창 함수를 곱해 더하므로 타일 경계가 보이지 않는다.

야간 모드: 얼마나 길게, 몇 장을

야간 모드는 버스트 병합을 수 초 길이로 늘린 것이다. 원리는 같고, 달라지는 것은 촬영 계획이다. 프레임 한 장의 노출을 길게 잡으면 읽기 노이즈 페널티가 줄지만 블러가 늘어난다. 짧게 잡으면 선명하지만 프레임이 많아져 페널티와 처리량이 늘고, 프레임당 신호가 작아 정렬도 어려워진다. 이 균형점을 장면마다 정하는 과정이 모션 미터링(Motion Metering)이다. 밝기를 재는 측광에 견주어 붙인 이름이다.

움직임 측정광류 + 자이로 상의 속도 vpx/s 프레임 노출t = b_max / v 프레임 수N = T_total / t 손에 들고, 장면도 움직임 → 짧은 노출, 많은 프레임 손에 들고, 장면은 정지 → 중간 노출, OIS가 허용하는 만큼 삼각대 감지 → 긴 노출, 적은 프레임 (읽기 노이즈 페널티 최소)
그림 11-5. 모션 미터링. 셔터를 누르기 전 프리뷰 프레임 사이의 화소 이동(광류)과 자이로 신호로 상의 속도를 재고, 허용할 블러에서 프레임 노출을 거꾸로 계산한다.

상이 센서 위에서 흐르는 속도를 \(v\)(픽셀/초), 허용할 블러를 \(b_{\max}\)(픽셀)라 하면 프레임 노출의 상한은 다음과 같다.

$$t_{\text{frame}} \le \frac{b_{\max}}{v} = \frac{b_{\max}\,p}{\omega f},\qquad N = \frac{T_{\text{total}}}{t_{\text{frame}}}$$
\(T_{\text{total}}\): 사용자가 기다려 줄 총 촬영 시간. \(v\)는 손떨림 성분(\(\omega f/p\))과 피사체가 화면에서 움직이는 속도 가운데 큰 쪽으로 정한다.
상황 (예시 계산)상의 속도 \(v\)프레임 노출 (\(b_{\max}\) = 1 px)2초 동안의 프레임 수
손에 듦, 손떨림 보정 없음 (0.5°/s)52 px/s약 19 ms버퍼 한도까지 (예: 15장, 0.3초)
손에 듦, OIS로 떨림이 1/8로 줄어듦6.5 px/s약 150 ms13장
삼각대 (잔여 떨림 거의 없음)1 px/s 미만1초 이상1~2장, 총 시간을 수십 초로 늘림
삼각대, 사람이 화면 안에서 걸음사람 영역만 수십 px/s사람에 맞춰 짧게많은 프레임 + 사람 영역은 강건 병합

표의 \(f/p\)는 6000으로 두었다. 세 번째 줄이 삼각대 감지다. 자이로 신호가 사실상 0이면 기기가 고정되어 있다고 판단하고 프레임 노출을 초 단위로 늘린다. 총 시간이 길어지면 어두운 별까지 찍을 수 있다. 다만 노출이 길어지면 7장에서 본 암전류와 핫 픽셀이 다시 문제가 된다. 긴 노출 프레임에서는 미리 재 둔 암전류 지도를 빼거나, 프레임 사이에 값이 변하지 않는 밝은 점을 결함으로 판단해 지운다. 수십 초가 넘으면 지구 자전으로 별이 흐르므로 하늘과 땅을 따로 정렬하기도 한다.

야간 모드에는 노이즈 말고도 풀어야 할 문제가 있다.

프레임 노출을 늘리는 것이 먼저다

같은 총 시간이라면 프레임 수를 늘리는 것보다 프레임 노출을 늘리는 편이 SNR에 유리하다. 2절의 식에서 페널티는 \(N\sigma_r^2\)으로 들어오기 때문이다. 총 신호 \(S\) = 32 e⁻, \(\sigma_r\) = 2 e⁻일 때 16장으로 나누면 SNR은 \(32/\sqrt{32+64}\) = 3.3, 4장으로 나누면 \(32/\sqrt{32+16}\) = 4.6이다. 3 dB 차이다. 그래서 OIS의 성능과 삼각대 감지는 야간 화질에 직접 반영된다.

멀티프레임 초해상도: 손떨림을 이용하기

지금까지 손떨림은 없애야 할 방해였다. 이 절에서는 손떨림이 정보의 원천이 된다. 4장과 5장에서 보았듯이 피치 \(p\)로 표본화하는 센서는 나이퀴스트 주파수 \(1/(2p)\)보다 촘촘한 무늬를 제대로 담지 못하고, 그 무늬는 더 성긴 가짜 무늬로 접혀 들어온다(에일리어싱). 베이어 센서에서는 사정이 더 나쁘다. R과 B 화소는 2픽셀에 하나씩이므로 나이퀴스트 주파수가 \(1/(4p)\)다. 빈자리는 디모자이킹이 주변 값으로 추정해 채운다.

한 장으로는 접힌 성분과 진짜 성분을 구별할 수 없다. 그런데 표본 위치를 반 픽셀 옮겨 한 장을 더 찍으면, 진짜 무늬는 그대로 있고 접혀 들어온 성분만 위상이 다르게 나타난다. 표본 위치가 서로 다른 프레임이 여러 장 있으면 더 촘촘한 격자로 표본화한 것과 같다. 손에 든 카메라는 프레임마다 무작위로 서브픽셀만큼 어긋나므로 이 조건이 저절로 만들어진다.

센서 격자 (피치 p) 프레임마다 표본 위치가 다르다 서브픽셀 정렬 + 커널 병합 출력 격자 (피치 p/2) 각 격자점 주변의 표본으로 값을 추정 프레임 1234
그림 11-6. 멀티프레임 초해상도. 네 프레임의 표본을 기준 프레임 좌표로 옮기면 한 픽셀 안에 표본이 여러 개 놓인다. 출력 격자의 각 점은 가까운 표본들의 가중 평균으로 정한다.

이 방식은 디모자이킹과도 연결된다. 각 프레임의 R, G, B 표본을 색별로 따로 출력 격자에 쌓으면, 프레임이 충분할 때 모든 출력 화소 근처에 실제로 측정한 R, G, B 표본이 놓인다. 이웃 색에서 추정할 필요가 없어진다. 디모자이킹을 병합이 대신하는 셈이고, 4장에서 본 지퍼나 위색 아티팩트가 원리적으로 줄어든다. 표본을 쌓을 때는 4절과 같은 강건성 가중치를 써서 움직인 영역의 표본을 뺀다. 그런 영역은 기준 프레임 한 장의 디모자이킹 결과로 되돌아간다.

그러면 프레임을 많이 모을수록 해상도가 끝없이 올라가는가? 그렇지 않다. 표본화 전에 이미 사라진 정보는 표본을 아무리 촘촘히 모아도 돌아오지 않는다. 두 가지가 한계를 정한다.

$$\mathrm{MTF}_{\text{pixel}}(\nu) = \left|\frac{\sin(\pi a \nu)}{\pi a \nu}\right|,\qquad \nu_{c} = \frac{1}{\lambda F}$$
\(a\): 픽셀 개구의 폭(마이크로렌즈가 빛을 모으는 폭, 채움률 100 %면 \(a = p\)), \(\nu\): 공간 주파수, \(\nu_c\): 회절로 정해지는 렌즈의 차단 주파수(5장).

그러므로 스마트폰에서 멀티프레임 초해상도의 실질 이득은 "화소 수의 몇 배"가 아니다. 베이어 표본화와 디모자이킹으로 잃었던 해상도를 되찾고, 에일리어싱으로 생긴 가짜 무늬를 지우고, 디지털 줌으로 잘라 낸 영상의 선명도를 1.5~2배 범위에서 지키는 정도다. 남은 4~5 % 수준의 대비를 샤프닝으로 끌어올리면 노이즈도 함께 커지므로, 프레임 수가 충분해 노이즈가 낮을 때만 의미가 있다.

SIMULATOR

멀티프레임 초해상도 (1차원 줄무늬)

프레임 간 시프트
나이퀴스트 대비—
1장에 보이는 가짜 주파수—
픽셀 개구 MTF—
복원 대비 (1장)—
복원 대비 (N장)—
위의 띠 셋: 원본 줄무늬, 한 장을 보간한 결과, N장을 병합한 결과. 아래 그래프: 원본(가는 선), 한 장의 표본과 선형 보간(주황 점선), 모든 프레임의 표본(작은 점), 병합 결과(굵은 선). 주파수 단위는 주기/픽셀이고 나이퀴스트는 0.5다. 병합은 가우시안 커널 가중 평균이며 출력 격자는 픽셀의 1/8이다. 복원 대비는 결과에 들어 있는 원래 주파수 성분의 진폭을 원본과 비교한 값이다. 해볼 것: ① 기본값(0.7 주기/픽셀)에서 한 장은 0.3 주기/픽셀의 성긴 가짜 줄무늬를 보여 준다. 8장 병합은 원래 간격을 되찾는다(대비는 픽셀 개구와 병합 커널 때문에 원본보다 낮다). ② 시프트를 '없음'(삼각대)으로 바꾸면 프레임을 아무리 늘려도 가짜 줄무늬가 그대로다. 노이즈만 줄어든다. ③ 주파수를 0.95로 올리면 병합해도 대비가 거의 없다. 픽셀 개구가 이미 지웠기 때문이다. 개구 폭을 50 %로 줄이면 대비가 돌아온다(대신 실제 센서에서는 감도를 잃는다). ④ 프레임 수를 2~3장으로 줄이고 '새 손떨림'을 여러 번 눌러 보자. 시프트가 우연히 몰리면 복원이 불안정하다.
삼각대에서는 일부러 흔든다

시뮬레이터의 '없음'이 보여 주듯 표본 위치가 모두 같으면 초해상도는 불가능하다. 기기가 완전히 고정된 경우에는 OIS 구동기로 렌즈나 센서를 서브픽셀만큼 일부러 움직여 시프트를 만드는 방법이 쓰인다. 센서를 반 픽셀 또는 한 픽셀씩 정확히 옮기며 여러 장을 찍는 픽셀 시프트 촬영도 같은 원리이고, 이때는 시프트가 시뮬레이터의 '균등'에 해당한다.

합성 심도: 깊이를 재서 블러를 그린다

인물 사진에서 배경이 부드럽게 흐려지는 것은 렌즈의 얕은 심도 덕분이다. 5장에서 본 것처럼 초점이 맞지 않은 점은 센서 위에 착란원(Circle of Confusion)으로 퍼진다. 초점 거리 \(z_f\)에 맞춘 렌즈가 거리 \(z\)의 점을 찍을 때 착란원의 지름은 다음과 같다.

$$c \;\approx\; \frac{f^{2}}{F}\left|\frac{1}{z_f} - \frac{1}{z}\right| = f\,D\left|\frac{1}{z_f} - \frac{1}{z}\right|,\qquad D = \frac{f}{F}$$
\(f\): 초점거리, \(F\): F-넘버, \(D\): 조리개 지름. \(z_f \gg f\)일 때의 근사식이다.

1/1.3형 센서의 스마트폰(\(f\) = 6.8 mm, F1.8)으로 1.5 m 거리의 인물에 초점을 맞추면 무한대 배경의 착란원은 \(6.8^2/(1.8\times 1500)\) = 0.017 mm로 화면 폭 9.8 mm의 0.17 %다. 같은 화각의 풀프레임 카메라(\(f\) = 25 mm, F1.8)에서는 \(25^2/(1.8\times 1500)\) = 0.23 mm로 화면 폭 36 mm의 0.64 %다. 화면 대비 블러가 센서 크기 비(약 3.7배)만큼 차이 난다. 블러를 정하는 것은 F-넘버가 아니라 조리개의 실제 지름 \(D\)이고, 작은 카메라는 \(D\)가 작다.

광학으로 얻을 수 없는 블러를 계산으로 그려 넣는 기능이 합성 심도(Synthetic Depth of Field), 흔히 말하는 인물 모드다. 순서는 세 단계다. 깊이를 재고, 깊이에서 블러 크기를 계산하고, 그 크기로 흐린다.

시차에서 깊이를 P 기선 B z 가까울수록 두 영상에서 많이 어긋난다 깊이에서 블러를 센서 c 초점면 먼 점 D = f/F 초점면에서 멀수록 착란원 c가 커진다
그림 11-7. 왼쪽: 떨어진 두 시점에서 본 같은 점은 영상 안의 위치가 다르다. 이 차이(시차)가 깊이를 알려 준다. 오른쪽: 초점면보다 먼 점의 빛은 센서 앞에서 모였다가 다시 퍼져 지름 \(c\)의 원이 된다.

깊이 재기. 스마트폰이 쓰는 시점 차이는 두 가지다. 하나는 나란히 놓인 두 카메라이고, 다른 하나는 12장의 듀얼 픽셀이다. 듀얼 픽셀의 왼쪽·오른쪽 포토다이오드는 렌즈 조리개의 왼쪽 절반과 오른쪽 절반을 통해 장면을 본다. 초점을 맞추는 데 쓰던 그 위상차가 곧 화소별 깊이 정보다. 두 시점 사이의 거리인 기선(Baseline)을 \(B\)라 하면 시차(Disparity)는 다음과 같다.

$$d = \frac{f B}{p}\left(\frac{1}{z_f} - \frac{1}{z}\right)\ \text{[pixel]},\qquad \delta z \approx \frac{z^{2}\,p}{f B}\,\delta d$$
듀얼 픽셀은 초점면(\(z_f\))에서 시차가 0이다. 나란한 두 카메라는 \(1/z_f\) 항이 없는 \(d = fB/(pz)\)다. \(\delta d\): 시차 측정 오차, \(\delta z\): 그에 따른 깊이 오차.
방식 (\(f/p\) = 6000 가정)기선 \(B\)1.5 m 초점에서 3 m 물체의 시차2 m에서 깊이 오차 (\(\delta d\) = 0.25 px)특징
듀얼 픽셀약 1 mm (조리개 지름의 절반 이하)2 px약 17 cm카메라 하나로 가능, 가려짐이 적음, 먼 거리에서 부정확
듀얼 카메라약 10 mm20 px (절대 시차)약 1.7 cm정밀하지만 한쪽에서만 보이는 영역이 생김, 두 모듈의 보정 필요

듀얼 픽셀의 시차는 몇 픽셀에 불과하므로 3절의 서브픽셀 정렬과 같은 기법으로 재고, 버스트의 여러 프레임을 모아 노이즈를 줄인다. 무늬가 없는 영역이나 기선과 나란한 가장자리에서는 시차를 잴 수 없다. 이런 곳은 사람 영역을 구분하는 분할 신경망과 한 장의 영상에서 깊이를 추정하는 학습 모델로 메운다. ToF 센서가 있으면 그 깊이도 함께 쓴다.

블러 그리기. 착란원 식과 시차 식을 나란히 놓으면 둘 다 \(|1/z_f - 1/z|\)에 비례한다. 듀얼 픽셀에서는 \(c/(d\,p) = D/B\)로 일정하다. 깊이를 미터 단위로 정확히 알 필요 없이 시차에 상수를 곱하면 블러 지름이 된다. 그 상수가 가상 조리개의 크기다. 렌더링에서 지켜야 할 것은 세 가지다.

SIMULATOR

깊이 맵 기반 합성 보케

깊이 맵
렌더링
보기
배경(8 m) 착란원—
표지판(3 m) 착란원—
인물(1.5 m) 착란원—
듀얼 픽셀 시차 (배경)—
기준 렌더 대비 오차—
장면: 1.5 m의 인물, 3 m의 표지판, 8 m의 밤거리(점광원 포함). 원본은 작은 센서로 찍어 전부 선명하다. 착란원은 풀프레임 85 mm 렌즈를 흉내 낸 값(화면 폭 대비 %)이고, 듀얼 픽셀 시차는 \(f/p\) = 6000, 기선 1 mm로 계산했다. 오차는 정확한 깊이 맵과 층별 합성으로 만든 기준 결과와의 평균 차이다. 해볼 것: ① 조리개를 F1.4로 열면 배경의 불빛이 원판으로 퍼진다. ② 초점 거리를 8 m로 옮기면 배경이 선명해지고 인물이 흐려진다. 흐려진 인물의 윤곽이 배경 위로 반투명하게 번지는지 보자. ③ 렌더링을 '단순 평균'으로 바꾸면 인물 둘레에 인물 색이 번진 띠가 생기고, 초점을 배경에 두면 흐린 인물의 윤곽이 칼로 자른 듯 끊긴다. ④ 깊이 맵을 '가장자리 오차'로 바꾸면 머리카락 가닥이 배경과 함께 흐려져 사라지고, 인물 한쪽 옆에 흐려지지 않은 배경 띠가 남는다. '깊이 맵' 보기로 원인을 확인하자.
합성 심도가 틀리는 곳

아티팩트는 거의 전부 깊이 맵의 가장자리에서 나온다. 머리카락, 안경테, 손가락 사이, 자전거 바큇살처럼 깊이 맵의 해상도보다 가는 구조는 배경으로 분류되어 함께 흐려진다. 유리잔과 같은 투명체나 거울 반사는 한 화소에 깊이가 둘이어서 깊이 맵 하나로 표현할 수 없다. 전경과 배경의 색이 비슷하면 시차 자체가 잘 재지지 않는다. 그리고 진짜 큰 렌즈는 조리개의 가장자리를 통해 전경 물체의 뒤쪽을 조금 돌아서 본다. 한 시점에서 찍은 영상에는 그 가려진 배경이 없으므로 주변 화소로 지어내 채울 수밖에 없다.

학습 기반 처리와 환각

앞 절까지의 기법은 모두 측정한 광자를 다시 배열하는 방법이었다. 결과의 모든 값은 어느 프레임의 어느 화소에서 왔는지 추적할 수 있다. 신경망을 쓰는 처리는 정보의 출처가 하나 더 있다. 학습 데이터에서 얻은 사전 지식(Prior)이다.

문제는 마지막 문장들의 "그럴듯하게"다. 6절에서 보았듯 차단 주파수 위의 정보는 센서에 도달하지 않았다. 신경망이 거기에 그려 넣는 디테일은 측정이 아니라 비슷한 장면에서 통계적으로 가장 흔했던 모양이다. 이것을 환각(Hallucination)이라 부른다. 잔디나 머리카락의 결처럼 정확한 모양이 중요하지 않은 질감에서는 문제가 되지 않고 오히려 보기 좋다. 틀리면 안 되는 내용에서는 위험하다.

고전적 다중 프레임 처리학습 기반 처리
정보의 출처이번 촬영에서 측정한 광자측정한 광자 + 학습 데이터의 통계
정보가 부족할 때노이즈가 남거나 흐려진다 (부족함이 눈에 보인다)그럴듯한 내용으로 채운다 (부족함이 보이지 않는다)
전형적인 실패고스트, 정렬 오류, 남은 노이즈없던 무늬, 바뀐 글자나 숫자, 지나치게 매끈한 피부, 학습 분포 밖 장면의 오류
결과의 검증노이즈 모델로 불확실성을 계산할 수 있다입력만으로는 어느 부분이 추정인지 알기 어렵다
RAW는 여전히 측정값인가

전통적으로 RAW는 센서가 한 번의 노출에서 읽은 값 그대로였다. 화소값과 광자 수 사이에 선형 관계가 있고 노이즈는 샷 노이즈와 읽기 노이즈의 합이라는 7장의 모델을 그대로 적용할 수 있었다. 여러 장을 병합해 만든 RAW는 선형성은 유지하지만 4절에서 본 대로 화소마다 유효 프레임 수가 달라 노이즈가 영역마다 다르다. 여기에 학습 기반 처리가 더해지면 화소값은 더 이상 그 위치에 도달한 광자 수의 측정값이라 할 수 없다. 사진으로서는 더 좋아졌지만, 밝기를 재는 측광이나 과학·의료·법적 증거처럼 화소값을 측정으로 다루는 용도에는 쓸 수 없게 된다. 어떤 처리를 거쳤는지 기록해 두는 일과, 촬영 장치가 영상의 출처와 편집 이력을 서명해 남기는 표준이 그래서 중요해지고 있다.

한계와 비용

계산으로 얻은 화질에는 값이 있다. 메모리, 시간, 전력, 그리고 움직이는 장면에서의 실패다.

메모리. RAW 한 화소를 16비트로 담으면 1200만 화소 프레임 한 장이 24 MB다. 15장 버스트는 360 MB이고, 여기에 정렬용 피라미드와 중간 결과가 더해진다. 5000만 화소 RAW는 한 장이 100 MB다. 고화소 센서가 평소에는 화소를 묶어 1200만 화소로 내보내는 데에는 감도(7장, 12장)뿐 아니라 이 버스트 처리량도 이유로 작용한다.

시간과 전력. 버스트 병합과 그 뒤의 처리는 수백 ms에서 수 초가 걸린다. 사용자는 기다리지 않으므로 촬영 직후에는 빠른 경로로 만든 영상을 먼저 보여 주고, 본 처리는 뒤에서 끝낸 뒤 바꿔 넣는다. 연속으로 찍으면 처리가 밀린다. 프로세서가 내는 열은 기기 온도를 올리고, 온도가 오르면 암전류가 늘어나므로 화질에도 되돌아온다.

움직이는 피사체. 4절에서 본 대로 움직인 영역은 기준 프레임 한 장으로 되돌아간다. 아이나 반려동물, 스포츠 장면에서는 화면의 중요한 부분이 바로 그 영역이다. 배경은 깨끗한데 주인공만 거칠고, 그 한 장의 노출이 길었다면 모션 블러까지 있다. 여러 장을 합치는 방법은 근본적으로 정지한 장면에서 시간을 광자로 바꾸는 기술이다. 움직임이 클수록 큰 센서와 밝은 렌즈를 대신할 수 없다.

동영상. 동영상에서는 제약이 한꺼번에 조여진다.

사진동영상 (4K 30 fps)
출력 한 장당 처리 시간수백 ms ~ 수 초33 ms 이내, 계속
처리량버스트 한 번약 830만 화소 × 30 = 초당 약 2.5억 화소
쓸 수 있는 프레임기준 프레임 앞의 프레임 전부 (야간 모드처럼 셔터 뒤에 찍으면 뒤 프레임도)과거 프레임뿐 (미래 프레임을 쓰면 지연이 생김)
프레임 노출 상한모션 미터링이 정함프레임 주기(33 ms) 이하
추가 요구없음시간적 일관성: 프레임마다 결과가 달라지면 깜박임으로 보임

그래서 동영상의 시간축 노이즈 저감은 버스트를 쌓아 두지 않고 직전 출력 한 장만 기억하는 순환 필터를 쓴다. 직전 출력을 현재 프레임에 맞게 정렬한 뒤 일정 비율로 섞는다.

$$y_t = \alpha\,x_t + (1-\alpha)\,\tilde{y}_{t-1},\qquad \frac{\sigma_y^{2}}{\sigma_x^{2}} = \frac{\alpha}{2-\alpha},\qquad N_{\text{eff}} = \frac{2-\alpha}{\alpha}$$
\(x_t\): 현재 프레임, \(\tilde{y}_{t-1}\): 움직임 보상한 직전 출력, \(\alpha\): 현재 프레임의 비중. \(\alpha\) = 0.2이면 9장을 평균한 것과 같은 노이즈 저감을 메모리 한 장으로 얻는다. 움직임이 감지된 화소에서는 \(\alpha\)를 1에 가깝게 올리는데, 이것이 4절 강건 병합의 동영상판이다. \(\alpha\)가 작을수록 움직이는 물체 뒤로 꼬리가 길게 남는다.

전자식 손떨림 보정은 3절의 전역 정렬을 프레임마다 적용하고 가장자리를 잘라 내는 방식이어서 화각을 잃는다. 노출이 프레임 주기를 넘을 수 없으므로 어두운 곳의 동영상은 사진 야간 모드만큼 좋아질 수 없다. 동영상 화질에서 센서 크기와 픽셀 감도의 비중이 사진보다 큰 이유다.

센서가 계산을 돕는 방향

이 장의 기법들은 센서 설계에 요구를 되돌려 보낸다. 읽기 노이즈가 낮을수록 버스트를 잘게 나눌 수 있다. 읽기 속도가 빠를수록 프레임 사이의 움직임과 롤링 셔터 왜곡이 줄어 정렬이 쉬워진다. 적층 구조로 센서 안에 메모리와 처리 회로를 넣으면 버스트를 센서 안에서 모을 수 있다. 듀얼 픽셀과 쿼드 PD는 초점뿐 아니라 깊이를 준다. 이런 구조는 12장 최신 센서 기술에서 다룬다.

핵심 정리

  1. 같은 화각·F-넘버·노출 시간에서 모이는 광자 수는 센서 면적에 비례한다. 작은 센서가 그 차이를 메울 수단은 시간이고, 손떨림 때문에 그 시간은 여러 장으로 나누어 써야 한다.
  2. 총 신호 \(S\)를 \(N\)장으로 나누면 \(\mathrm{SNR} = S/\sqrt{S + N\sigma_r^2}\). 프레임당 신호가 \(\sigma_r^2\)의 10배 이상이면 긴 노출 한 장과 거의 같고, 짧은 노출 한 장에 비하면 언제나 \(\sqrt{N}\)배다.
  3. ZSL 링 버퍼는 셔터를 누르기 전의 RAW를 담아 두어 셔터 지연 없이 버스트를 제공한다.
  4. 프레임 정렬은 타일 단위의 블록 매칭을 영상 피라미드 위에서 거친 단계부터 수행한다. 무늬가 없거나 한 방향 가장자리만 있는 타일에서는 실패할 수 있다.
  5. 강건 병합은 프레임 간 차이를 센서 노이즈 모델과 비교해 가중치를 정한다. 움직인 영역은 고스트 없이 남지만 노이즈가 줄지 않아, 병합 결과는 화소마다 유효 프레임 수가 다르다.
  6. 야간 모드는 모션 미터링으로 프레임 노출 \(t = b_{\max}/v\)를 정한다. 삼각대가 감지되면 프레임 노출을 늘려 읽기 노이즈 페널티를 줄인다.
  7. 멀티프레임 초해상도는 손떨림이 만든 서브픽셀 시프트로 에일리어싱을 풀고 디모자이킹을 대신한다. 픽셀 개구와 렌즈 MTF가 이미 지운 주파수는 되살릴 수 없고, 시프트가 없으면 노이즈만 줄어든다.
  8. 합성 심도는 시차로 깊이를 재고(\(d \propto fB/p\)), 착란원 \(c = fD\,|1/z_f - 1/z|\)에 맞춰 원판 커널로 층별로 흐린다. 아티팩트는 깊이 맵의 가장자리 오류에서 나온다.
  9. 학습 기반 처리는 측정하지 못한 정보를 사전 지식으로 채운다. 보기에는 좋지만 환각의 위험이 있고, 화소값을 측정으로 다루는 용도에는 맞지 않는다.
  10. 비용은 메모리·시간·전력이며, 움직이는 피사체와 동영상에서는 여러 장을 쓰는 이득이 크게 줄어든다. 동영상은 순환 필터로 \(N_{\text{eff}} = (2-\alpha)/\alpha\)의 저감을 얻는다.

확인 퀴즈

Q1. 총 신호가 100 e⁻, 읽기 노이즈가 3 e⁻인 조건에서 노출을 4장으로 나누어 찍어 병합했다. 긴 노출 한 장에 비해 SNR은 어떻게 되는가?

긴 노출: \(100/\sqrt{100+9}\) = 9.58. 4장 병합: \(100/\sqrt{100+36}\) = 8.57. 비는 1.12배, 약 1 dB다. 광자 수는 같고 읽기 노이즈 분산만 4번 더해진다. 프레임당 신호 25 e⁻가 \(\sigma_r^2\) = 9의 약 3배에 그쳐 페널티가 눈에 띈다.

Q2. 프레임 정렬에서 영상 피라미드를 쓰는 주된 이유는?

±60픽셀을 한 번에 뒤지면 후보가 14,641개다. 축소 비율 2의 4개 레벨에서 각각 ±4픽셀만 탐색하면 후보는 324개로 같은 범위를 덮는다. 위 레벨의 결과가 아래 레벨의 초기값이 된다.

Q3. 강건 병합을 거친 야간 사진에서, 걸어가던 사람의 영역은 정지한 배경과 비교해 어떻게 보이는가?

움직인 영역은 다른 프레임과의 차이가 노이즈 수준을 넘으므로 가중치가 낮아져 기준 프레임 값에 가깝게 남는다. 고스트는 막지만 유효 프레임 수가 1에 가까워 노이즈가 줄지 않는다. 여러 번 겹쳐 보이는 것은 강건 병합이 없을 때의 결과다.

Q4. 삼각대에 완전히 고정한 카메라로 똑같은 위치에서 16장을 찍어 초해상도 병합을 시도했다. 나이퀴스트를 넘는 줄무늬는 어떻게 되는가?

모든 프레임의 표본 위치가 같으면 에일리어싱된 성분의 위상도 모두 같아 구별할 정보가 없다. 평균은 노이즈만 줄인다. 초해상도에는 프레임 사이의 서브픽셀 시프트가 필요하고, 고정된 기기에서는 OIS로 일부러 시프트를 만든다.

Q5. 같은 시차 측정 오차에서, 기선 10 mm의 듀얼 카메라는 기선 1 mm의 듀얼 픽셀에 비해 깊이 오차가 어떻게 되는가? (나머지 조건은 같다)

\(\delta z \approx z^2 p\,\delta d/(fB)\)이므로 깊이 오차는 기선에 반비례한다. 기선이 10배면 오차는 1/10이다. 깊이 오차가 거리의 제곱에 비례한다는 점도 함께 기억하자. 먼 배경일수록 깊이를 구분하기 어렵다.

Q6. 동영상의 순환 시간축 필터 \(y_t = \alpha x_t + (1-\alpha)\tilde{y}_{t-1}\)에서 \(\alpha\) = 0.25로 두었다. 정지한 영역의 노이즈 저감은 프레임 몇 장을 평균한 것과 같은가?

\(N_{\text{eff}} = (2-\alpha)/\alpha = 1.75/0.25 = 7\). 노이즈 분산은 1/7, 표준편차는 약 0.38배(8.5 dB 개선)다. \(\alpha\)를 줄이면 더 깨끗해지지만 움직이는 물체의 잔상이 길어진다.