테크

구글 카메라 Night Sight 원리

뽕다르 2018. 12. 24. 00:43

왼쪽: iPhone XS, 오른쪽: Pixel 3 Night Sight (출처:구글 AI 블로그)


얼마전 구글이 픽셀폰을 대상으로 Night Sight 카메라 모드를 공개 했습니다. 기존에도 픽셀 카메라가 야간 촬영에서 뛰어난 성능으로 블라인드 테스트에서 좋은 평가를 많이 받았었는데, Night Sight라는 기능으로 또 한번 야간 촬영 품질을 끌어 올리면서 많은 호평을 받고 있습니다. 관련해서 Google AI Blog에 Night Sight 동작 방식에 대한 글이 올라와 정리 해봤습니다.


간단히 요약하면, 픽셀폰의 전/후면 카메라, 손의 흔들림, 모션 센서, 밝기 센서를 이용해 현재 상황에서의 최적의 셔터 스피드와 촬영 프레임수를 계산해 촬영을 하고, HDR 이미지 병합 알고리즘과 Super Res Zoom 알고리즘을 이용해 화질을 개선한 다음, 학습 기반의 자동 화이트 밸런스 알고리즘과 어두운 장면에서의 톤 맵핑 알고리즘을 이용해 사진을 보정해 야간에도 마법과 같은 결과를 만들어 낸다고 하네요.



원문

Google AI Blog : Night Sight: Seeing in the Dark on Pixel Phones


저 조명 촬영이 왜 어려운가? 

- 샷노이즈 : 작은 렌즈, 센서로 인해 발생하는 렌즈에 들어오는 광자 수의 자연적 변화

- Read Noise : 각 픽셀에 가해지는 빛의 전자 전하를 숫자로 변환 할 때 발생하는 임의 오류

- SNR :  노이즈 대비 원하는 신호의 비율. 노출시간의 제곱근에 비례

   - 긴 노출로 촬영하면 깨끗한 사진을 얻을 수 있다

   - 휴대폰을 들고 오랫동안 움직이지 않는건 어렵다

- HDR+ : 사진 프레임을 순간적으로 여러장 캡쳐 후 소프트웨어 적으로 병합해 다이나믹레인지를 개선하는 기술

   - 모든 시리즈의 Pixel에 적용됨

   - 샷노이즈와 Read Noise를 개선함

   - 짧은 노출을 사용해 사진을 여러장 찍고, 흔들린 사진은 병합에서 제외해 더 선명한 사진을 얻음


어둠의 척도

- 루멘(Lumen)

   - 30,000 lux - 직사광선을 그대로 맞는 야외

   - 10,000 lux - 맑은날 야외 그늘

   - 1,000 lux - 흐린날 야외

   - 300 lux - 전형적인 사무실 내 밝기

   - 150 lux - 집에서의 책상의 밝기

   - 50 lux - 레스토랑 평균

   - 20 lux - 분위기 있는 레스토랑

   - 10 lux - 서랍에서 양말을 짝을 맞춰 찾기 위한 최소한의 빛

   - 3 lux - 가로등 빛

   - 1 lux - 신문을 읽기 위한 최소한의 빛

   - 0.6 lux - 보름달이 뜬 야외

   - 0.3 lux - 바닥에서 물건을 찾을 수 없는 정도

   - 0.1 lux - 손전등 없이는 걸을 수 없는 정도

- 보통 한장의 프레임을 찍은 스마트폰 카메라의 경우 30 lux부터 문제가 됨

- HDR 기능이 작동하는 경우 3 lux까지 잘 처리 할 수 있음

- Night Sight의 목표는 3lux ~ 0.3lux 에서도 멋진 사진을 찍은것


데이터 캡쳐

- 각 프레임 당 노출 시간을 늘리는 것은 SNR을 증가 시키고 이미지지를 더욱 선명하게 할 수 있지만 두가지 문제를 불러옴.

- 첫째, 픽셀폰에서는 기본 사진 촬영 모드에서는 제로 셔터 랙을 사용. 본질적으로 노출 시간을 제한함.

   - 카메라 앱을 실행하면 이미지 프레임을 순환 버퍼에 계속 저장

   - 셔터 버튼을 누르면 9~15 프레임의 사진을 HDR+ 혹은 Super Res Zoom 알고리즘으로 보냄

   - 초당 15 프레임 이상을 유지할 수 있도록 노출을 최대 66ms로 제한함

   - Night Sight에서는 더 긴 노출이 필요한 장면을 위해 Positive 셔터 랙을 사용

   - 밝기가 어두운 상태에서는 노출 시간을 66ms 보다 더 길게 설정함

