디지털 이미징의 총체적 이해 - Introduction

어떤 식으로든 디지털 이미징에 관여되어 있는 영역은 현대 사회에 정말로 광범위하다. 사진 촬영, 영상 처리, 머신 비전…심지어 옆집이라 볼 수 있는 CG, 렌더링, 광학 설계 등까지도 이런 영역에 걸친다. 그만큼 이 영역은 광대하며, 마찬가지로 이 영역에 종사하는 사람도 정말로 다양하다. 하지만 전체 파이프라인이 커진 만큼 전문성은 올라갔고, 전문성이 올라간 만큼 전체 파이프라인에 대한 이해는 점점 피상적이 되어갔다. 어떠한 물체에서 나온 빛이 어떻게 RGB값의 데이터로 변환되는지 그 사이의 일들은 대개 블랙박스로 남아 있다.
사실 이게 큰 문제는 되지 않는다. 나쁘게 말해야 피상적인거지, 좋게 말하면 피상적인게 아니라 추상화를 한 것이다. 광학 설계를 하는 사람이 굳이 영상 처리 알고리즘을 알 필요가 없고, 객체 검출을 연구하는 데 영상기하학을 알 필요는 없으니까. 개인적인 취향으로는 모두가 더 나은 이해를 함양해야 한다는 꼰대같은 생각을 하고 있긴 했지만, 엄밀히 따지자면 전체 파이프라인에 대한 지식은 교양 그 이상도 이하도 아니었다.
그런데 시대가 physical AI로 넘어오면서, 이 교양이 변명거리를 얻었다. 수많은 학습 데이터를 현실에서 모으는 비용은 워낙 크기 때문에 synthetic data를 잘 사용하는 것이 중요한데, physical AI는 물리적 상호작용을 필요로 하기에 이전에 비해 시뮬레이터의 중요성이 올라갔다. 결과적으로 이 시뮬레이션과 현실의 차이를 줄여야 하며(이를 소위 sim-to-real gap이라 부른다.), physically accurate image를 만들기 위해선 이 파이프라인을 어느 정도 재현하는 것이 중요해졌다.
그리고 앞서 '꼰대같은 생각’이라고 비하하긴 했지만, 교양 그 이상의 의미가 원래도 분명히 존재했다. RGB값이 선형 도메인인지 비선형 도메인인지 모른다면 단순 산술연산이 어디서 깨지는지를 모른다. 영상에서 일반적으로 노이즈를 가우시안이라고 생각하고 처리하려든다면 저조도 환경에서 문제가 생긴다. 영상기하 오차가 카메라 주변부에서 강해지는지 모른다면 reprojection error에 대해 분석할 수 없다. 실내 조명에서 플리커링이 생겼을 때, 어떤 파라미터를 바꿔야 이를 고칠 수 있는지 판단을 못한다. 마이크와 스피커가 서로 같은 데이터 교환의 역방향인 것처럼, 한쪽을 알면 반대쪽에서 당연해지는 것이 있다. 모아레 현상을 알면 렌더링에서 mip-map을 왜 필요로 하는지 알 수 있으며, 영상 취득의 본질을 신호처리 영역으로 표현 가능하다.
그래서 이 시리즈는 물리적 공간에서 튕겨다니는 빛이 어떻게 센서에 닿아 한 장의 이미지가 되는지, 모든 과정에 대해 순차적으로 쓴 글이다. 물론 몇몇 부분들에 대해 전문서와도 같은 디테일은 생략한다. 글을 쓰는 내가 잘 몰라서 생략하는 부분도 분명히 존재하지만, 그 이상으로 이미 광대한 영역을 넘칠 만큼 자세히 담고 있기에 해상도를 일정 이상 올릴 수 없다는 것을 양해 바란다. 이 글은 각 영역에 대해, 일반인도 이해할 만한… 아마 일반인도 이해할 만한 내용을 최대한 앞쪽에 같이 담으려고 노력했다. 흐름을 먼저 짚고, 그 다음 구분선을 주어서 디테일을 격리시켜놨기 때문에, 디테일을 생략해도 아마 흐름은 이어질 것이다.
앞의 세 챕터는 조금 더 카메라에 초점을 맞추며, 빛의 여정을 시간 순서 그대로 가져간다. 빛이 어떻게 해서 센서까지 닿는지(광학), 도달한 빛이 어떻게 전기신호로 변환되는지(센서), 이렇게 샘플링한 데이터가 어떻게 RGB 이미지로 바뀌는지(신호처리).
뒤의 네 챕터는 조금 더 로보틱스, 3D vision 도메인에서 끌고 가본다. 센서 sampling이란 측면에서 시공간에 대해 무엇을 알아야 하는지(시공간), 3차원 카메라는 어떤 특징이 있는지(Depth Camera), 그리고 이렇게 얻은 개념들을 바탕으로 lidar에 대한 이해를 가져가본다. 마지막으로는 realistic simulation을 위해 센서별 특징이 어떻게 정리되는지 살펴보며, 광학계는 아니지만 상당히 많이 사용하는 센서인 만큼 IMU의 noise model도 살짝 담아보았다.
마지막 한 챕터는 rendering과 inverse rendering에 대해 담아보았다. 결국 이 파이프라인 전체를 거꾸로 되짚어가며 이 글의 여정을 마무리 지어본다.
이 글의 내용을 모두가 알아야 하는 것은 당연히 아니다. 오히려 쓸모 있는 영역이 절반 이하일 수 있다. 아마 거의 확실히 절반 이하일 것이다. 고로 중간중간에 충분히 생략해도 좋은 내용들이 많을 것이다. 하지만 그럼에도 이 글이 디지털 이미징 필드에 대해 충분한 커버리지를 제공해서 대략적인 지도의 역할을 할 수 있는 그런 글이길 바란다. 기억의 한 구석에 잠자고 있다가, 언젠가 불현듯 기억나 더 깊게 알아보는, 그리하여 업무에 도움이 되는 그런 글이길 바란다.