Booil Jung

Open3D 라이브러리 학습서

현대 기술 환경은 3차원으로 구성되어 있으며, 물리적 세계와 상호작용하거나 이를 시뮬레이션하는 시스템은 필연적으로 3차원(3D) 데이터를 처리해야 한다. 이러한 데이터는 LiDAR, 깊이 카메라와 같은 센서 기술의 발전과 3D 재구성 및 모델링 소프트웨어의 보급으로 인해 폭발적으로 증가하고 있다.1 이 데이터들은 주로 포인트 클라우드(Point Cloud), 메시(Mesh), RGB-D 이미지 등 다양한 형태로 존재하며, 이를 효과적으로 다루기 위한 강력하고 효율적인 도구의 필요성이 대두되었다.1

Open3D는 이러한 시대적 요구에 부응하기 위해 탄생한 오픈소스 라이브러리로, 3D 데이터 관련 소프트웨어의 신속한 개발을 지원하는 것을 핵심 목표로 삼는다.1 과거의 3D 처리 라이브러리들이 종종 복잡하고 무거운 의존성 구조를 가져 설치와 사용에 어려움이 있었던 반면, Open3D는 처음부터 간결하고 신중하게 고려된 최소한의 의존성 집합으로 설계되었다.1 이러한 설계 철학은 다양한 플랫폼에서 최소한의 노력으로 소스 코드를 컴파일하고 라이브러리를 구축할 수 있게 하여 개발자의 진입 장벽을 크게 낮추었다.1

Open3D는 단순히 개별 알고리즘의 집합이 아니라, 하나의 통합된 생태계를 구성한다. 이 생태계는 고성능 연산을 담당하는 Open3D 코어 라이브러리, 3D 데이터 처리를 위한 머신러닝 도구를 제공하는 Open3D-ML, 그리고 복잡한 3D 데이터를 직관적으로 시각화하고 분석할 수 있는 독립형 Open3D-Viewer 애플리케이션으로 이루어져 있다.5 이 구성 요소들은 상호 유기적으로 연동하여 데이터 처리부터 분석, 시각화, 그리고 머신러닝 적용에 이르는 전체 워크플로우를 지원한다.

Open3D가 스스로를 “현대적 라이브러리(A Modern Library)”로 칭하는 것은 그 설계 철학에 깊이 뿌리내리고 있다. 이는 단순히 최신 기술을 사용했다는 의미를 넘어, 개발의 용이성, 유지보수의 편리성, 그리고 성능의 극대화를 지향하는 포괄적인 개념이다. 간결한 의존성 구조, 여러 플랫폼 간의 용이한 컴파일 지원, 일관성 있는 코드 스타일, 그리고 명확한 코드 리뷰 메커니즘은 모두 이러한 현대성을 구성하는 핵심 요소들이다.1

라이브러리의 아키텍처는 고도로 최적화되고 병렬화된 백엔드와 사용자가 쉽게 접근하여 활용할 수 있는 유연한 프론트엔드로 명확히 구분된다.1 백엔드는 고성능 연산이 필요한 핵심 알고리즘들을 효율적으로 처리하며, 프론트엔드는 이러한 강력한 기능들을 직관적인 인터페이스를 통해 제공한다. 이러한 구조적 분리는 고성능 연산의 보장과 신속한 프로토타이핑이라는 두 마리 토끼를 동시에 잡기 위한 전략적 설계의 결과물이다. 이러한 접근 방식은 성공적인 컴퓨터 비전 및 딥러닝 라이브러리들의 선례를 따른 것으로, 복잡한 연산은 백그라운드에서 효율적으로 처리하면서 사용자는 상위 수준의 개념에 집중할 수 있게 한다.1

Open3D의 핵심 기능은 3D 데이터 처리의 전 과정을 포괄하도록 설계되었다. 주요 기능은 다음과 같다 3:

이러한 설계 철학과 포괄적인 기능은 Open3D가 단순한 툴킷을 넘어, 3D 데이터 처리 분야의 연구와 개발을 위한 강력한 플랫폼으로 자리매김하게 하는 원동력이다. 특히, 복잡한 의존성 문제를 회피한 간결한 설계는 라이브러리의 빠른 채택과 확산에 결정적인 역할을 했다. 이는 패키지 관리 시스템이 상대적으로 취약한 운영체제 환경에서도 개발자들이 손쉽게 라이브러리를 도입하고 활용할 수 있게 만들어, 학계와 산업계 모두에서 Open3D가 표준 도구 중 하나로 빠르게 부상하는 기반이 되었다.1

3차원 세계를 디지털 형태로 표현하고 조작하기 위해서는 효율적인 데이터 구조가 필수적이다. Open3D는 이러한 목적을 위해 세 가지 핵심적인 기하학적 데이터 구조, 즉 포인트 클라우드, 삼각형 메시, 그리고 RGB-D 이미지를 제공한다.1 이들은 각각 다른 수준의 정보 추상화를 나타내며, 센서로부터 얻은 원시 데이터에서부터 완전한 기하학적 모델에 이르기까지 데이터 처리 파이프라인의 각 단계를 대표한다.

포인트 클라우드는 3차원 공간상의 수많은 점(point)들의 집합으로 정의된다. 이는 객체의 표면을 이산적인 형태로 표현하는 가장 근본적인 3D 데이터 구조이다.8 포인트 클라우드의 가장 큰 특징은 각 점이 독립적으로 존재하며, 점들 사이의 연결성이나 위상(topology) 정보가 명시적으로 포함되지 않는다는 점이다.11 이는 LiDAR 스캐너나 깊이 카메라로부터 직접 얻어지는 원시 데이터의 형태와 가장 가깝다.

Open3D의 PointCloud 구조는 다음과 같은 핵심 요소들로 구성된다 1:

포인트 클라우드는 구조가 단순하고 원시 데이터를 직접 표현할 수 있다는 장점이 있지만, 표면이 명시적으로 정의되지 않아 렌더링이나 기하학적 분석에 한계가 있다. 따라서 많은 경우, 포인트 클라우드는 법선 벡터 추정이나 표면 재구성 같은 후속 처리 단계를 거쳐 더 정교한 데이터 구조로 변환된다.

