밤에 스마트폰 카메라를 야간 모드로 두고 셔터를 누르면, 화면에 숫자가 뜨거나 촬영이 끝날 때까지 가만히 있으라는 안내가 나온다. 구글이 공개한 방식으로는, 그 몇 초 동안 폰이 사진을 한 장이 아니라 여러 장 찍고 그 사진들을 서로 맞춰 한 장으로 겹친다. 빛은 장수만큼 쌓이지만, 장마다 제멋대로 낀 노이즈는 겹칠수록 서로 메워져 줄어든다. 그래서 한 장을 같은 밝기로 끌어올린 사진보다 훨씬 깨끗하다. 이렇게 여러 장을 맞춰 겹쳐 한 장을 만드는 방식을 멀티 프레임 합성(multi-frame processing)이라고 한다.
밤에 야간 모드로 셔터를 누르면 화면에 숫자가 뜨거나, 촬영이 끝날 때까지 폰을 가만히 들고 있으라는 안내가 나온다. 사진은 그 몇 초가 지나서야 저장된다. 야간 모드는 눈으로도 잘 안 보이던 어두운 장면을 어떻게 그렇게 밝게 찍을까?
구글이 2016~2021년에 공개한 방식으로는, 야간 모드는 셔터를 누른 뒤 몇 초 동안 사진을 여러 장 찍어 서로 맞춰 겹친다. 그러면 빛은 쌓이고 장마다 다르게 낀 노이즈는 줄어들어서, 한 장을 같은 밝기로 끌어올린 것보다 훨씬 깨끗한 한 장이 된다. 밝음의 재료는 필터가 아니라 빛을 모은 그 몇 초다.
왜 한 장을 오래 찍지 않을까
사진을 깨끗하게 만드는 가장 단순한 방법은 셔터를 오래 열어 빛을 많이 모으는 것이다. 구글 픽셀의 야간 모드(Night Sight)를 소개한 2018년 글도 「taking a longer exposure produces a cleaner picture」(노출을 길게 할수록 사진이 깨끗해진다)라고 적었다. 같은 글은 이 깨끗함을 신호 대 노이즈 비(SNR)로 잰다. 신호 대 노이즈 비는 사진 속 장면이 노이즈보다 얼마나 또렷하게 드러나는가의 비로, 클수록 깨끗한 사진이다.
그런데 어두운 곳에서는 손이 떨리고, 찍는 대상도 가만히 있지 않는다. 같은 글은 어두운 곳에서 좋은 사진이 나올 만큼 오래 가만히 있기는 어렵고, 찍는 대상도 아마 가만히 있지 않을 것이라고 적었다. 아주 긴 노출이 어려운 까닭으로는 바람이 불고, 나무가 흔들리고, 별과 구름이 움직인다는 점도 들었다. 셔터를 오래 열어 두면 그동안의 흔들림이 사진에 그대로 번진다.
셔터를 누른 뒤에 가만히 있으라는 안내도 같은 데서 나온다. 2018년 글에 따르면 픽셀의 보통 사진 모드는 셔터를 누르기 전부터 화면에 띄워 보여 주던 장면들을 사진에 쓴다. 그래서 화면이 끊기지 않도록 한 장의 노출을 아주 짧게 묶어 둔다. 야간 모드는 셔터를 누른 뒤에야 찍기 시작하고, 그 대신 더 긴 노출을 쓸 수 있다. 셔터 뒤에 잠깐 가만히 있어야 하는 것은 그 때문이다.
그래도 구글은 한 장의 노출을 무작정 늘리지 않고 짧게 끊었다. 손이 떨리고 대상이 움직여도 사진이 또렷해야 해서라고 같은 글은 설명한다. 이렇게 짧게 찍은 여러 장을 맞춰 겹쳐 한 장을 만드는 방식이 멀티 프레임 합성이고, 구글 문헌은 이것을 burst photography(연속 촬영 사진)라고 부른다. 구글이 폰 카메라의 이 처리에 붙인 이름이 HDR+다. HDR+를 다룬 2016년 논문도 일부러 어둡게 찍은 사진 여러 장을 겹쳐 노이즈를 메운다고 적었다.
「맞춰 겹친다」에서 맞춘다는 것은 장마다 조금씩 어긋난 사진을 같은 자리에 포개는 일이다. 손이 떨리면 장마다 장면이 놓인 자리가 조금씩 달라지기 때문이다. 잘 맞는 자리를 찾지 못한 조각은 버린다. 이 단계가 있어서 손에 들고 찍은 여러 장도 한 장으로 포갤 수 있다.
사진의 노이즈는 어디서 생길까
사진의 노이즈는 두 군데에서 온다. 첫째는 샷 노이즈(shot noise)다. 렌즈로 들어오는 빛 알갱이 수 자체가 들쭉날쭉해서 생기는 노이즈로, 모은 빛의 총량에만 달려 있다. 2021년 구글 글은 노출 E초짜리 N장을 더한 것과 N × E초짜리 한 장의 샷 노이즈가 같다고 적었다.
둘째는 읽기 노이즈(read noise)다. 센서가 빛을 숫자로 읽어 낼 때마다 한 번씩 섞이는 노이즈로, 빛의 양과 상관없이 찍은 장수만큼 붙는다. 그래서 같은 시간 동안 빛을 모은다면, 한 장을 여러 장으로 나눠 찍어도 샷 노이즈는 그대로이고 늘어나는 것은 읽기 노이즈뿐이다.
여러 장을 겹치면 왜 깨끗해질까
여러 장을 겹치면 장면의 빛은 장마다 같은 자리에 같은 만큼 쌓인다. 노이즈는 장마다 제멋대로 생긴다. 화소 하나를 놓고 보면, 같은 자리라도 어떤 장에서는 노이즈 때문에 조금 밝게, 다른 장에서는 조금 어둡게 찍힌다. 장면이 주는 밝기는 매번 같은 쪽으로 더해지지만, 노이즈가 보탠 몫은 위로도 아래로도 튀어서 더하는 동안 일부가 서로 메워진다. 그래서 깨끗함은 장수만큼 오르지는 않고, 장수의 제곱근 배로 오른다. 제곱근 배란 4장을 겹치면 2배, 16장을 겹치면 4배 깨끗해진다는 말이다.
이 글의 장난감 계산(노이즈 크기와 장면 밝기는 예시로 정한 값)에서 짧은 사진 15장을 겹치니 한 장보다 약 3.9배 깨끗했다. √15가 약 3.87이니 제곱근 배 그대로다. 15장은 2018년 픽셀 야간 모드가 손에 들고 찍을 때 쓰는 최대 장수다. 이 배수는 장면의 그늘에서도 밝은 곳에서도 같았다.
그림 1의 왼쪽 판은 짧게 찍은 한 장을 15배로 끌어올린 것이라, 장면과 함께 노이즈도 15배로 커졌다. 가운데 판은 짧은 사진 15장을 겹친 것이다. 지글거림이 눈에 띄게 걷혔다. 오른쪽 판은 15장을 찍는 데 든 시간 동안 셔터를 한 번 열어 둔 긴 한 장인데, 그늘에서는 이보다도 깨끗하다.
오른쪽 판이 더 깨끗한 까닭은 앞 절의 읽기 노이즈에 있다. 15장을 겹친 판에는 읽기 노이즈가 15번 붙었고, 긴 한 장에는 한 번만 붙었다. 2021년 구글 글도 여러 장을 찍으면 샷 노이즈의 영향은 줄지만 읽기 노이즈가 늘어서, 그냥 길게 찍는 것만큼 효율적이지는 않다고 적었다. 그 차이가 어디서 커지는지는 아래 아주 어두운 곳을 다루는 절에서 본다. 한 장을 오래 열어 둘 수 없는 폰은 그 효율을 내주는 대신, 흔들림 없이 빛을 여러 장에 나눠 모으는 셈이다.
야간 모드로 더 깨끗하게 찍으려면
찍는 사람이 할 일은 그 몇 초 동안 폰이 흔들림 없이 빛을 모으게 해 주는 것이다. 폰을 받치는 것이 먼저고, 찍을 장면에 빛이 조금은 있어야 한다. 구글과 애플의 안내문이 권하는 방법을 모으면 다섯 가지다.
- 폰을 벽이나 나무에 기대거나, 탁자나 돌 위에 올리거나, 삼각대에 고정한다.
- 셔터를 누른 뒤 촬영이 끝날 때까지 폰을 움직이지 않는다. 아이폰은 야간 모드 아이콘 옆의 숫자로 이번 촬영에 걸리는 시간을 알려 준다.
- 아이폰 화면에 십자선이 나타나면 십자선을 맞춘다. 십자선은 아이폰이 움직임을 감지했다는 표시다(iOS 14 이후).
- 완전히 깜깜한 곳은 피하고, 빛이 조금이라도 닿는 장면을 고른다.
- 아이폰에서는 Live Photo와 플래시를 끈다. 둘 중 하나라도 켜면 야간 모드가 꺼진다.
둘째 항목은 구글 픽셀 고객센터도 같은 내용으로 안내한다. 사진이 찍히는 몇 초 동안 가만히 있으라는 것이다. 첫째 항목의 벽·나무·탁자·돌은 구글의 2018년 글에서, 삼각대는 애플 지원 문서에서 왔다. 넷째 항목도 구글의 2018년 글에서 왔다. 그 글은 구글의 야간 모드가 완전한 어둠에서는 작동하지 못한다고 적었다.
화면의 숫자는 늘 같지 않다. 애플은 장면이 얼마나 어두운지에 따라 아이폰이 야간 모드 사진을 빠르게 찍을 수도 있고 몇 초가 걸릴 수도 있다고 적었다. 아이폰에서 「최대」를 고르면 촬영 시간이 늘어난다. 2020년 애플 뉴스룸 글은 가장 어두운 밤에는 아이폰을 받치거나 삼각대를 써서 촬영 시간을 더 길게 해 보라고 권했다.
움직이는 사람이나 차는 흐리거나 반투명하게 겹쳐 보일 수 있다. 구글 문헌으로 보면 이것은 여러 장을 겹치는 방식에서 생기는 일이라, 움직인 것이 왜 더 잘 보이는지를 다루는 뒤 절에서 따로 본다. 받치고 가만히 있는 것이 왜 그렇게 큰 차이를 내는지는, 픽셀이 고정됐을 때 찍는 방식을 어떻게 바꾸는지 보면 드러난다.
폰을 받치면 왜 더 깨끗할까
여기서부터는 원리를 더 알고 싶은 독자를 위한 내용이다. 구글 2018년 글에는 같은 밤하늘을 두 번 찍은 예가 있다. 손에 들고 찍은 쪽은 손이 살짝 떨려서, 야간 모드가 333 ms(0.333초)짜리 15장으로 모두 5.0초를 찍었다. 삼각대에 올린 쪽은 흔들림이 감지되지 않아 1.0초짜리 6장으로 모두 6.0초를 찍었다. 원문은 삼각대 쪽을 두고 「The sky is cleaner (less noise), and you can see more stars.」(하늘이 더 깨끗하고(노이즈가 적고), 별이 더 많이 보인다)라고 적었다.
같은 글에 따르면 2018년 픽셀 야간 모드는 폰이 벽이나 삼각대로 고정돼 있으면 한 장의 노출을 최대 1초까지 늘렸다. 삼각대에서는 장수도 6장으로 줄였다. 폰이 고정됐는지는 회전을 재는 자이로 센서로 판단한다고 2019년 구글 논문은 적었다.
그림 2처럼 두 촬영을 시간축에 나란히 놓으면 좋아진 점이 두 가지 보인다. 모은 빛의 총량은 약 1.2배로 늘었다. 읽기 노이즈가 붙는 횟수는 15번에서 6번으로 줄었다. 읽기 노이즈는 찍을 때마다 한 번씩 붙으므로, 같은 그늘이라면 받친 쪽이 더 깨끗하다. 폰을 받치면 빛을 더 모으는 일과 읽기 노이즈를 덜 붙이는 일이 한 번에 일어난다.
아주 어두운 곳에서는 왜 몇 장을 겹쳐도 모자랄까
읽기 노이즈는 장마다 한 번씩 붙으므로, 빛이 아주 적은 곳에서는 장수를 늘릴수록 그 몫이 쌓인다. 2019년 구글 논문도 신호가 아주 작으면 읽기 노이즈가 이긴다고 적었다. 2021년 구글 글의 예가 그 크기를 보여 준다.
In the example below, if a long exposure were divided into 12 short exposures, we’d have to capture 144 (12 × 12) short frames to match the signal-to-noise ratio in the shadows!
원문의 그림 예에서 긴 노출 한 장을 짧은 노출 12장으로 나눈다면, 그늘의 신호 대 노이즈 비를 맞추기 위해 짧은 사진 144장(12 × 12)을 찍어야 한다.
Manfred Ernst·Bartlomiej Wronski, 「HDR+ with Bracketing on Pixel Phones」, Google Research 블로그(2021)이 숫자는 그늘, 곧 빛이 아주 적은 부분의 값이다. 그런 곳에서는 긴 한 장을 N 조각으로 쪼갰을 때, 같은 깨끗함을 되찾는 데 N장이 아니라 N 곱하기 N장에 가까운 수가 든다. 쪼갤수록 필요한 장수는 쪼갠 수보다 훨씬 빠르게 늘어난다.
밝은 곳은 사정이 다르다. 문헌의 노이즈 정의로 직접 계산해 보면, 신호가 넉넉해질수록 필요한 장수가 12장 근처로 내려온다 그림 3. 식 1의 N 곱하기 N은 아주 어두운 끝에서만 맞는 셈이다.
앞의 그림 1 오른쪽 판도 같은 이야기다. 예시 가정에서 같은 시간의 긴 한 장은 15장 겹친 판보다 하늘 같은 그늘에서 약 2.4배 깨끗했다. 불 켜진 창처럼 가장 밝은 곳에서는 약 1.06배로 거의 같았다. 그렇다고 짧은 사진을 144장씩 찍을 수는 없다. 2021년 글은 그만큼 많은 장을 찍고 처리하면 1분이 넘게 걸릴 수도 있다고 적었다.
그래서 구글은 긴 노출을 몇 장 섞었다. 2021년 글의 그림 예에서 원래의 야간 모드는 짧은 사진 15장을 찍었다. 섞은 뒤에는 짧은 12장과, 노이즈를 더 줄이려고 넣은 긴 3장을 찍었다. 이 기능(HDR+ with Bracketing)은 픽셀 5와 픽셀 4a 5G에 실려 나왔다. 다만 노출이 다른 사진끼리는 정확히 맞추기가 더 어렵다.
긴 노출을 섞으면 움직인 것이 왜 더 잘 보일까
여러 장을 겹치면 움직인 것이 반투명하게 겹쳐 보일 수 있다. 이것을 잔상(고스팅, ghosting)이라고 한다. 2019년 구글 논문은 장면에 움직임이 있으면 장들을 정확히 맞추기 어렵고, 맞춘 장들을 단순히 평균하면 흐림과 잔상이 생긴다고 적었다.
이 글의 장난감 계산에서는 점 하나가 15장 동안 장마다 같은 간격만큼 오른쪽으로 옮겨 가게 했다 그림 4. 15장을 그냥 평균하자 원래 밝기의 1/15인 흐린 점 15개가 줄지어 남았다. 대신 배경의 노이즈는 기준 한 장보다 약 3.9배 작았다(점 밝기와 노이즈 크기는 예시 가정). 평균 낸 판은 매끈하지만 사본이 번지고, 한 장은 또렷하지만 거칠다.
긴 노출을 섞으면 이 문제가 더 드러난다. 2021년 글은 「ghosting artifacts are more visible in bracketed shots, because noise that would otherwise mask these errors is reduced」(노출을 섞어 찍은 사진에서는 잔상이 더 잘 보인다. 이런 잘못을 가려 주던 노이즈가 줄었기 때문이다)라고 적었다. 대책은 움직인 곳을 덜 합치는 것이다. 2019년 논문의 방식은 멈춘 곳은 많이 합치고, 움직이는 곳과 잘못 맞춰졌을 수 있는 조각은 덜 합친다.
구글은 2021년 글에서 화소마다 합칠지 정하는 새 병합 방식이 잔상을 만들지 않는다고 밝혔다. 동료심사를 거치지 않은, 회사 블로그의 설명이다. 여러 장을 겹치는 방식은 멈춘 것에 강하고 움직이는 것에 약해서 이런 장치가 따로 필요하다. 야간 모드 사진에서 움직인 사람이 흐리거나 겹쳐 보인다면, 그 약한 쪽이 드러난 자리다.
야간 모드의 밝음은 찍는 시간에서 나온다
구글이 공개한 방식에서 셔터 뒤의 그 몇 초는 폰이 빛을 여러 번 나눠 받는 시간이다. 폰은 그 시간 동안 짧은 사진을 여러 장 찍어 맞춰 겹치고, 그래서 빛은 쌓이고 노이즈는 줄어든다. 폰을 받치면 그 몇 초를 더 긴 장, 더 적은 장수로 나눠 쓸 수 있다. 한 장을 길게 찍는 것과 짧게 나눠 찍는 것의 차이는 빛이 가장 적은 곳에서 가장 크게 벌어진다. 가장 어두운 곳의 깨끗함은 장수보다 한 장의 노출 길이에 더 크게 달려 있다.
이 글의 원리 설명은 구글 문헌 넷(2016년 HDR+ 논문, 2018년 야간 모드 글, 2019년 동료심사 논문, 2021년 노출 섞기 글)에 기댄다. 지금 팔리는 픽셀이나 아이폰이 이 방식을 그대로 쓴다는 근거는 찾지 못했다. 아이폰은 애플 지원 문서가 적은 사용법까지만 다뤘다. 삼성 지원 페이지는 야간 모드가 사진 30장을 한 장으로 합친다고 적지만, 어느 모델의 값인지와 한 장의 노출 시간은 나와 있지 않다. 그림과 장난감 계산의 노이즈 크기, 장면 밝기, 읽기 노이즈 크기는 예시로 정한 값이고 실제 센서의 값이 아니다. 계산은 모두 외부 측정 없이 로컬에서 했다.
더 읽기
- Manfred Ernst, Bartlomiej Wronski, 「HDR+ with Bracketing on Pixel Phones」, Google Research 블로그(2021-04-23) — https://research.google/blog/hdr-with-bracketing-on-pixel-phones/
- Marc Levoy, Yael Pritch, 「Night Sight: Seeing in the Dark on Pixel Phones」, Google Research 블로그(2018-11-14) — https://research.google/blog/night-sight-seeing-in-the-dark-on-pixel-phones/
- Orly Liba 외, 「Handheld Mobile Photography in Very Low Light」, ACM Transactions on Graphics 38(6), Article 164(2019) — https://arxiv.org/abs/1910.11336
- Samuel W. Hasinoff 외, 「Burst photography for high dynamic range and low-light imaging on mobile cameras」, SA ’16 Technical Papers(2016) — https://static.googleusercontent.com/media/hdrplusdata.org/en//hdrplus.pdf
- Apple 지원, 「iPhone에서 야간 모드 사용하기」 — https://support.apple.com/ko-kr/102519