[Tech +]3차원 영상은 어떻게 표현할까? - 다양한 모습의 3D에 대해

안녕하세요. 알비언 AR팀에서 3차원 영상처리 기술을 개발하고 있는 Layton입니다 😉 

이번 포스팅에선 3차원 영상의 정의와 대표적인 3차원 영상의 표현 방식들에 대해 소개하고 각 표현방식의 특성과 장단점, 활용처에 대해 설명하는 시간을 갖고자 합니다. 바로 시작해볼게요.



3차원 영상은 어떻게 표현할까? 

다양한 모습의 3D에 대해



최근 메타버스, AR, VR, 디지털트윈 등 3차원 영상을 이용한 다양한 서비스들이 생겨나고 있습니다. 이들을 조금 더 자세히 보면 영역별로 서로 조금씩 다른 모습의 영상을 하고 있는데, 3차원 영상이란 정확히 어떻게 정의할 수 있을까요?

3차원 영상은 3차원적(3D)인 정보, 즉 가로 x 세로 x 높이가 존재하는 정보를 영상으로 표현하는 방식을 의미합니다. 일반 디지털 사진은 사물이 눈으로 보이는 단면만을 표현하고 가로 x 세로의 2차원적(2D) 정보만 존재하는 반면, 3차원 영상의 경우, 반드시 위 3가지 축에 대한 정보를 담고 있어야 합니다.

3차원 영상을 표현하는 방법은 다양합니다. 그중 일반적으로 가장 널리 쓰이는 네 가지 데이터 구조는 깊이 지도, 포인트 군, 다각형 메쉬, 그리고 복셀 입니다. 지금부터 각각의 3차원 영상에 대한 정의와 생성 방법, 장단점, 그리고 대표적인 활용처에 대하여 소개하겠습니다.


1. 깊이 지도 (Depth map)

깊이 지도의 정의

깊이 지도는 2차원 영상에서 픽셀별로 깊이 값을 저장하여 3차원을 표현하는 자료구조입니다. 깊이 지도는 기존 2차원 사진과 같은 형태를 지만, 픽셀별로 사물의 색상 대신 촬영 당시 카메라와 사물 간의 거리를 저장하는 방식으로 3차원 정보를 담아내는 방식입니다.

컬러 사진과 대응하는 깊이 지도 (출처: Eigen and Fergus, “Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Architecture”, ICCV 2015)


위 사진은 색상 영상으로부터 깊이 지도를 추정한 예시입니다. 깊이 지도는 표현 방식의 특성상 색상 정보가 따로 없기에 눈으로 직접 보기가 어렵습니다. 따라서 보통은 제일 가까운 거리를 파란색, 중간 거리를 초록색, 제일 먼 거리를 빨간색으로 표현하여 거리감을 색으로 변환해 나타냅니다(다른 색상 표현법도 존재합니다). 


깊이 지도의 생성 방법

깊이 지도를 생성하기 위해선 카메라와 촬영 대상 간의 거리, 즉 깊이 정보를 정확하게 알아야 합니다. 깊이를 얻는 방법은 크게 두 가지가 있습니다.

첫 번째는 직접적인 측정입니다. 특수 센서가 포함된 깊이 측정용 카메라에서 특수한 빛을 발사하여, 반사되어 돌아오는 시간을 기반으로 물리적 거리를 측정합니다. 직접 스캔은 보통 산업현장이나 자율주행에서 쓰이나, 최근 아이폰 12 Pro 이후 버전에는 직접 측정용 깊이 카메라(LiDAR camera)가 탑재되어 있습니다.

두 번째는 간접적인 추정입니다. 사람이 사진만 주면 대략적 거리를 가늠할 수 있는 능력을 컴퓨터 알고리즘이 흉내 내는 방식으로 영상처리의 주요 연구 분야 중 하나입니다. 다양한 각도에서 취득한 여러 장의 색상 영상으로부터 얻는 경우도 있고, AI 기술을 활용하여 단일 색상 영상에서 깊이를 추론하는 경우도 존재합니다. 색상 영상만 있으면 가능하기에 접근성이 뛰어나지만, 직접적 측정에 비해 정확도가 떨어지고, 상대적 거리만을 알 수 있다는 한계가 있습니다.

깊이 지도의 장단점