삼각형 메시는 포인트 클라우드에서 한 단계 더 나아가, 점들을 삼각형 면으로 연결하여 객체의 표면을 연속적인 형태로 표현하는 데이터 구조이다.14 즉, 포인트 클라우드가 가진 기하학적 위치 정보에 연결성이라는 위상 정보를 명시적으로 추가한 것이다. 이를 통해 불연속적인 점의 집합이 비로소 하나의 완전한 ‘면(surface)’으로 정의될 수 있다.

Open3D의 TriangleMesh 구조는 다음과 같은 핵심 요소로 구성된다 1:

이 외에도 TriangleMesh는 표면의 특성을 더욱 풍부하게 표현하기 위해 다음과 같은 부가적인 데이터를 포함할 수 있다 1:

메시는 연속적인 표면을 표현하므로 렌더링, 물리 시뮬레이션, CAD 응용 분야에 매우 적합하다. 하지만 포인트 클라우드로부터 메시를 생성하는 과정(표면 재구성)은 계산 비용이 높고 알고리즘적으로 복잡할 수 있다.

RGB-D 이미지는 2차원 그리드 구조를 유지하면서 3차원 정보를 효율적으로 담고 있는 독특한 데이터 구조이다. 이는 동일한 시점에서 동일한 해상도로 촬영된 한 쌍의 컬러(RGB) 이미지와 깊이(Depth) 이미지로 구성된다.16 깊이 카메라는 각 픽셀에 대해 색상 정보뿐만 아니라 카메라로부터 해당 지점까지의 거리, 즉 깊이 값을 함께 측정하는데, 이 두 정보를 결합한 것이 바로 RGB-D 이미지이다.

RGBDImage 구조는 다음과 같이 3D 정보를 표현한다 16:

RGB-D 이미지를 포인트 클라우드로 변환하는 원리는 카메라의 기하학적 모델, 특히 핀홀 카메라 모델(Pinhole Camera Model)에 기반한다. 카메라의 내부 파라미터(intrinsic parameters)인 초점 거리($f_x, f_y$)와 주점($c_x, c_y$)을 알고 있다면, 이미지의 2D 픽셀 좌표($u, v$)와 해당 픽셀의 깊이 값($d$)을 사용하여 3D 공간상의 좌표($X, Y, Z$)로 역투영(unprojection)할 수 있다.16 이 변환 과정은 다음 수식으로 표현된다: \(X = \frac{(u - c_x) \times d}{f_x} \\ Y = \frac{(v - c_y) \times d}{f_y} \\ Z = d\) 이 계산을 이미지의 모든 픽셀에 대해 수행하면, 조밀한 3D 포인트 클라우드가 생성된다. 이처럼 RGB-D 이미지는 2D 이미지 처리 기술과 3D 공간 정보를 동시에 활용할 수 있어 로봇 비전, 실시간 SLAM(Simultaneous Localization and Mapping), 장면 이해(scene understanding) 등의 분야에서 매우 유용하게 사용된다.

이 세 가지 데이터 구조는 정보의 추상화 수준에 따라 계층을 이룬다. RGB-D 이미지는 센서에 가장 가까운 원시 데이터 형태이며, 시점에 강하게 의존한다. 포인트 클라우드는 이러한 시점 의존성에서 벗어나 객체 중심의 3D 표현을 시작하는 단계이다. 마지막으로 삼각형 메시는 여기에 표면의 연결성 정보를 더하여 완전한 기하학적 모델을 구축한다. 어떤 데이터 구조를 선택하고 변환하느냐는 전체 3D 처리 워크플로우의 효율성과 최종 결과물의 품질을 결정하는 중요한 요소이며, Open3D가 이 세 가지 핵심 구조를 모두 지원하는 것은 다양한 응용 분야의 요구사항을 포괄하려는 전략적 의도를 보여준다.

다음 표는 세 가지 핵심 3D 데이터 구조의 특징을 요약하여 비교한다.

특징 포인트 클라우드 (Point Cloud) 삼각형 메시 (TriangleMesh) RGB-D 이미지
핵심 요소 점(좌표, 색상, 법선 등) 정점(Vertices), 삼각형(Triangles) 픽셀(색상), 픽셀(깊이)
위상 정보 없음 (점들은 독립적) 있음 (정점 간 연결성) 암시적 (2D 그리드 구조)
데이터 형태 비구조적(Unstructured) 구조적(Structured) 구조적(Structured, 2D Grid)
장점 원시 데이터 표현, 희소 데이터 처리 용이 연속적인 표면 표현, 렌더링/시뮬레이션 적합 조밀한 3D 정보, 2D-3D 동시 활용
단점 표면 정보 부재, 구멍/밀도 불균일 생성 비용 높음, 복잡한 위상 표현 어려움 단일 시점, 폐색(Occlusion) 문제
주요 응용 3D 스캐닝, LiDAR 데이터 처리, 정합 3D 모델링, CAD, 시각화, 표면 재구성 로봇 비전, SLAM, 장면 이해

Open3D는 다양한 3D 데이터 생성 도구 및 응용 소프트웨어와의 원활한 상호 운용성을 보장하기 위해 폭넓은 파일 형식에 대한 입출력(I/O) 기능을 지원한다. 이는 Open3D를 독립적인 연구 도구를 넘어, 복잡한 3D 데이터 생태계의 중심 허브로 기능하게 하는 중요한 요소이다. 파일 형식의 지원 범위는 단순한 좌표 목록부터 풍부한 장면 정보를 담은 현대적인 형식까지 아우른다.

Open3D가 지원하는 파일 형식은 저장하는 데이터의 종류에 따라 크게 포인트 클라우드, 메시, 그리고 이미지 형식으로 분류할 수 있다.

포인트 클라우드 데이터는 주로 점의 기하학적 위치와 부가 속성(색상, 법선 등)을 저장하는 데 중점을 둔다.

메시 형식은 정점 정보와 더불어 이들을 연결하는 면(face) 정보를 포함하여 객체의 표면을 정의한다.

Open3D는 텍스처 매핑이나 RGB-D 데이터의 컬러 채널을 처리하기 위해 jpg, png와 같은 표준 이미지 파일 형식을 지원한다.20 이를 통해 3D 데이터와 2D 이미지 데이터를 유기적으로 결합하여 처리할 수 있다.

