AI 기술 및 산업 분석기 #13
3D Reconstruction (3D 복원)
3D Reconstruction (3D 복원) 기술은 영상에서 객체의 실제 3D 형태를 복원하는 기술입니다. 카메라로 사진을 찍는 행위는 실제 세상의 3D 객체를 2D 평면 상에 projection(사영)시키는 행위로 3D 형태 정보가 소실됩니다. 때문에 컴퓨터는 2D 이미지 만을 보고 3D 형태를 정확하게 복원할 수 없습니다. 때문에 3D 복원을 위해서는 객체와의 거리(depth)를 추정해야 하고, 이를 위해 Stereo Matching, Structured Light, ToF(Time-of-Flight) 카메라, Laser Scanning, RGB-D 센싱 등 다양한 기술을 활용합니다.
이러한 3D 복원 기술은 로봇, 의료 영상 기술, 가상&증강 현실, 자율 주행, 지도 등 다양한 분야에서 활용되고 있습니다.
그중 대표적인 기술은 Multi-View Stereo (MVS)로 여러 개의 2D 이미지(또는 비디오 프레임)를 사용하여 3D 재구성을 하는 방법입니다. 인간의 눈이 2개이기에 눈앞의 사물과의 거리를 가늠할 수 있듯이 영상에서도 동일한 객체를 다른 시점에서 바라본다면 거리를 추정할 수 있습니다. 때문에 중첩되는 부분이 있는 다시점 이미지가 존재한다면 객체의 형태를 복원할 수 있는 것입니다. MVS가 어떤 단계로 구성되는지 살펴보고 넘어가겠습니다.
이미지 매칭(Image matching): 다수의 이미지에서 서로 대응되는 특징점(feature points)을 찾는 단계. 이러한 특징점은 이미지에서 주어진 객체를 나타내는데 사용. 대표적으로 SIFT, SURF, ORB 등의 특징점 검출 알고리즘이 사용되어 왔음.
광학 기하(Optical geometry): 이미지 사이의 광학 기하 관계를 계산하는 단계. 이를 통해 이미지들 간의 상대적인 위치, 회전 및 크기 변환에 대한 정보를 얻을 수 있음. 이 단계에서는 카메라의 내부 및 외부 파라미터를 추정하고, 카메라들 간의 상대적인 위치 및 방향을 파악.
깊이 추정(Depth estimation): 이미지에서 각 픽셀의 깊이(거리)를 추정하는 단계. 대응되는 이미지들 간의 특징점 위치를 사용하여 삼각측량(triangulation)을 수행하거나, 스테레오 매칭(stereo matching) 알고리즘을 활용하여 깊이를 추정.
3D 모델 생성: 깊이 정보를 기반으로 3D 모델을 생성하는 단계. 주어진 이미지에서 추정된 깊이 값을 사용하여 점 또는 포인트 클라우드(point cloud)를 생성. 이 포인트 클라우드는 3D 객체의 표면을 근사화한 것으로 볼 수 있음.
최근에는 이러한 과정 중 일부를 딥러닝으로 대체하거나 전체 과정을 end-to-end로 학습시키는 방법을 사용하는 추세입니다. 3D vision 관련 딥러닝은 학습 데이터를 만들기도 어렵고 추출하고자 하는 결과가 3D 데이터이기 때문에 딥러닝으로 해결하기에 꽤 어려운 과제였지만, 최근에는 혁신적인 결과를 이끌어내는 연구가 많이 소개되었습니다.
물론 한 장의 사진만으로 3D 형태를 복원하는 연구도 진행되고 있습니다. 인간도 사실 한쪽 눈을 감고 어떤 사물을 바라보더라도 3D 모양을 추측할 수 있습니다. 이는 이미 알고 있는 사물의 정보와 경험을 통해 3D 형태를 추측하는 것입니다. 간단히 말하면 눈앞에 '컵'으로 보이는 물체가 있다면 뒷면이 보이지 않더라도 어느 정도의 볼륨감을 가지고 있는지 추측할 수 있습니다. 이런 암시적인 정보를 기계에도 학습시켜서 사람의 정면 이미지 한 장으로 사람의 형태를 복원하는 연구 분야가 있습니다. 물론 복원 정확도가 높진 않습니다.
객체 복원
가장 간단한 3D 복원은 객체를 복원하는 기술입니다. 보통 턴테이블에 객체를 올려두고 카메라는 고정시켜둔 채 테이블을 회전시키면서 촬영하거나 객체는 고정시켜두고 카메라로 객체 주변을 돌면서 촬영해서 3D 복원을 할 수 있습니다.
이러한 객체 복원 기술은 문화재를 3D 모델링하거나 게임에 사용될 캐릭터나 사물을 모델링하는 데에 사용할 수 있습니다. 문화재를 3D 복원하고 손상된 부분은 3D 모델링 작업자가 수정해서 3D 프린팅을 하면 문화재를 복원할 수 있습니다. 게임에 사용되는 3D 모델들은 작업자들이 3D 형태를 만들고 색깔을 입히는 등의 작업을 하게 되는데 시간이 많이 소요됩니다. 하지만 3D 복원 기술을 사용해서 3D 모델의 틀을 만들어두면 수정 작업 만을 거쳐서 그대로 메타버스나 게임 등에 적용할 수 있게 됩니다.
신체 복원
얼굴 등의 신체 복원은 객체 복원과 원리는 똑같지만, 신체는 굴곡과 주름이 많고 촬영하면서 사람이 조금씩 움직일 수도 있기 때문에 더욱 까다로운 기술입니다. 얼굴을 복원하여 3D 마스크를 만들거나 나랑 똑같이 생긴 가상의 아바타나 피규어를 만드는 데에 활용할 수 있습니다.
공간 복원
공간 복원은 하나의 객체가 아닌 방 안이나 지형을 복원하는 기술입니다. 집 내부를 복원해서 가상 인테리어나 가구 배치 등에 활용하는 애플리케이션이 이미 사용되고 있고 박물관이나 문화재 내부를 복원해서 VR 체험을 할 수도 있습니다. 또한 로봇 청소기의 경우 SLAM 기술을 활용하여 지도를 그리고 본인의 위치와 주행 경로를 파악하면서 청소를 합니다.
드론이나 항공기로 촬영한 지형 영상으로 건물과 지형을 복원하여 3D 정밀 지도를 구축할 수도 있습니다. 카카오맵은 3D 스카이뷰 서비스를 일부 지역에서 제공하고 있고, 네이버랩스는 서울시 3D 모델 지도를 제공합니다. 곡률이 있는 지구 표면의 굉장히 넓은 지역을 복원해야 하고 복원된 지형을 지도에 매핑시켜야 하기 때문에 고려해야 할 사항이 많은 기술입니다.
3D 컴퓨터비전이나 그래픽스 분야에도 정말 다양한 기술들이 존재하지만, 그중에서도 3D 복원은 대표적인 기술 중 하나입니다. 영상에서 정확한 정보를 추출하기 위해서는 결국 3D 정보를 활용해야 합니다. 또한 3D 복원과 MVS 기술은 자율주행, 로보틱스, 가상&증강 현실, 도시 계획, 의료, 영상&게임 분야에서 다양하게 활용될 수 있습니다. 까다로운 기술이지만 다양한 분야로의 활용 가능성이 크기에 앞으로의 발전이 더욱 기대되는 기술이라 생각합니다.