장점: 직관적이며 후처리나 보정이 간편합니다. 깊이 지도는 3차원 공간의 정보를 2차원 영상으로 표현한 것이기에 일반 이미지와 비슷한 방식의 영상처리 기법들을 활용할 수 있습니다. 이에 대응하는 색상 영상이 있으면 이를 참고하여 깊이의 정확도를 보정하는 등의 영상처리 알고리즘들도 많이 연구되어 왔습니다.

단점: 단일 깊이 지도로는 자세한 3차원 영상을 표현하기 어렵습니다. 눈으로 보이는 한 장면에 대한 거리 정보만 담고 있어, 뒷 부분과 같이 가려진 곳에 대한 깊이 정보는 얻을 수 없습니다. 이런 한계 때문에 깊이 지도를 2.5D라고 표현하는 경우도 많습니다.

깊이 지도의 활용

깊이 지도는 거리정보가 제공되기 때문에, 증강현실에서 증강 객체가 원하는 위치에 띄워지는 데 활용할 수 있고, 상대적으로 멀고 가까움을 표현하기 때문에 자율주행 등에서 가까운 물체를 파악하는 데 사용할 수 있습니다. 또한 여러 방면에서 획득한 깊이 지도를 활용하면 3차원 실세계 물체를 가상 공간으로 옮기는 디지털 트윈 등의 응용에 사용할 수 있습니다.


2. 포인트 군(Point Cloud)

포인트 군의 정의

포인트 군(point cloud)은 컴퓨터의 가상의 3차원 공간 직접적으로 3차원 물체를 표현하는 수단 중 하나입니다. 일반적으로 가상의 점들의 집합으로 표현하는 방식이고, 각 점에 대한 색상 정보 또한 제공됩니다.

도넛 포인트 군과 유적지 포인트 군 (출처: wikipedia)


위의 두 이미지는 포인트 군의 예시 입니다. 도넛 모양에 맞춰서 점들이 마치 구름처럼 형성돼 있음을 볼 수 있습니다.


포인트 군의 생성 방법

포인트 군은 일반적으로 깊이 지도를 이용해 생성합니다. 깊이 지도에서 포인트 군이 생성되는 과정은 3단계를 거칩니다.

1단계. 우선 전용 카메라 또는 깊이 추정 기술들을 활용해 깊이 지도를 획득합니다. 이때 각 픽셀값이 해당 카메라로부터의 거리로 나타납니다.

2단계. 바늘구멍 사진기(Pinhole camera)의 원리를 이용해 각 픽셀에 찍힌 거리가 실제 3차원 공간에서 어느 곳에 위치하는지 계산합니다. 실제 계산을 위해서는 전용 카메라의 스펙(초점거리, 중앙 픽셀, 왜곡, 비대칭도)을 알아야 합니다. 실제 카메라는 제조사가 스펙을 제공하며, 가상의 카메라면 알고리즘으로 추정합니다.

3단계. 모든 픽셀의 3차원 좌표를 계산하고, 이들을 각각 한 점으로 표기한다면 모든 픽셀에 대응하는 3차원 공간의 점들로 포인트 군을 생성합니다. 만약 각 픽셀에 대응하는 색상 정보가 있다면 이 또한 대응하는 점의 색상 정보로 표현합니다.

해당 원리를 좀 더 확장해서, 여러 위치에서 취득한 깊이 지도에서 나온 포인트 군들을 하나의 큰 포인트 군으로 뭉칠 수 있습니다. 이는 촬영 당시 카메라의 위치와 자세까지 추정하여 이를 포인트 군의 좌표에 반영하면 가능합니다. 이를 이용하면 여러 위치에서 촬영한 깊이 지도에서 나온 포인트 군들이 하나로 합쳐져 더욱 정교한 포인트 군을 생성할 수 있습니다.

포인트 군의 장단점

장점: 포인트 군의 장점은 구조가 단순해서 방대한 3차원 공간을 표현하기 쉽다는 점입니다. 깊이 지도는 한 장면에 대한 3차원 정보만 표현할 수 있지만, 포인트 군으로 만들면 여러 방면에서 보이는 3차원 정보를 합쳐서 표현이 가능합니다.

단점: 표면과 정의하기 힘듭니다. 3차원 공간에 점들이 무작위로 떠 있는 형태로 나타내기 때문에 표면과 다소 어긋난 점들이 존재해도 이들이 실제 표면상의 점인지 판단하기 어렵습니다. 또한 사람이 보기 편한 수준의 해상도를 얻으려면 엄청나게 많은 점이 필요해 보여주기 용도로는 적합하지 않습니다.