Open3D의 io 모듈은 이러한 다양한 파일 형식을 읽고 쓰는 함수들을 제공한다. 예를 들어 read_point_cloudwrite_triangle_mesh와 같은 함수들은 파일 확장자를 기반으로 형식을 자동으로 유추하지만, 명시적으로 형식을 지정할 수도 있다.20 이러한 포괄적인 파일 지원은 Open3D가 다양한 CAD 소프트웨어, 3D 모델링 도구, 게임 엔진, 시뮬레이션 환경 등과 데이터를 원활하게 교환하는 ‘허브’ 역할을 수행하게 하며, 이는 라이브러리의 산업적 적용 가능성과 생태계 확장성을 크게 향상시키는 핵심적인 특징이다. 특히 gltf와 같은 현대적인 형식을 적극적으로 지원하는 것은 Open3D가 클라우드 기반 3D 서비스나 웹, AR/VR과 같은 미래 지향적인 응용 분야와의 연동을 강화하려는 전략적 방향성을 명확히 보여준다.

다음 표는 Open3D가 지원하는 주요 파일 형식의 특징을 요약한다.

데이터 유형 확장자 형식 설명 주요 특징
포인트 클라우드 .xyz, .xyzn, .xyzrgb ASCII 텍스트 기반, 한 줄에 한 점 단순, 가독성 높음, 파일 크기 큼 21
  .pcd Point Cloud Library 표준 형식 헤더 정보 포함, ASCII/이진 지원, 유연함 20
  .ply 다각형 파일 형식 정점/면 속성 정의 가능, 메시/포인트 클라우드 겸용 21
메시 .stl 3D 프린팅 표준 형식 삼각형 기하학만 저장 (색상/텍스처 X) 23
  .obj 3D 모델링 교환 형식 기하학, 재질, 텍스처 맵핑 정보 포함 24
  .gltf/.glb 3D 전송 표준 형식 PBR 재질, 애니메이션 등 전체 장면 기술 가능, 효율적 23

원시 3D 데이터는 종종 방대한 양의 정보를 포함하거나, 센서 오류로 인한 노이즈를 동반하며, 후속 분석에 필요한 기하학적 속성이 결여되어 있다. 따라서 고급 알고리즘을 적용하기에 앞서 데이터를 정제하고 의미 있는 형태로 가공하는 전처리 과정이 필수적이다. Open3D는 이러한 목적을 위해 다운샘플링, 이상치 제거, 법선 벡터 추정 등 핵심적인 기본 처리 알고리즘들을 제공한다. 이 알고리즘들은 단순히 데이터를 변환하는 기능을 넘어, ‘원시 데이터’에서 ‘정제된 데이터’로, 나아가 ‘의미 있는 데이터’로 나아가는 논리적인 파이프라인을 구성한다.

다운샘플링은 포인트 클라우드의 전체적인 형태는 유지하면서 점의 개수를 줄이는 과정이다. 이는 주로 방대한 데이터로 인한 계산 부하를 줄여 처리 속도를 높이고, 불균일한 데이터 밀도를 균일하게 만들어 알고리즘의 안정성을 향상시키기 위해 수행된다.26 Open3D는 데이터의 특성과 처리 목적에 따라 선택할 수 있는 다양한 다운샘플링 방법을 제공한다.

이러한 다운샘플링 기법들 사이에는 속도와 형상 보존 능력 간의 명백한 트레이드오프가 존재한다. 사용자는 처리 속도가 중요한지, 아니면 기하학적 디테일을 최대한 보존하는 것이 중요한지에 따라 적절한 알고리즘을 선택해야 한다.

3D 스캐닝 과정에서 발생하는 센서 측정 오류나 빛의 난반사 등은 주변 점들과 동떨어진 위치에 존재하는 노이즈 포인트, 즉 이상치(outlier)를 생성한다. 이러한 이상치들은 법선 벡터 추정이나 표면 정합과 같은 후속 처리의 정확도를 심각하게 저하시킬 수 있으므로, 반드시 제거해야 한다.32

포인트 클라우드는 점들의 위치 정보만을 가질 뿐, 각 점이 어떤 방향의 표면에 속하는지에 대한 정보는 없다. 법선 벡터 추정은 이처럼 방향 정보가 없는 각 점에 대해, 그 점을 포함하는 국소적인 표면의 방향을 나타내는 단위 벡터를 계산하는 과정이다.38 추정된 법선은 사실적인 렌더링뿐만 아니라 많은 고급 알고리즘의 성능에 결정적인 영향을 미친다. Open3D는 주성분 분석(PCA)에 기반한 견고한 법선 추정 방법을 제공한다.

알고리즘의 원리는 국소적인 평면을 근사하는 과정으로 요약할 수 있다 40:

  1. 이웃 탐색: 법선을 추정하고자 하는 기준점 p를 중심으로, 특정 반경 내에 있거나 가장 가까운 k개의 이웃 점들을 찾는다. 이 이웃 점들이 p 주변의 국소 표면을 근사하는 샘플이 된다.
  2. 공분산 행렬 계산: 기준점 p와 그 이웃 점들로 구성된 점 집합의 3D 좌표에 대한 3x3 공분산 행렬을 계산한다. 이 행렬은 점들이 3차원 공간에서 어떤 방향으로 퍼져 있는지를 나타낸다.
  3. 고유값 분해 (주성분 분석): 계산된 공분산 행렬에 대해 고유값 분해(eigenvalue decomposition)를 수행한다. 그 결과로 3개의 고유값($\lambda_0 \le \lambda_1 \le \lambda_2$)과 그에 대응하는 3개의 직교하는 고유 벡터($v_0, v_1, v_2$)를 얻는다. 이 고유 벡터들은 점 분포의 주축(principal axes)을 형성한다.
  4. 법선 결정: 가장 작은 고유값($\lambda_0$)에 해당하는 고유 벡터($v_0$)는 점들의 분산이 가장 작은 방향, 즉 국소적으로 피팅된 평면의 법선 방향과 일치한다. 따라서 이 고유 벡터가 기준점 p의 법선 벡터로 추정된다.42
  5. 방향 일관성 확보: PCA를 통해 계산된 법선 벡터의 방향은 모호하다(예: $+v_0$와 $-v_0$ 모두 유효한 해). 이로 인해 전체 포인트 클라우드에서 법선의 방향이 일관되지 않을 수 있다. 이 문제를 해결하기 위해, 모든 법선 벡터가 특정 시점(viewpoint)을 향하도록 방향을 일관되게 정렬하는 후처리 과정이 종종 필요하다.40

