하지만 우리는 Pixel 3에서 새로운 Super Res Zoom(초해상도 줌) 기능을 사용하여 그런 고정관념을 깨뜨리고 있습니다.
Pixel 3의 Super Res Zoom 기술은 단일 이미지에서 한 부분의 배율을 높이는 방식을 기반으로 하는 이전의 디지털 줌 기술과는 다른, 더욱 나아진 기술입니다. 다수의 프레임을 더 높은 해상도의 사진 위로 직접 병합하는 방식을 따르기 때문입니다. 그 결과, 다른 다수의 스마트폰에 탑재되는 2배 광학 줌 렌즈와도 대체로 경쟁할만한 정도로 디테일이 대폭 개선되었습니다. Super Res Zoom 기술을 이용할 경우, 손가락 모으기 동작으로 확대/축소하는 핀치 줌을 한 후 셔터를 눌러 사진을 찍으면 사진을 찍은 후에 한 부분을 확대하는 방식에 비해 사진의 디테일이 훨씬 더 살아나는 효과를 거둘 수 있습니다.
2배 확대 사진: 2017년 Pixel 2로 찍은 사진과 2018년 Pixel 3에서 Super Res Zoom 기능을 이용해 찍은 사진 비교.
디지털 줌의 도전 과제
사람들은 훌륭한 알고리즘이라면 당연히 해상도가 낮은 이미지라 할지라도 누락된 세부정보를 확실하게 '복원'해 줄 것이라 여기므로, 디지털 줌 기술은 어려운 과제를 안고 있는 셈입니다. 전형적인 디지털 줌은 단일 이미지에서 작은 일부분의 배율을 높여 훨씬 더 큰 이미지를 만들어내는 방식입니다. 이 작업은 전통적으로 선형 보간법을 통해 수행됩니다. 즉, 원본 이미지에서 얻을 수 없는 정보를 되살리려 시도하지만, 텍스처와 세부정보가 부족하여 흐릿하거나 뭔가 선명하지 않게 보입니다. 반대로, 대부분의 첨단 단일 이미지 업스케일러는 (우리의 초창기 작품인 RAISR을 포함하여) 머신러닝을 사용합니다. 이런 업스케일러는 직선 모서리 부분처럼 특정한 이미지 특징을 확대하고 심지어는 텍스처를 합성할 수도 있지만, 고해상도의 디테일을 자연스럽게 복원하지는 못합니다. 우리는 여전히 RAISR을 사용하여 이미지의 시각적 품질을 향상하지만, (최소한 2~3배 정도의 적당한 배율에 대해) Super Res Zoom이 제공하는 해상도 개선 효과 중 대부분은 다중 프레임 접근 방식 덕분입니다.
컬러 필터 배열과 디모자이크
디지털 사진 그 자체가 이미 불완전하므로 섬세한 디테일을 복원하기란 특히 어려운 일입니다. 섬세한 디테일은 디모자이크라는 프로세스를 통해 부분적인 컬러 정보로부터 복원되었습니다. 일반적인 소비자용 카메라에 탑재되는 카메라 센서 소자는 색을 직접 측정하는 것이 아니라 빛의 세기만 측정할 뿐입니다. 카메라에서는 센서 앞쪽에 배치된 컬러 필터 배열을 사용하며 각 픽셀은 한 가지 색만(빨간색, 녹색 또는 파란색) 측정하여 촬영되는 장면에 존재하는 실제 색을 포착합니다. 이들 색은 아래 그림에 나타낸 것처럼 베이어 패턴으로 배열됩니다.
베이어 모자이크 컬러 필터. 2x2 배열의 픽셀로 구성된 각각의 그룹은 특정 색으로 필터링된 빛을 포착합니다. 예를 들면 녹색 픽셀 2개(사람의 눈은 녹색에 더 민감하므로), 빨간색 픽셀 1개, 파란색 픽셀 1개로 구성됩니다. 이 패턴이 이미지 전체에 걸쳐 반복됩니다.
그러면 카메라 처리 파이프라인이 이와 같은 부분적인 정보를 가지고서 모든 픽셀에서 실제 색과 모든 디테일을 복원해야 합니다.* 디모자이크는 일반적으로 근처에 있는 픽셀의 색에서 보간하는 방법으로 누락된 컬러 정보를 최선으로 추측하는 과정부터 시작되는데, 이는 RGB 디지털 사진의 2/3가 실은 복원된 이미지라는 의미입니다!
디모자이크는 인접한 픽셀을 사용하여 누락된 컬러 정보를 복원합니다.
가장 간단한 형식으로는, 인접한 값에서 평균을 내는 방법으로 이 작업을 수행할 수 있습니다. 대부분의 실제 디모자이크 알고리즘은 이보다는 복잡하지만, 그래도 불완전한 결과와 아티팩트로 이어지는 건 어쩔 수 없습니다. 부분적인 정보만 주어지는 한계가 있기 때문입니다. 대형 DSLR 카메라에도 이런 상황이 존재하지만, 센서와 렌즈가 더 크기 때문에 휴대기기의 카메라보다 대체로 더 세밀한 부분까지 포착할 수 있습니다.
휴대기기에서 핀치 줌을 하면 알고리즘이 강제로 훨씬 더 많은 정보를 구성하게 되고, 이는 다시 근처의 픽셀로부터 보간하는 결과를 낳으므로 상황이 더 나빠집니다. 하지만 모든 걸 잃는 건 아닙니다. 바로 이럴 때 버스트 촬영술과 여러 이미지를 융합하는 기법을 사용하면 휴대기기의 광학 기능 성능이 제한적이더라도 초해상도(super-resolution)를 구현할 수 있기 때문입니다.
버스트 촬영술에서 다중 프레임 초해상도로
단일 프레임으로는 누락된 컬러를 채우기에 충분한 정보가 제공되지 않지만, 연속으로 촬영한 여러 이미지에서 이처럼 누락된 정보 중 일부를 얻을 수 있습니다. 여러 장의 순차 촬영 사진을 캡처하고 결합하는 과정을 버스트 촬영술이라고 합니다. Nexus 및 Pixel 휴대폰에 성공리에 사용되는 Google의 HDR+ 알고리즘에서는 이미 여러 프레임에서 얻은 정보를 사용하여 휴대폰으로 찍은 사진이 훨씬 더 큰 센서를 이용해 찍은 사진에서나 볼 수 있는 수준의 화질에 도달했는데, 비슷한 접근 방식을 사용해 이미지 해상도를 높일 수 있을까요?
천문학 분야에서는 그 기본 개념이 소위 '이슬비'로 알려져 있는 등, 이미 10여 년 전부터 알려진 바이지만, 약간 다른 위치에서 찍은 여러 이미지를 캡처하여 결합하면 양호한 조명 상태에서 최소한 2배 또는 3배 정도의 낮은 배율로 확대한 듯한 광학 줌 효과에 상응하는 해상도를 얻을 수 있습니다. 다중 프레임 초해상도 구현이라고 부르는 이 과정의 일반적인 개념은 저해상도 버스트 이미지를 원하는(더 높은) 해상도의 그리드 위로 직접 정렬하고 병합하는 것입니다. 다음은 이상화된 다중 프레임 초해상도 알고리즘 작동의 예를 보여줍니다.
누락된 컬러를 보간하기 위해 필요한 표준 디모자이크 파이프라인(맨 위)에 비해, 각각 한 픽셀씩 가로 또는 세로 방향으로 이동되는 여러 이미지로부터 구멍을 메울 수 있는 이상적인 방법인 셈입니다.
위 예에서는 4개의 프레임을 캡처하여 그중 3개를 가로 방향, 세로 방향 그리고 가로와 세로 방향으로 모두 정확히 한 픽셀씩 이동했습니다. 그러면 모든 구멍이 채워질 것이므로 디모자이크를 할 필요가 전혀 없게 됩니다! 사실, 일부 DSLR 카메라는 이 기능을 지원하지만, 카메라를 삼각대에 올려 놓고 센서/광학 장치가 서로 다른 위치로 능동적으로 움직이는 경우에만 가능합니다. 이를 간혹 '마이크로스테핑'이라고 부릅니다.
수년간은 더 높은 해상도의 이미지를 얻기 위한 이러한 'super-res(초해상도)' 접근 방식이 주로 실험실 수준으로 한정되거나, 센서와 피사체를 정확히 잘 맞춘 상태에서 둘 사이의 움직임을 교묘하게 제어하거나 엄격히 제한한 통제 환경으로 한정되어 왔습니다. 예를 들어 천문학 영상 촬영에서는 정지 상태의 망원경이 움직임이 예측 가능한 하늘을 바라보며 촬영이 이루어집니다. 그러나 오늘날과 같은 형태의 스마트폰처럼 널리 사용되는 영상 촬영 기기의 경우, 휴대기기의 카메라와 같은 사용 환경에서 줌 기능을 사용할 때 초해상도 기능을 실용적으로 활용하기란 거의 불가능한 일로 치부되어 왔습니다.
이 기능이 올바로 작동하도록 하려면 특정한 조건이 충족되어야 한다는 사실도 그 이유 중 하나입니다. 첫 번째이자 가장 중요한 점은, 렌즈가 기기에 사용되는 센서보다 세밀한 부분을 더 높은 해상도로 포착해야 한다는 점입니다. (그 반대로, 렌즈의 성능이 너무 떨어져서 아무리 훌륭한 센서를 추가로 장착하더라도 소용없는 경우를 상상해 볼 수 있습니다.) 이러한 속성은 종종 앨리어싱이라고 하는 디지털 카메라의 원치 않는 아티팩트로 관찰됩니다.
이미지 앨리어싱
앨리어싱은 카메라 센서가 촬영 장면에 존재하는 모든 패턴과 세부정보를 충실하게 나타낼 수 없을 때 발생하는 현상입니다. 앨리어싱의 좋은 예로는, TV 출연자가 무심코 골라 입고 나온 옷의 무늬가 하필이면 배경 무늬와 묘하게 합쳐져 TV 화면에 무아레 무늬로 나타나는 경우를 들 수 있습니다. 더 나아가, 어떤 장면에서 사물이 움직일 때 어떤 물리적 특징(예: 테이블 모서리)에 작용하는 앨리어싱 효과가 변화합니다. 다음과 같은 버스트 시퀀스에서 이런 현상을 관찰할 수 있는데, 버스트 시퀀스 중에 일어난 카메라의 미세한 움직임으로 인해 시간의 변화에 따른 앨리어스 효과가 발생합니다.
왼쪽: 고주파 패턴의 배경을 두고 촬영된 테이블 모서리의 고해상도 단일 이미지. 오른쪽: 버스트 촬영으로 얻은 여러 다른 프레임. 앨리어싱 효과와 무아레 효과는 서로 다른 프레임 사이에서 볼 수 있는데, 마치 픽셀이 주변으로 점프하여 다른 색의 패턴을 만들어내는 것처럼 보입니다.
하지만 이런 현상이 위장 용도로는 축복이나 다름없습니다. 생성되는 패턴을 분석하면 다양한 색 및 밝기 값을 얻을 수 있는데, 이전 섹션에서 설명한 것처럼 이를 이용해 초해상도를 실현할 수 있기 때문입니다. 그렇다 하더라도, 초해상도 기능을 실용적으로 활용하려면 휴대폰에서 어떤 버스트 시퀀스에서도 원활히 작동해야 하므로 많은 난관이 그대로 남아 있습니다.
손의 움직임을 이용한 실용적 초해상도
앞서 언급한 것처럼, 일부 DSLR 카메라는 지금까지 설명한 것과 비슷한 방식으로 작동하는 특수한 삼각대 초해상도 모드를 제공합니다. 이러한 접근 방식은 카메라에 내장된 센서와 광학 장치의 물리적 이동에 의존하지만, 카메라가 완전히 안정화된 상태여야 합니다. 그런데 거의 항상 손으로 들고 사용하는 휴대기기에서는 이런 조건이 비현실적입니다. 이 문제는 모바일 플랫폼에서의 초해상도 영상 촬영에 있어 딜레마를 일으키는 것으로 보일 것입니다.
하지만 우리는 손의 움직임을 이용하는 방식으로 이러한 난관을 오히려 이점으로 삼습니다. 휴대용 카메라나 스마트폰으로 여러 장의 사진을 버스트 촬영할 때는 항상 프레임 간에 약간의 움직임이 생기기 마련입니다. OIS(광학 이미지 흔들림 보정) 시스템은 큰 카메라 모션(일반적으로 1/30초 간격으로 연속 촬영한 프레임 사이에 5~20픽셀)을 보정하지만, 누구에게서나 더 빠르고 낮은 진폭으로 발생하는 자연스러운 손 떨림을 완전히 없앨 수는 없습니다. 아무리 손을 안정된 자세로 고정하더라도 예외가 아닙니다. 고해상도 센서가 있는 휴대폰을 사용해 사진을 찍을 때 이러한 손 떨림은 몇 픽셀에 불과한 움직임입니다.
전체 정렬 후 잘라낸 버스트 이미지에서 볼 수 있는 손 떨림의 효과.
손 떨림을 이용하려면 먼저 버스트 촬영된 사진들을 함께 잘 맞춰 정렬해야 합니다. 버스트 촬영된 이미지 중 한 이미지를 '기본' 또는 기준 프레임으로 선택하고 다른 모든 프레임을 기본 프레임에 맞춰 정렬합니다. 정렬하고 나면 이 글 앞 부분에 나왔던 그림에서처럼 이미지들이 대략적으로 함께 결합됩니다. 물론, 손 떨림으로 인해 이미지가 정확히 한 픽셀 단위로 움직이는 일이야 거의 없겠지만, 새로 캡처된 각 프레임에서 인접한 픽셀들 사이에서 보간한 후에 기본 프레임의 픽셀 그리드에 색을 삽입해야 합니다.
기기가 완전히 안정화되어 있어(예: 삼각대 위에 올려둔 경우) 손의 움직임이 존재하지 않을 때도 카메라를 일부러 가볍게 흔들어 OIS 모듈이 촬영 간에 약간 움직일 수밖에 없도록 함으로써 자연스러운 손 떨림을 시뮬레이션한다는 목표를 달성할 수 있습니다. 이 움직임은 정상적인 사진 촬영에 방해가 되지 않는 선에서 극미한 수준으로 선택된 움직임이지만, 창문에 기대어 놓고 버튼을 누르는 것과 같은 방법으로 휴대폰을 완벽히 고정 상태로 유지하고 뷰파인더를 최대로 핀치 줌하는 방법으로 Pixel 3에서 스스로 관찰할 수 있습니다. 아래에 나타낸 것처럼, 멀리 떨어진 물체에서 작지만 연속적인 타원형 움직임을 찾아보세요.
초해상도의 난제 극복
위에서 제시한 이상적인 과정에 대한 설명은 간단한 얘기로 들리겠지만, 초해상도를 구현하기란 그리 쉬운 문제가 아닙니다. 이 기능이 휴대폰과 같은 소비자 제품에서 널리 사용되지 못한 이유가 많이 있으며, 이 문제를 해결하려면 상당한 알고리즘 혁신과 발전이 이루어져야 합니다. 해결해야 할 과제로는 다음과 같은 것이 포함될 수 있습니다.
- 조명 상태가 좋은 경우에도 버스트 촬영에서 선택한 단일 이미지에 노이즈가 있습니다. 실용적인 초해상도 알고리즘이라면 이 노이즈를 인식하여 노이즈가 있더라도 올바로 작동해야 합니다. 우리가 원하는 건 노이즈가 있는 더 높은 해상도의 이미지를 얻는 게 아닙니다. 해상도를 높이면서도 노이즈가 훨씬 적은 결과를 만들어내는 것이 우리의 목표입니다.
왼쪽: 양호한 조명 상태에서 촬영한 버스트 사진에서 고른 단일 프레임에는 노출 부족으로 인해 여전히 상당량의 노이즈가 있을 수 있습니다. 오른쪽: 버스트 처리 후 여러 프레임을 병합한 결과.
- 버스트 촬영에서 찍은 이미지 사이의 움직임이 카메라의 움직임만으로 제한되는 것은 아닙니다. 바람에 쓸려 날아오는 나뭇잎, 수면에서 이는 잔물결, 자동차, 움직이거나 표정을 바꾸는 사람들, 불꽃의 나부낌 등, 촬영한 장면에 복잡한 움직임이 있을 수 있습니다. 어떤 움직임은 연기나 유리와 같이 여러 층으로 겹쳐 있거나 투명하기 때문에 단 하나의 고유한 예상 움직임으로 할당할 수 없는 경우도 있습니다. 일반적으로 완전히 신뢰할 수 있고 국소화된 정렬이란 건 불가능한 일이므로, 훌륭한 초해상도 알고리즘이라면 예상 움직임이 불완전하더라도 작동해야 합니다.
- 많은 움직임이 임의적이므로, 잘 정렬된 경우라도 이미지에서 어떤 영역은 데이터가 조밀하고 다른 부분은 희박할 수 있습니다. 초해상도의 핵심은 복잡한 보간 문제이므로, 이처럼 데이터가 불규칙하게 분포되어 있으면 그리드의 모든 부분에서 더 높은 해상도의 이미지를 생성하기 어려워집니다.
상기한 모든 난제를 고려할 때 마치 실제 환경에서의 초해상도 구현이 사실상 불가능하거나 최소한 정적인 장면과 삼각대에 고정한 카메라에만 제한되는 것처럼 보입니다. 우리는 Pixel 3에서 Super Res Zoom을 사용하여 자연스러운 손의 움직임을 이용하고 휴대폰에 배포하기에 충분히 강력하고 효율적이면서 안정적이고 정확한 버스트 해상도 향상 방법을 개발했습니다.
이러한 난제 중 몇 가지를 어떻게 해결했는지 소개하겠습니다.
- 버스트 촬영으로 얻은 프레임을 효과적으로 병합하고 디모자이크를 수행할 필요 없이 모든 픽셀에 대해 빨간색, 녹색 및 파란색 값을 생성하기 위해, 우리는 이미지의 엣지를 고려하여 적절히 적응하도록 프레임 전반에 걸쳐 정보를 통합하는 방법을 개발했습니다. 특히, 입력 프레임을 분석하고 이들 프레임을 함께 결합하는 방법을 조정하여 디테일 및 해상도의 향상과 노이즈 제거 및 다듬기를 적절히 절충합니다. 뚜렷한 엣지를 가로지르는 것이 아니라 그 방향을 따라 픽셀을 병합함으로써 이러한 목적을 달성합니다. 그 순수 효과는 우리의 다중 프레임 방법을 통해 노이즈 감소와 디테일 강화 사이에서 최적의 밸런스를 이룰 수 있다는 점입니다.
왼쪽: 노이즈 감소와 해상도 향상의 절충이 최적의 상태로는 이루어지지 않은 채로 병합된 이미지. 오른쪽: 더 나은 절충 상태로 병합된 동일한 이미지.
휴대기기를 이용한 사진 촬영에 최첨단 기술 적용
작년에 발표한 인물 사진 모드와 그 이전에 나온 HDR+ 파이프라인은 휴대기기로 얼마나 멋진 사진 촬영이 가능한지를 보여 주었습니다. 올해는 줌에 대해서도 똑같은 기능을 수행하는 작업에 착수했습니다. 이는 컴퓨팅 기술을 이용한 사진 촬영의 최첨단 기술을 또다시 진일보시키는 작업인 동시에, 휴대기기를 이용한 사진 촬영과 DSLR 카메라 촬영 사이의 화질 차이를 좁히려는 노력이기도 합니다. 다음은 풀 FOV 이미지와 Super Res Zoom 이미지를 담은 앨범을 차례로 보여줍니다. 이 앨범에서 Super Res Zoom 이미지는 자른 이미지가 아니라 핀치 줌을 사용해 기기에서 바로 캡처한 이미지입니다.
왼쪽: Pixel 2에서 7배로 확대한 이미지를 자른 장면. 오른쪽: Pixel 3에서 Super Res Zoom으로 확대한 이미지를 똑같이 자른 장면.
초해상도라는 아이디어는 스마트폰이 등장한 시점보다 적어도 10년 이상 앞선 시점에 나왔습니다. 이와 거의 같은 기간 동안, 초해상도는 영화와 텔레비전을 통해 대중의 상상 속에서도 살아있었습니다. 초해상도라는 주제는 학계의 각종 저널에서 수천 편의 논문과 수많은 학술회의의 토론에서 다루어진 주제입니다. 그런 초해상도가 드디어 여러분의 손에 쥐어진 Pixel 3에서 현실이 됩니다.
Super Res Zoom을 설명해주는 애니메이션. 사용자가 확대 사진을 찍을 때 Pixel 3는 사용자의 자연스러운 손 떨림을 이용해 미묘하게 다른 위치에서 이미지 버스트를 캡처합니다. 그런 다음 이런 이미지를 함께 병합하여 최종 이미지에 디테일을 더해줍니다.
감사의 말
Super Res Zoom은 Google의 여러 팀들 사이에서 이루어진 협업의 결과물입니다. Peyman Milanfar, Marc Levoy, Bill Freeman이 관리한 이들 팀의 공동 노력이 없었다면 이런 프로젝트를 수행할 수 없었을 것입니다. 본 저자들은 이 블로그 게시물을 작성하는 데 도움을 주신 Marc Levoy와 Isaac Reynolds에게 특별히 감사의 마음을 전하고 싶습니다.
그리고 Super Res Zoom 프로젝트의 핵심적 역할을 맡은 다음 분들에게 감사의 말씀을 전하고 싶습니다. Ignacio Garcia-Dorado, Haomiao Jiang, Manfred Ernst, Michael Krainin, Daniel Vlasic, Jiawen Chen, Pascal Getreuer, Chia-Kai Liang 님 모두 감사합니다! 또한 Ce Liu, Damien Kelly, Dillon Sharlet의 공헌과 피드백에도 도움받은 바가 큽니다.
Super Res Zoom을 최대한 활용하는 방법은 뭘까요?
Pixel 3 휴대폰에서 Super Res Zoom 기능을 최상으로 활용하기 위한 팁을 소개합니다.
- 손가락을 벌리는 동작으로 확대하거나 + 버튼을 사용해 단계별로 확대할 수 있습니다.
- 확대 이미지와 축소 이미지 사이에서 빠르게 전환하려면 미리보기를 두 번 탭하세요.
- Super Res는 모든 줌 배율에서 잘 작동하지만, 성능상의 이유로 1.2배 이상에서만 작동하도록 되어 있습니다. 줌을 하지 않은 상태와 줌 UI에서 처음 '클릭'한 상태 사이의 대략 절반 지점이라 보시면 됩니다.
- 광각 카메라의 광학 해상도에는 근본적인 한계가 있습니다. 따라서 (임의의) 줌을 최대한 활용하려면 확대 배율을 적당한 수준으로 유지하세요.
- 빠르게 움직이는 물체의 촬영은 피하세요. Super Res Zoom이 이런 물체를 올바로 캡처하긴 하겠지만, 해상도가 높아지지는 않을 것입니다.
* 이 상황은 우리가 사물을 보는 방식과 어떤 면에서는 유사하다는 점에 주목할 만합니다. 인간과 기타 포유류의 눈에는 다양한 눈 원추세포가 몇 가지 특정한 색에 민감하게 반응하고 두뇌가 세밀한 부분을 채워주어 전체 이미지를 복원하게 됩니다.↩