포인트 군의 활용 예시

위와 같은 장/단점으로 자율주행, 토지측량, 디지털트윈 등 사람이 직접 보는 용도로 활용되기 보단 실제 3차원 공간의 특성을 분석할 필요가 있을 때 주로 쓰입니다. 사람이 눈으로 보는 게 아니기에 굳이 매끄러운 표면을 만들 필요가 없으며 포인트 군 단계에서 노이즈를 제거해 형태적 특성을 분석하는 데에 유리합니다. 비슷한 예로 현실세계(일상)의 사물을 메쉬로 만드는 과정에서 객체의 모양을 정의하는 중간 단계로 활용되기도 합니다.


3. 다각형 메쉬(Polygon mesh)

다각형 메쉬의 정의

다각형 메쉬는 다각형을 이용해 3차원 물체의 표면을 나타내는 방법입니다. 아래는 기초적인 다각형 메쉬 예시입니다.

다각형 메쉬 이미지 예시 (출처 : learn.foundry.com, 123RF)


위 그림 보면 주전자는 크고 작은 사각형으로, 공은 무수히 많은 작은 삼각형으로 이루어 진 것을 볼 수 있습니다. 위 예시와 같이, 대부분의 메쉬는 사각형 또는 삼각형을 이용해 표현됩니다. 이런 다각형 메쉬를 화면에 띄우는 과정을 렌더링이라 부르며, 일반적으로 GPU에서 해당 사물이 빛과 함께 가상의 카메라에 담기면 어떤 영상이 될지 계산하고, 그 결과 이미지를 보여주는 방식입니다.

다각형 메쉬의 생성 방법

메쉬는 크게 실제 포인트 군으로부터 생성하는 방법과 디자인을 통해 하는 방법이 있습니다.

포인트 군으로부터 생성하는 경우, 포인트 군의 공간적 특성을 분석해 표면을 정의하고, 정의한 표면에 해당하는 포인트 중 가까운 포인트들 끼리 삼각형으로 이어주는 방식을 사용합니다. 대표적인 알고리즘으로는 들로네 삼각분할(Delaunay triangulation), 볼-피벗(Ball-pivoting algorithm), 푸아송 재건 방법(Poisson surface reconstruction) 등이 있습니다.

디자인을 통해 생성하는 경우, 대부분 전용 소프트웨어들을 이용해 생성합니다. 소프트웨어들은 목적에 따라 세분화되어 있습니다. CAD 용도로는 Autodesk사의 autoCAD, Dassault Systems사의 CATIA 등이 존재하며 그래픽 디자인을 위한 용도로는 오픈소스 소프트웨어인 Blender, Autodesk사의 Maya와 3DSMax 등이 존재합니다.

다각형 메쉬의 장단점

장점: 메쉬가 가진 가장 큰 장점은 연산량 대비 표현력입니다. 표면을 다각형으로 표현하기 때문에 입체감을 살리면서 연산량이 적어 풍부하고 다양한 표현이 쉽게 가능하다는 장점이 있습니다. 또한 면이 존재하기 때문에 면에 색상정보(텍스쳐)를 입혀서 실제 사물을 더욱 실감 나게 표현 가능하다는 장점도 있습니다.

단점: 가장 큰 단점은 현실세계 물체를 기반으로는 메쉬를 만들기 어렵다는 점입니다. 현실세계 물체를 가상의 공간에 메쉬로 옮기기 위해선 매끈한 표면과 표면을 구성하는 점들을 찾아야 합니다. 또한 표면만을 구성하기 때문에 내부가 비어 있어, 절단면이나 구멍 등이 존재하면 텅 비어 있고 반대편이 보이는 등의 문제도 존재합니다.

컴퓨터 공학(특히 그래픽스와 영상처리)에선 위에서 언급한 단점들을 해결하여 더욱 고품질의 메쉬를 제작하고 보여주기 위해 메쉬화(mesh reconstruction), 은면 제거(back face culling), 광선 추적(ray tracing) 등의 다양한 연구를 통해 단점을 보완하는 기술을 개발하여 현재도 적용하고 있습니다.

다각형 메쉬의 활용

표면의 제한된 점들과 다각형 정보만으로 매끈한 외형을 표현할 수 있기에, 보통 게임 또는 애니메이션에서 3차원 모델을 표현할 때 자주 쓰입니다. 또한 CAD 모델링 등의 구체적 3차원 설계가 필요한 경우에도 쓰입니다.