이러한 기본 처리 알고리즘들의 품질과 성능은 전체 3D 파이프라인의 성패를 좌우한다. 예를 들어, 부정확하게 추정된 법선은 표면 재구성 알고리즘의 실패로 직결되며, 미흡하게 제거된 이상치는 정합 알고리즘의 오차를 증폭시킨다. 따라서 Open3D가 견고하고 효율적인 기본 알고리즘들을 제공하는 것은 사용자가 더 복잡하고 창의적인 상위 애플리케이션 개발에 집중할 수 있도록 하는 중요한 기반 시설을 제공하는 것과 같다.

3D 데이터 처리에서 시각화는 단순히 최종 결과를 확인하는 단계를 넘어, 데이터의 특성을 탐색하고, 알고리즘의 작동 방식을 이해하며, 처리 과정 중 발생하는 문제를 디버깅하는 데 필수적인 역할을 수행한다. Open3D는 이러한 목적을 위해 강력하고 직관적인 상호작용 시각화 도구를 제공한다. 이는 수동적인 결과 확인을 넘어, 사용자가 데이터와 능동적으로 상호작용하며 분석을 수행하는 탐색적 데이터 분석(Exploratory Data Analysis) 환경을 구현한다.

Open3D의 시각화 엔진은 다양한 종류의 3D 데이터를 통합적으로 렌더링하고, 사실적인 표현을 통해 깊이 있는 분석을 지원하도록 설계되었다.

Open3D 뷰어는 사용자가 데이터를 다각도에서 탐색하고 분석할 수 있도록 풍부한 상호작용 기능을 제공한다. 이러한 기능들은 마우스와 키보드를 통해 직관적으로 제어할 수 있다.

이처럼 Open3D의 시각화 기능은 단순한 뷰어를 넘어, 데이터 탐색, 분석, 디버깅을 위한 통합된 상호작용 환경을 제공한다. 이는 3D 알고리즘의 추상적인 작동 원리를 직관적으로 이해하게 돕고, 빠른 피드백 루프를 통해 개발 효율성을 극대화함으로써 Open3D를 전문가뿐만 아니라 입문자에게도 매력적인 도구로 만들어준다.

기본적인 데이터 전처리를 마친 후, 3D 데이터는 종종 더 복잡한 목표를 달성하기 위한 고급 처리 파이프라인을 거치게 된다. Open3D는 이러한 고급 작업을 위해 두 가지 핵심적인 기능, 즉 여러 데이터 조각을 하나로 합치는 표면 정합(Surface Alignment)과 불완전한 포인트 데이터로부터 완전한 표면 모델을 생성하는 표면 재구성(Surface Reconstruction)을 위한 강력한 알고리즘들을 제공한다. 이 기능들은 Open3D의 개별 알고리즘들이 유기적으로 결합하여 하나의 완전한 워크플로우를 형성하는 대표적인 예시이다.

표면 정합은 서로 다른 좌표계에서 획득된 두 개 이상의 포인트 클라우드를 하나의 일관된 좌표계로 정렬하는 과정이다. 이는 3D 스캐너로 객체의 여러 부분을 나누어 스캔한 뒤, 이 조각들을 합쳐 완전한 3D 모델을 만드는 것과 같은 작업에 필수적이다.47 Open3D는 이 분야에서 가장 널리 알려진 알고리즘인 ICP(Iterative Closest Point)를 핵심 기능으로 제공한다.

ICP는 이름에서 알 수 있듯이, 최적의 정렬 상태를 찾기 위해 반복적인 계산을 수행하는 ‘국소 정합(local registration)’ 알고리즘이다. 따라서 성공적인 결과를 얻기 위해서는 두 포인트 클라우드가 어느 정도 근접하게 정렬된 초기 상태가 필요하며, 이 초기 정렬은 보통 전역 정합(global registration)과 같은 다른 방법을 통해 얻어진다.49 ICP 알고리즘의 핵심 원리는 다음과 같은 단계로 구성된다 47:

  1. 대응점 탐색 (Correspondence Search): 움직이는 소스(source) 포인트 클라우드의 각 점에 대해, 고정된 타겟(target) 포인트 클라우드에서 가장 가까운 점을 찾아 대응점 쌍(corresponding pair)을 구성한다.
  2. 오차 최소화 (Error Minimization): 1단계에서 찾은 모든 대응점 쌍 간의 오차를 최소화하는 최적의 강체 변환(rigid transformation), 즉 회전(Rotation) 행렬과 이동(Translation) 벡터를 계산한다.
  3. 변환 적용 및 반복 (Transformation and Iteration): 2단계에서 계산된 변환을 소스 포인트 클라우드에 적용하여 위치를 업데이트한다. 그 후, 1단계와 2단계를 다시 수행한다. 이 과정은 오차가 특정 임계값 이하로 줄어들거나 최대 반복 횟수에 도달할 때까지 계속된다.

Open3D는 오차를 정의하고 최소화하는 방식에 따라 여러 ICP 변형을 지원하며, 그 중 가장 대표적인 것은 다음과 같다.

ICP 정합의 품질을 정량적으로 평가하기 위해 Open3D는 두 가지 주요 척도를 제공한다 49:

표면 재구성은 연결성 정보가 없는 비구조적인 포인트 클라우드로부터 위상 정보를 가진 연속적인 삼각형 메시 표면을 생성하는 과정이다.51 Open3D는 이 목적을 위해 서로 다른 철학을 가진 두 가지 대표적인 알고리즘, Ball-Pivoting과 Poisson 표면 재구성을 제공한다.

Ball-Pivoting과 Poisson 재구성의 선택은 ‘데이터 충실도(fidelity)’와 ‘모델 강건성(robustness)’ 사이의 근본적인 트레이드오프를 보여준다. 전자는 원본 데이터를 최대한 보존하려 하지만 노이즈에 취약하고, 후자는 수학적 모델의 강건성을 우선하여 노이즈를 완화하고 완벽한 모델을 만들지만 원본 데이터를 일부 변형시킨다. Open3D는 이 두 가지 상반된 철학의 알고리즘을 모두 제공함으로써, 사용자가 최종 목표에 따라 최적의 방법을 선택할 수 있도록 한다.