- 둘째, 손떨림과 피사체의 움직임에 의한 모션블러 현상

   - Pixel2 및 3에 있는 OIS(광학 이미지 안정화)는 최대 1/8초 동안 손떨림을 줄여주지만 장시간 흔들림에는 효과가 없음

   - OIS가 해결 할 수 없는 모션 블러를 해결하기 위해 Motion Metering 기술을 적용

      - 옵티컬 플로우를 사용해 장면의 움직임을 측정 후 흐림을 최소화 하기 위한 노출 시간을 선택

      - Pixel 3에서는 기본 모드. Pixel 1, 2에서는 Night Sight 모드일때만 동작

      - Night Sight 모드에서 큰 움직임이 없는 경우 모든 픽셀 폰들은 프레임당 노출을 333ms(1/3s)까지 늘림

      - 카메라가 안정화 된경우(벽이나 삼각대 이용) 노출을 최대 1초까지 늘림

   - 한장의 사진 촬영에서 캡쳐 프레임 수의

      - 삼각대에 있는 경우 6 프레임

      - 손에 들고 있는 경우 15 프레임

   - 픽셀폰의 전/후면 카메라, 손의 흔들림, 모션 센서, 밝기 센서에 따라 Night Sight에서의 촬영

      - 움직임이 많은 경우 ->  1/15s(66ms)의 노출로 15프레임

      - 삼각대 -> 1s의 노출로 6프레임


정렬 및 병합

- 이미징 노이즈를 줄이기 위해 여러 프레임을 평균화 하는 아이디어

- Night Sight에서도 실시간은 아니지만 풀 센서 해상도에서 동일한 아이디어를 사용

- Pixel 1, Pixel 2에서는 HDR 이미지 병합 알고리즘을 사용

- Pixel 3에서는 Super Res Zoom을 사용

   - 야간 사진에서 HDR+보다 더 나은 결과를 보임

   - 하지만 Pixel3와 같은 고성능의 프로세서가 필요함


또 다른 도전

- 저조도 에서 자동 화이트 밸런싱(AWB)의 실패

   - 사람은 색채 불변성[각주:1] (Color constancy) 능력이 뛰어남.

   - 하지만 한 종류의 조명 아래에서 찍은 사진을 다른 조명 아래에서 볼 때 그 능력은 동작하지 않음

   - 이 현상을 보정하기 위해 중성(흰색) 빛이 비추는 것처럼 보이도록 이미지의 색상을 이동함. 이를 AWB라고 함.

   - 야간 이외의 AWB 알고리즘은 좋은 결과는 보이지만, 매우 흐리거나 색이 밝은 조명에서는 조명의 색을 결정하기 어려움.

   - Pixel 3에서는 학습 기반의 AWB 알고리즘 사용

      - 흰색 균형이 잘 잡힌 이미지와 균형이 잘 맞지 않는 이미지를 구분 할수 있도록 훈련

      - 이미지 균형이 맞지 않으면 적절한 색상 조절 방법을 제안해 줌

      - 픽셀 폰으로 다양한 장면의 사진을 찍어 색상이 보정된 모니터로 화이트 밸런스를 조정해 훈련 데이터로 사용

- 너무 어두운 장면에서의 톤 맵핑[각주:2]

   - 매우 희미한 조명에서 인간은 색을 잘 구별하지 못함.

      - 어두운 곳에서는 서로 다른 파장의 빛을 구별 할 수 없는 막대 세포(rod cells)만 동작하기 때문.

   - 예술가 들은 수세기 동안 그림을 밤과 같이 보이게 하는 방법을 알고 있었다

      - 명암을 높이고 어둠으로 그 장면을 둘러 싸고 그림자가 검은색으로 보이게 한다

      - 사람은 그림자에서 세부적인것을 볼수 없기 때문이다

   - Night Sight 에서도 동일한 트릭을 사용

      - 톤 맵핑에 시그모이드 (Sigmoid) 함수를 사용

      - 일정 수준 이하의 밝기 부분을 아예 어둡게 표현함



  1. 색체 불변성이란 조명 및 관측 조건이 다르더라도 주관적으로는 물체의 색이 변화되어 보이지 않고 항상 동일한 색으로 색채를 지각하는 성질. [본문으로]
  2. 컴퓨터 그래픽스 렌더링 분야에서 말하는 톤 매핑이란, 하이 다이내믹 레인지의 컬러 값들을 컴퓨터 디스플레이 장치에 표현 가능한 Low 다이내믹 레인지로 매핑하는 기법을 말한다 [본문으로]