자동차 메쉬와 캐드로 만들어진 주택 (출처 : Pixabay)


4. 복셀(Voxel)

복셀의 정의

복셀은 정육면체인 큐브(Cube) 형태로 3차원 정보를 표현하는 방법입니다. 이는 포인트 군 또는 다각형 메쉬처럼 표면만을 표현하는 방법이 아닌, 내부 영역까지 전체를 나타내는 구조입니다. 일종의 3차원 모자이크 구조라 이해하면 됩니다. 대표적인 예시로 게임에선 마인크래프트가 있고 현실세계에선 CT, MRI, 초음파 영상 등이 있습니다.


복셀의 예시(출처: wikipedia), 마인크래프트로 만든 복셀 건물 (출처: Flickr), CT로 촬영한 손목 영상(출처 wikipeda)


복셀의 생성 방법

가상의 복셀은 마인크래프트처럼 정육면체를 정의하고, 가상의 공간에서 원하는 방식대로 쌓아 올리는 구조로 만들 수 있습니다. 이 경우 블록쌓기 방식으로 자유롭게 생성이 가능합니다.

실세계의 복셀은 대부분 볼륨 영상으로 부터 얻어집니다. 볼륨 영상은 단층촬영(Tomography)이라는 방식을 이용하며 대부분 CT, MRI 등 의료 영상으로 볼 수 있습니다. 3차원 공간의 단면을 이미지로 촬영한 여럿의 영상을 촬영하여 합치는 방식으로 이루어집니다. 각 이미지의 픽셀을 복셀이라 가정을 하고, 이를 쌓아 올리는 구조를 생각을 하시면 이해가 쉬울 듯합니다. 의료 영상에서 단층 영상을 얻기 위해서 투과성 광선인 X선이나 초음파를 여러 방향으로 보내어 반사되는 정보를 활용하거나(CT, 초음파) 강한 자기장을 활용해 인체 내부의 조직별로 자기장에 반응하는 정도에 따른 정보를 활용하여 획득합니다(MRI).



단층촬영의 예시 (출처: wikipedia)


복셀의 장단점

장점: 포인트 군, 다각형 메쉬보다 월등하게 보다 자세한 표현이 가능합니다. 표면만을 나타내는 매쉬와 달리, 내부 정보를 전부 다 표현할 수 있어 더욱 상세하게 표현할 수 있습니다. 또한 내부 복셀의 색상과 투명도를 조절하면, 표면뿐 아니라 내부의 구조까지 원하는 수준으로 관찰이 가능하다는 큰 장점이 있습니다.

단점: 복셀의 가장 큰 단점은 데이터 양입니다. 일반적으로 표면의 정보만을 나타내는 다른 표현 방식들에 비해 복셀은 내부 정보까지 모두 담고 있어야 합니다. 따라서 작은 물체를 표현하는데도 다른 표현법 대비 압도적으로 많은 데이터 양이 요구됩니다. 그래서 일반적인 상황 보단 세밀한 내부 묘사가 필수인 영역에 한하여 쓰이곤 합니다.

복셀의 활용

게임과 의료 산업이 대표적입니다. 게임에서는, 3차원 공간의 자세한 묘사와 실감 성을 위해 마인크래프트와 같이 모든 영역을 복셀로 표현하거나 연기 같은 특수한 객체를 복셀로 표현하는 경우가 존재합니다. 다만 연산량이 너무 크기에 효율성 문제로 널리 사용되진 않습니다. 의료 영상에선 생물체의 3차원적인 내부 투과 정보들을 분석하기 위해 의료 영상(CT, MRI, 초음파)의 단층 촬영 영상들을 3차원 정보로 합칠 때 사용합니다.


마무리하며

이번 포스팅에서 3차원의 다양한 형태와 생성 방법, 활용 예시 등을 알아보았습니다. 어렵게 느껴지던 3차원 영상은 생각했던 것보다 실제 일상에 널리 활용되고 있는 걸 알 수 있지요. 앞으로 3차원 관련 서비스들에 대하여 뉴스에서 나올 때 여기서 나온 4가지 방식 중 어떤 형태의 3차원 영상을 메인으로 내세우는지 유심히 살펴보면 서비스가 이전보다 더 실감나게 느껴지지 않을까 생각이 듭니다. :)

Social Media

 official@mergerity.com