다음 표는 두 표면 재구성 알고리즘의 핵심적인 차이점을 비교한다.

구분 Ball-Pivoting 알고리즘 Poisson 표면 재구성 알고리즘
기본 원리 기하학적 (가상의 공 회전) 수학적 (푸아송 방정식 풀이)
접근 방식 국소적, 영역 확장 (Local, Region-growing) 전역적, 암시적 함수 (Global, Implicit)
입력 요구사항 포인트 클라우드, 법선 벡터 포인트 클라우드, 법선 벡터
출력 특성 보간(Interpolating), 열린 메시 가능 근사(Approximating), 수밀(Watertight)
장점 원본 데이터 디테일 보존, 직관적 원리 55 노이즈에 강건함, 구멍 자동 메움 55
단점 노이즈/밀도 불균일에 취약, 구멍 발생 가능 56 날카로운 특징 뭉개짐, 원본 데이터 변형 55
적합한 데이터 깨끗하고 밀도가 균일한 스캔 데이터 노이즈가 많거나 일부가 누락된 데이터

전통적인 기하학 기반 알고리즘이 특정 형태(평면, 원기둥 등)를 감지하는 데 효과적이라면, 현대의 3D 데이터 처리에서는 ‘자동차’, ‘보행자’, ‘건물’과 같이 복잡하고 다양한 형태의 객체를 의미론적으로 이해하는 능력이 점점 더 중요해지고 있다. 이러한 과제는 데이터로부터 직접 특징을 학습하는 머신러닝, 특히 딥러닝 방법론의 등장을 촉발했다. Open3D는 이러한 패러다임 전환에 발맞추어, 3D 머신러닝 작업을 위한 확장 라이브러리인 Open3D-ML을 제공한다.5

Open3D-ML은 단순히 최신 딥러닝 모델의 구현체 모음이 아니다. 이는 데이터셋 로더, 데이터 증강(augmentation), 3D 딥러닝에 특화된 연산(operations), 그리고 학습 및 추론 파이프라인까지 포함하는 포괄적인 프레임워크이다.62 이를 통해 사용자는 Open3D 코어 라이브러리의 강력한 기하학 처리 기능으로 데이터를 전처리한 후, 그 결과를 Open3D-ML 파이프라인에 매끄럽게 연결하여 모델을 학습하고 평가하는 통합된 워크플로우를 경험할 수 있다. 이 라이브러리는 3D 객체 탐지와 3D 시맨틱 분할이라는 두 가지 핵심 과제를 중심으로 구성되어 있다.

3D 객체 탐지는 주어진 포인트 클라우드 내에서 특정 의미를 가지는 객체(예: 자동차, 보행자, 자전거)의 인스턴스를 찾아내고, 각 인스턴스의 위치, 크기, 그리고 방향을 나타내는 3차원 경계 상자(3D Bounding Box)로 정확하게 지역화(localization)하는 것을 목표로 한다.64 이는 자율 주행 차량이 주변의 다른 차량이나 보행자를 인식하고 거리를 측정하는 것과 같은 응용에 필수적인 기술이다.

3D 객체 탐지의 가장 큰 기술적 과제는 포인트 클라우드 데이터의 고유한 특성에서 비롯된다. 포인트 클라우드는 2D 이미지와 달리 정형화된 그리드 구조가 없고, 점들의 순서가 의미가 없으며(unordered), 데이터의 밀도가 공간적으로 매우 불균일하고 희소(sparse)하다.66 이러한 특성 때문에 2D 이미지 처리에 성공적으로 사용된 표준적인 컨볼루션 신경망(CNN)을 직접 적용하기 어렵다. 이 문제를 해결하기 위해 다양한 접근법이 제안되었다.

Open3D-ML은 PointPillars, PointRCNN 등 산업계와 학계에서 널리 사용되는 최신 3D 객체 탐지 모델들을 제공하며, KITTI, NuScenes, Waymo와 같은 표준 벤치마크 데이터셋을 쉽게 로드하고 처리할 수 있는 파이프라인을 갖추고 있어 연구 및 개발을 가속화한다.62

3D 시맨틱 분할은 3D 장면 이해(scene understanding)의 또 다른 핵심 과제로, 포인트 클라우드를 구성하는 모든 점 각각에 대해 미리 정의된 의미론적 레이블(semantic label, 예: 도로, 건물, 식생, 하늘)을 할당하는 것을 목표로 한다.70 객체 탐지가 ‘어디에 무엇이 있는지’를 찾는다면, 시맨틱 분할은 ‘모든 지점이 무엇인지’를 분류하여 장면에 대한 훨씬 더 조밀하고 상세한 이해를 제공한다. 이는 자율 주행 차량이 주행 가능한 도로 영역을 식별하거나, 로봇이 작업 환경의 구조를 파악하는 데 사용된다.

객체 탐지와의 가장 큰 차이점은 개별 객체 인스턴스를 구분하지 않고, 동일한 클래스에 속하는 모든 점에 동일한 레이블을 부여한다는 점이다. 예를 들어, 도로 위에 자동차가 세 대 있더라도 시맨틱 분할의 결과에서는 모든 자동차 점들이 단순히 ‘자동차’라는 하나의 클래스로 분류된다.

주요 접근법은 객체 탐지와 유사하게 포인트 클라우드 데이터를 처리하는 방식에 따라 나뉜다. Point-based 접근법(예: RandLANet, KPFCNN)은 각 점의 국소적 기하학 구조를 효율적으로 학습하는 데 중점을 두며, Voxel-based 접근법(예: SparseConvUnet)은 희소한 3D 데이터에 효율적인 희소 컨볼루션(sparse convolution)을 사용하여 계산량을 줄인다.

Open3D-ML은 이러한 최신 시맨틱 분할 모델들을 지원하며, S3DIS, SemanticKITTI, ParisLille3D 등 실내 및 실외 대규모 장면에 대한 표준 데이터셋을 처리하는 파이프라인을 제공하여 사용자가 복잡한 설정 없이도 모델을 학습하고 평가할 수 있도록 돕는다.62

