[3차원 기하학] 3D 데이터 표현 방식
3D 데이터 표현 방식 (3D Data Representation)
3D 데이터를 표현하는 방식을 분류하는 기준에는 크게 2가지가 있다.
명시적 (Explicit) 표현 vs 암시적 (Implicit) 표현
- 명시적 표현: 물체의 표면이나 부피를 점, 선, 면 등의 기하학적 요소로 직접적으로 정의한다.
- 암시적 표현: 물체의 표면을 직접 정의하지 않고, 공간상의 점이 어떤 함수를 만족할 때 그 점이 표면 위에 있다고 정의한다.
Non-Parametric 표현 vs Parametric 표현
- Non-Parametric 표현: 표면을 함수로 정의하지 않고, 점이나 면의 집합으로 정의한다.
- Parametric 표현: 표면 위의 점을 매개변수의 함수로 표현한다.
명시적 표현 (Explicit Representation)
명시적 표현은 점, 면 또는 $f(x,y)$와 같은 함수를 통해 객체의 표면을 직접 정의한다.
예를 들어, $f(x,y,z)=x^2+y^2+z^2$은 아래와 같은 저차원 파라미터 함수를 통해 나타낼 수 있다.
\[g(u,v)=(r\sin(v)\cos(u),r\sin(v)\sin(u),r\cos(v))\]즉, $u$와 $v$만 있어도 3차원 공간 상의 반지름이 $r$인 구를 정의할 수 있다.
객체 표면 위의 점을 찾기 위해서는 $u$와 $v$ 값을 무작위로 뽑아서 함수에 넣기만 하면 되기 때문에, 포인트 샘플링이 매우 쉽다는 장점이 있다.
하지만 어떤 점이 주어졌을 때, 해당 점이 표면의 내부에 존재하는지 외부에 존재하는지 판별하기 어렵다는 단점이 있다.
출처: Graph representations of 3D data for machine learning
포인트 클라우드 (Point Cloud)
Point Cloud는 3D 객체를 표현하는 가장 간단한 방식으로, 단순히 3차원 공간상에 흩어져 있는 점들의 집합이다.
기본 단위는 점 (point)이며, 각 점은 기본적으로 $x,y,z$ 좌표를 가진다. 각 점은 RGB 색상, 점이 향하고 있는 방향 (표면 법선) 등의 추가적인 데이터를 포함할 수도 있다.
장점
- 3D 스캐너, LiDAR 센서 등의 장비에서 나오는 가장 원본에 가까운 데이터 (raw data) 형태이다.
- 단순히 점들의 집합이기 때문에, 위상 (topology)이나 구조의 제약 없이 어떤 복잡한 형태의 객체든 표현할 수 있다.
단점
- 점들이 어떻게 연결되어 표면을 이루는지에 대한 정보가 전혀 없다. 이 때문에 흩어진 점들만으로는 객체의 표면과 내부를 구분하거나, 전체적인 모양을 파악하기 어렵다.
- 점들 간의 연결 정보가 없어서, 객체를 단순화하거나 표면을 부드럽게 만드는 등의 후속 작업을 직접 수행하기 어렵다.
- 스캔 방식에 따라 객체의 특정 부분에는 점이 과도하게 밀집되고, 다른 부분에는 점이 매우 적게 샘플링되는 등 샘플링 밀도가 불균형할 수 있다.
폴리곤 메시 (Polygonal Mesh)
Polygonal Mesh는 3D 객체의 표면을 작은 다각형으로 덮어 표현하는 방식이다.
기본 단위는 정점 (Vertex), 간선 (Edge), 면 (Face)이다. 정점은 3D 공간의 점이고, 간선은 두 정점을 연결하는 선, 면은 3개 이상의 간선으로 둘러싸인 면을 의미한다.
Point Cloud처럼 점의 집합을 갖는 동시에, 그 점들이 어떻게 연결되어 면을 이루는지에 대한 정보까지 포함하고 있다.
장점
- 객체의 겉표면을 정의하는 데 최적화되어 있어서, 매우 복잡하고 상세한 디테일을 표현할 수 있다.
- 정점, 간선, 면이 서로 어떻게 연결되어 있는지에 대한 정보가 명확하여, 세분화, 단순화 등 다양한 후속 작업을 수행하기에 용이하다.
- GPU가 렌더링하기에 가장 효율적인 구조이다.
단점
- Mesh를 구성하는 면의 형태나 한 정점에 연결된 이웃 정점의 수가 일정하지 않다. 이러한 불규칙성 때문에, 3D CNN처럼 규칙적인 그리드 입력을 가정하는 딥러닝 모델에는 직접 적용하기 어렵다.
Voxel
Voxel은 Volume과 Pixel의 합성어로서, 2D 이미지를 표현할 때 사용하는 픽셀 단위를 3차원 공간의 격자 단위로 확장시킨 개념이다.
기본 단위는 voxel이며, 이는 3차원 공간을 나눈 작은 정육면체 큐브 하나하나를 의미한다.
2D 픽셀이 $(x, y)$ 좌표와 색상 값을 갖는 것처럼, 3D 복셀은 $(x, y, z)$ 격자 좌표와 밀도, 색상, 재질 등의 데이터 값을 가진다.
장점
- 규칙적인 격자 구조를 가져 데이터 처리가 단순하며, 특히 3D CNN과 같은 딥러닝 모델을 직접 적용하기에 매우 적합하다.
- 물체 간의 합치기, 빼기 (Boolean operations)와 같은 부피 연산이 간단하다.
단점
- 해상도가 $N$배 증가하면 필요한 저장 공간은 $N^3$으로 늘어나기 때문에, 메모리 사용량이 매우 크다.
- 부드러운 곡면이나 정교한 세부 사항을 표현하는 데 한계가 있으며, 픽셀처럼 표면이 계단처럼 보이는 현상 (Aliasing)이 발생한다.
암시적 표현 (Implicit Representation)
객체 표면 위의 점 $(x,y,z)$를 직접 나열하는 대신, 공간상의 모든 점이 만족해야 하는 규칙 또는 함수를 정의한다.
예를 들어, 아래의 함수 하나로 구를 정의할 수 있다.
\[f(x,y,z)=x^2+y^2+z^2-1=0\]- $f(x,y,z)=0$ : 점이 표면 위에 있는 경우
- $f(x,y,z)<0$ : 점이 객체 내부에 있는 경우
- $f(x,y,z)>0$ : 점이 객체 외부에 있는 경우
객체 표면 위의 점을 찾으려면 $f(x,y,z)=0$이라는 방정식을 풀어야하기 때문에, 포인트 샘플링이 매우 어렵다는 단점이 있다.
하지만 점의 내부/외부 판별이 쉬우며, 두 함수의 합집합, 교집합 등을 간단한 논리 연산으로 만들 수 있다는 장점이 있다.