Open3D-ML을 통해 3D 머신러닝 기능을 통합함으로써, Open3D는 단순한 ‘3D 데이터 처리 라이브러리’를 넘어 ‘3D 인공지능 플랫폼’으로 진화하고 있다. 이는 전통적인 기하학적 접근법과 최신 딥러닝 접근법을 하나의 프레임워크 안에서 결합할 수 있게 하여, 자율 주행, 로보틱스, AR과 같은 고도의 3D 장면 이해가 필수적인 미래 산업에서 Open3D가 핵심적인 역할을 수행할 수 있는 강력한 기반을 마련한다.

Open3D가 제공하는 포괄적인 데이터 구조, 기본 및 고급 처리 알고리즘, 그리고 머신러닝 기능들은 다양한 산업 및 연구 분야에서 실제 세계의 복잡한 문제들을 해결하는 데 활용되고 있다. Open3D의 기능들은 데이터 획득부터 처리, 분석, 이해, 그리고 최종 적용에 이르는 ‘End-to-End’ 솔루션을 제공하는 능력 덕분에 여러 분야에서 강력한 도구로 채택되고 있다. 이 모든 응용 분야들은 궁극적으로 ‘현실 세계를 디지털화하고, 디지털 세계에서 이해하며, 다시 현실 세계에 적용하는’ 흐름으로 귀결되며, Open3D는 이 과정에서 핵심적인 기술적 가교 역할을 수행한다.

Open3D 커뮤니티는 지속적인 연구 개발을 통해 라이브러리의 성능과 기능 범위를 확장하고 있다. 향후 발전 방향은 다음과 같은 핵심 영역에 초점을 맞추고 있다.

이러한 발전 방향은 Open3D가 학술 연구와 상업적 응용을 모두 장려하는 개방적인 MIT 라이선스 정책 3과 맞물려 강력한 선순환 구조를 형성한다. 학계의 최신 연구 성과는 Open3D를 통해 빠르게 산업계에 전파되고, 산업 현장의 요구사항은 다시 라이브러리의 발전에 기여한다. 이 개방적인 생태계야말로 Open3D의 지속 가능한 성장을 이끄는 가장 큰 동력이다.

Open3D는 3D 데이터 처리 분야의 복잡성과 다양성에 대응하기 위해 탄생한 현대적이고 포괄적인 오픈소스 라이브러리이다. 본 학습서는 Open3D의 핵심 철학부터 기본 데이터 구조, 핵심 처리 알고리즘, 그리고 고급 응용에 이르기까지 그 근간을 이루는 개념과 원리를 심층적으로 탐구했다.

분석을 통해 확인된 Open3D의 핵심적인 가치는 다음과 같이 요약할 수 있다.

첫째, 통합된 End-to-End 파이프라인을 제공한다. Open3D는 데이터의 입출력, 전처리(다운샘플링, 이상치 제거), 핵심 분석(정합, 재구성), 머신러닝 기반의 장면 이해(객체 탐지, 시맨틱 분할), 그리고 최종적인 시각화에 이르는 3D 데이터 처리의 전 과정을 하나의 일관된 프레임워크 내에서 지원한다. 이는 개발자가 여러 라이브러리를 조합하는 데 드는 노력을 줄이고, 본질적인 문제 해결에 집중할 수 있도록 하는 강력한 환경을 제공한다.

둘째, 이론적 깊이와 실용적 접근성의 균형을 맞추었다. 라이브러리는 ICP, Poisson 표면 재구성, PointNet 기반 딥러닝 모델 등 학술적으로 검증된 견고한 알고리즘들을 기반으로 하면서도, 이를 사용하기 쉬운 인터페이스와 강력한 시각화 도구를 통해 제공한다. 이러한 접근은 전문가에게는 깊이 있는 연구를, 입문자에게는 3D 데이터 처리에 대한 직관적인 학습을 가능하게 하여 기술의 저변을 확대하는 데 기여한다.

셋째, 전통적 기하학과 현대적 머신러닝의 융합을 선도한다. Open3D는 정밀한 기하학적 처리가 강점인 전통적인 알고리즘과, 복잡한 패턴과 의미를 데이터로부터 학습하는 3D 딥러닝 모델을 Open3D-ML을 통해 유기적으로 통합한다. 이 두 가지 접근법을 모두 아우름으로써, Open3D는 자율 주행, 로보틱스, AR과 같이 기하학적 정확성과 의미론적 이해가 동시에 요구되는 미래 산업의 복합적인 문제들을 해결할 수 있는 독보적인 위치를 점하고 있다.

결론적으로, Open3D는 간결한 설계 철학, 강력한 기능, 그리고 개방적인 생태계를 바탕으로 3D 데이터 처리 분야의 필수적인 도구로 자리매김했다. 앞으로도 지속적인 GPU 가속 확대, 머신러닝 기능 강화, 그리고 플랫폼 확장성을 통해 물리적 세계와 디지털 세계를 잇는 핵심 기술로서 그 역할을 더욱 공고히 할 것으로 전망된다.

  1. A Modern Library for 3D Data Processing - Open3D, accessed August 5, 2025, https://www.open3d.org/wordpress/wp-content/paper.pdf
  2. Open3D: An Introduction to the Open Source 3D Library - Modelo, accessed August 5, 2025, https://www.modelo.io/damf/article/2024/05/10/0447/open3d–an-introduction-to-the-open-source-3d-library
  3. Open3D – A Modern Library for 3D Data Processing, accessed August 5, 2025, https://www.open3d.org/
  4. Open3D Explained aijobs.net, accessed August 5, 2025, https://aijobs.net/insights/open3d-explained/
  5. Introduction - Open3D 0.19.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/release/introduction.html
  6. Open3D: A Modern Library for 3D Data Processing, accessed August 5, 2025, https://www.open3d.org/docs/0.10.0/introduction.html
  7. About Open3D - Open3D 0.7.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/0.7.0/introduction.html
  8. www.jouav.com, accessed August 5, 2025, https://www.jouav.com/blog/point-cloud.html#:~:text=Point%20cloud%20data%2C%20in%20its,points%20on%20an%20object’s%20surface.
  9. Point Cloud Processing - MATLAB & Simulink - MathWorks, accessed August 5, 2025, https://www.mathworks.com/help/vision/point-cloud-processing.html
  10. 포인트 클라우드 정확도 및 효율성 오토데스크 - Autodesk, accessed August 5, 2025, https://www.autodesk.com/kr/solutions/point-clouds
  11. 포인트 클라우드(Point Cloud)란? - Everything is NORMAL - 티스토리, accessed August 5, 2025, https://23min.tistory.com/8
  12. Introduction to PCL: The Point Cloud Library, accessed August 5, 2025, http://www.dis.uniroma1.it/~nardi/Didattica/LabAI/matdid/pcl_intro.pdf
  13. What is Point Cloud and What is it Used for? ( A Beginner’s Comprehensive Guide) - JOUAV, accessed August 5, 2025, https://www.jouav.com/blog/point-cloud.html
  14. Mesh - Open3D primary (unknown) documentation, accessed August 5, 2025, https://www.open3d.org/docs/release/tutorial/geometry/mesh.html
  15. Mesh - Open3D primary (252c867) documentation, accessed August 5, 2025, https://www.open3d.org/html/tutorial/geometry/mesh.html
  16. RGBD images - Open3D latest (664eff5) documentation, accessed August 5, 2025, https://www.open3d.org/docs/latest/tutorial/Basic/rgbd_image.html
  17. RGBD images - Open3D primary (252c867) documentation, accessed August 5, 2025, https://www.open3d.org/html/tutorial/geometry/rgbd_image.html
  18. RGBD images - Open3D 0.9.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/0.9.0/tutorial/Basic/rgbd_images/index.html
  19. RGBD images - Open3D primary (unknown) documentation, accessed August 5, 2025, https://www.open3d.org/docs/latest/tutorial/geometry/rgbd_image.html
  20. File IO - Open3D 0.10.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/0.10.0/tutorial/Basic/file_io.html
  21. File IO - Open3D 0.9.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/0.9.0/tutorial/Basic/file_io.html
  22. File IO - Open3D 0.6.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/0.6.0/tutorial/Basic/file_io.html
  23. Scene Format Support - Open 3D Engine - O3DE, accessed August 5, 2025, https://docs.o3de.org/docs/user-guide/assets/scene-settings/scene-format-support/
  24. 3D File Format: 10 Most Popular Types for Different Software - CGI Furniture, accessed August 5, 2025, https://cgifurniture.com/blog/3d-file-format-10-types/
  25. open3d.io.read_point_cloud - Open3D primary (252c867) documentation, accessed August 5, 2025, https://www.open3d.org/html/python_api/open3d.io.read_point_cloud.html
  26. Point cloud - Open3D primary (252c867) documentation, accessed August 5, 2025, https://www.open3d.org/html/tutorial/geometry/pointcloud.html
  27. Point Cloud Downsampling Methods and Python Implementations by Lathika - Medium, accessed August 5, 2025, https://medium.com/@lathwath5/point-cloud-downsampling-methods-and-python-implementations-6f91a129ac48
  28. Point cloud - Open3D 0.14.1 documentation, accessed August 5, 2025, https://www.open3d.org/docs/0.14.1/tutorial/geometry/pointcloud.html
  29. open3d.geometry.uniform_down_sample - Open3D 0.6.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/0.6.0/python_api/open3d.geometry.uniform_down_sample.html
  30. How do I downsample a point cloud to have a specific number of points so I can feed new data to a model based on PointNet?, accessed August 5, 2025, https://stackoverflow.com/questions/74461161/how-do-i-downsample-a-point-cloud-to-have-a-specific-number-of-points-so-i-can-f
  31. Upsampling / Downsampling pcd files while keeping intensity field / isl-org Open3D / Discussion #6454 - GitHub, accessed August 5, 2025, https://github.com/isl-org/Open3D/discussions/6454
  32. Fast Radius Outlier Filter Variant for Large Point Clouds - MDPI, accessed August 5, 2025, https://www.mdpi.com/2306-5729/8/10/149
  33. Noisy Point Cloud? How Statistical Outlier Removal Improves 3D Models - Patsnap Eureka, accessed August 5, 2025, https://eureka.patsnap.com/article/noisy-point-cloud-how-statistical-outlier-removal-improves-3d-models
  34. Removing outliers using a StatisticalOutlierRemoval filter - Point …, accessed August 5, 2025, https://pcl.readthedocs.io/projects/tutorials/en/latest/statistical_outlier.html
  35. The algorithm behind pcl::StatisticalOutlierRemoval - Cross Validated - Stats Stackexchange, accessed August 5, 2025, https://stats.stackexchange.com/questions/288669/the-algorithm-behind-pclstatisticaloutlierremoval
  36. Removing outliers using a Conditional or RadiusOutlier removal …, accessed August 5, 2025, https://pointclouds.org/documentation/tutorials/remove_outliers.html
  37. Low-complexity adaptive radius outlier removal filter based on PCA for lidar point cloud denoising - Optics Express, accessed August 5, 2025, https://opg.optica.org/abstract.cfm?uri=ao-60-20-e1
  38. Point Cloud - Open3D latest (664eff5) documentation, accessed August 5, 2025, https://www.open3d.org/docs/latest/tutorial/Basic/pointcloud.html
  39. Refining 3D Point Cloud Normal Estimation via Sample Selection - arXiv, accessed August 5, 2025, https://arxiv.org/html/2406.18541v1
  40. Estimating Surface Normals in a PointCloud - Point Cloud Library …, accessed August 5, 2025, https://pcl.readthedocs.io/projects/tutorials/en/master/normal_estimation.html
  41. (PDF) Robust point cloud normal estimation via neighborhood reconstruction, accessed August 5, 2025, https://www.researchgate.net/publication/332609279_Robust_point_cloud_normal_estimation_via_neighborhood_reconstruction
  42. pcnormals - Estimate normals for point cloud - MATLAB - MathWorks, accessed August 5, 2025, https://www.mathworks.com/help/vision/ref/pcnormals.html
  43. Consistent orientation of normals in point cloud / MeshInspector/MeshLib Wiki - GitHub, accessed August 5, 2025, https://github.com/MeshInspector/MeshLib/wiki/Consistent-orientation-of-normals-in-point-cloud
  44. Visualization - Open3D latest (664eff5) documentation, accessed August 5, 2025, https://www.open3d.org/docs/latest/tutorial/Basic/visualization.html
  45. Open3d: How to update point cloud during window running? - Stack Overflow, accessed August 5, 2025, https://stackoverflow.com/questions/65112433/open3d-how-to-update-point-cloud-during-window-running
  46. 포인트 클라우드 처리를 위한 open3d 사용법 정리 - JINSOL KIM, accessed August 5, 2025, https://gaussian37.github.io/autodrive-lidar-open3d/
  47. Iterative closest point - Wikipedia, accessed August 5, 2025, https://en.wikipedia.org/wiki/Iterative_closest_point
  48. An Iterative Closest Points Algorithm for Registration of 3D Laser Scanner Point Clouds with Geometric Features, accessed August 5, 2025, https://pmc.ncbi.nlm.nih.gov/articles/PMC5580094/
  49. ICP Registration - Open3D latest (664eff5) documentation, accessed August 5, 2025, https://www.open3d.org/docs/latest/tutorial/Basic/icp_registration.html
  50. Global registration - Open3D 0.19.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/release/tutorial/pipelines/global_registration.html
  51. Point cloud - Wikipedia, accessed August 5, 2025, https://en.wikipedia.org/wiki/Point_cloud
  52. Surface reconstruction - Open3D primary (252c867) documentation, accessed August 5, 2025, https://www.open3d.org/html/tutorial/geometry/surface_reconstruction.html
  53. The Ball-Pivoting Algorithm for Surface … - Gabriel Taubin, accessed August 5, 2025, http://mesh.brown.edu/taubin/pdfs/bernardini-etal-tvcg99.pdf
  54. Python implementation of the Ball-Pivoting algorithm (BPA) - GitHub, accessed August 5, 2025, https://github.com/Lotemn102/Ball-Pivoting-Algorithm
  55. Reconstruction of an office corridor with LVR, APSS, Ball Pivoting - ResearchGate, accessed August 5, 2025, https://www.researchgate.net/figure/Reconstruction-of-an-office-corridor-with-LVR-APSS-Ball-Pivoting-Poisson_fig3_269389792
  56. robust algorithm for surface reconstruction from 3D point cloud? - Stack Overflow, accessed August 5, 2025, https://stackoverflow.com/questions/838761/robust-algorithm-for-surface-reconstruction-from-3d-point-cloud
  57. Screened Poisson surface reconstruction - Johns Hopkins Computer …, accessed August 5, 2025, https://www.cs.jhu.edu/~misha/MyPapers/ToG13.pdf
  58. Poisson Surface Reconstruction - Eurographics, accessed August 5, 2025, https://diglib.eg.org/items/245d6ba1-0209-4365-a4a4-16ce46421620
  59. An Improved Poisson Surface Reconstruction Algorithm based on the Boundary Constraints - The Science and Information (SAI) Organization, accessed August 5, 2025, https://thesai.org/Downloads/Volume14No1/Paper_26-An_Improved_Poisson_Surface_Reconstruction_Algorithm.pdf
  60. Poisson Surface Reconstruction, accessed August 5, 2025, https://people.engr.tamu.edu/schaefer/teaching/689_Fall2006/poissonrecon.pdf
  61. AarohiSingla/Open3D-Tutorial - GitHub, accessed August 5, 2025, https://github.com/AarohiSingla/Open3D-Tutorial
  62. Getting started - Open3D 0.19.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/release/getting_started.html
  63. Open3D 0.19.0 documentation - Open3D-ML, accessed August 5, 2025, https://www.open3d.org/docs/release/open3d_ml.html
  64. Comprehensive Guide to Point Cloud Object Detection - Mindkosh AI, accessed August 5, 2025, https://mindkosh.com/blog/point-cloud-object-detection/
  65. From Points to Parts: 3D Object Detection from Point Cloud with Part-aware and Part-aggregation Network - arXiv, accessed August 5, 2025, http://arxiv.org/pdf/1907.03670
  66. Three-Dimensional Point Cloud Object Detection Based on Feature Fusion and Enhancement - MDPI, accessed August 5, 2025, https://www.mdpi.com/2072-4292/16/6/1045
  67. 3D Object Detection from Point Cloud - CS230 Deep Learning, accessed August 5, 2025, http://cs230.stanford.edu/projects_fall_2019/reports/26232893.pdf
  68. Efficient three-dimensional point cloud object detection based on improved Complex-YOLO, accessed August 5, 2025, https://www.frontiersin.org/journals/neurorobotics/articles/10.3389/fnbot.2023.1092564/full
  69. Open3D 0.19.0 documentation, accessed August 5, 2025, https://www.open3d.org/docs/release/
  70. Point Cloud Based Scene Segmentation: A Survey - arXiv, accessed August 5, 2025, https://arxiv.org/html/2503.12595v1
  71. A quick summary of 3D point cloud segmentation techniques - Mindkosh AI, accessed August 5, 2025, https://mindkosh.com/blog/a-summary-of-3d-point-cloud-segmentation-techniques/
  72. Introduction to 3D Point Cloud Segmentation - Medium, accessed August 5, 2025, https://medium.com/@BasicAI-Inc/introduction-to-3d-point-cloud-segmentation-a073b4a6b5f3
  73. Unlocking 3D Possibilities with Open3D - Modelo.io, accessed August 5, 2025, https://www.modelo.io/damf/article/2024/06/21/1312/unlocking-3d-possibilities-with-open3d
  74. The Power of Open3D in 3D Computer Vision and Robotics - Modelo, accessed August 5, 2025, https://www.modelo.io/damf/article/2024/06/23/0306/the-power-of-open3d-in-3d-computer-vision-and-robotics
  75. Build new augmented reality experiences that seamlessly blend the digital and physical worlds ARCore Google for Developers, accessed August 5, 2025, https://developers.google.com/ar
  76. Deep Learning-based Point Cloud Registration for Augmented Reality-guided Surgery, accessed August 5, 2025, https://arxiv.org/html/2405.03314v1
  77. Three-Dimensional Printing and 3D Scanning: Emerging Technologies Exhibiting High Potential in the Field of Cultural Heritage - MDPI, accessed August 5, 2025, https://www.mdpi.com/2076-3417/13/8/4777
  78. What is a Point Cloud? - GIGABYTE Global, accessed August 5, 2025, https://www.gigabyte.com/Glossary/point-cloud