본문 바로가기

심화/포인트 클라우드 기반

[1] Open3D 제공 기능 목록 정리(PointCloud)

<목차>

  • 시각화(Visualize point cloud)
  • 복셀 다운 셈플링(Voxel downsampling)
  • 정점 법선 추정(Vertex normal estimation)
  • 포인트 클라우드 자르기(Crop point cloud)
  • 포인트 클라우드 페인팅(Paint point cloud)
  • 포인트 클리우드 거리 계산(Point cloud distance)
  • 볼륨 바운딩(Bounding Volume)
  • 컨벡스 헐(Convel Hull)
  • DBSCAN 클러스터링
  • 평면 세그멘테이션(Plane Segmentation)
  • 숨겨진 점 제거(Hidden Point Removal)

시각화(Visualize point cloud)

- 가장 기본적인 시각화 기능

 

복셀 다운 셈플링(Voxel downsampling)

- point cloud에서 균일하게 다운 샘플링된 포인트 클라우드를 생성하기 위해 정규 복셀 그리드를 사용한다.

- 포인트 들의 한 버킷(bucket)을 평균화 하여 하나의 점을 생성한다

정점 법선 추정(Vertex normal estimation)

- (이름으로 추정컨테) 점이 속하는 평면의 법선을 구해서 시각화 해준다

- 점이 속하는 평면을 찾을 수 있다

- 인접 점을 찾아 공분산을 사용하여 주축(Principal Axis)를 계산한다.

- 해당 함수는 'KDTreeSearchParamHybrid' 클래스의 객체를 인자로 받는데, 객체는  'Radius'와 'max_nn(최대 인접 이웃 갯수)'를 입력 받는다.

- 법선 벡터의 방향 문제가 존재할 경우  'orient_normals_to_align_with_direction', 'orient_normals_to_align_with_direction' 두 함수로 해결한다.

- 개별 법선 백터의 3차원 정보 추출도 가능하다.

포인트 클라우드 자르기(Crop point cloud)

- 아래는 배경을 제거한 예시

- 'read_selection_polygon_volume' 매소드는 json 파일에 정의된 polygon 선택 영역을 읽어 들인다.

 

 

포인트 클라우드 페인팅(Paint point cloud)

- 색칠 ㅎ

포인트 클리우드 거리 계산(Point cloud distance)

- compute_point_cloud_distance 메소드는 SRC에서 DST 까지 포인트 클라우드 거리 계산

- 아래 예시에서는 원본 PCD와 의자 영역에 해당하는 PCD를 비교하여 거리 계산으로 제거하는 예시이다.

 

볼륨 바운딩(Bounding Volume)

- PointCloud 기하는 볼륨 영역을 가지고 있다.

- AxisAlignedBoundingBox(축을 따라 박스를 그림), OrientedBoundingBox

(방향을 따라 박스를 그림) 등의 매소드가 있다.- (위에서 방향을 따라 박스를 친다는 것이 어떤 의미인지..는 모르겠지만 객체의 법선 벡터를 종합해서 그린것이 아닌가 추측이 될 뿐이다)

컨벡스 헐(Convel Hull)

- 모든 점을 포함하는 최소화된 Convex 집합을 찾는다.

- compute_convex_hull 매소드가 컨벡스 헐을 계산한다.

- 아래 예시에서는 Mesh에서 PCD를 샘플링하고, 삼각형 Mech로 반환되는 Convex Hull을 계산한다.

DBSCAN 클러스터링

- 밀도 기반 클러스터링 알고리즘

- 파라미터 2개를 입력으로 받는다(eps: 이웃 점간의 하나로 클러스터링 되기 위한 최소 거리이며, min_points: 클러스터링으로 구분되기 위한 최소 점의 갯수 이다)

평면 세그멘테이션(Plane Segmentation)

- RANSAC을 이용한 평면 분할 기능을 제공한다. 

- 3가지 파라미터를 입력으로 받는다

distance_threshold

: 인라이어로 간주되는 추정 평면까지 가질 수 있는 최대 거리(?)ransac_n: 평면으로 추정하기 위해 랜덤하게 샘플링하는 점의 숫자

num_iterations

: 랜덤한 평면이 샘플되고 검증할 횟수(예제로 보아 성능은 그리 좋지 않은 듯하다. 혹은 파라미터를 잘 튜닝 해야 할 것으로 보인다)

 

숨겨진 점 제거(Hidden Point Removal)

- Sparse한 포인터 클라우드 데이터 특성상, 앞 표면에 의해 마땅히 가려져야 하는 뒷 표면이 앞에서 봤을 때 노출되는 경우가 존재할 수 있다. 이러한 목적으로 숨겨져 있는 점을 지우는 알고리즘이 존재한다. 

- Open3D에서는 [Katz2007] 알고리즘을 구현하여, 표면 재구성(Reconstruction) 혹은 추정 방식 없이 가시성을 근사화하였다.

(점 제거 전)
(점 제거 후)

 

출처: http://www.open3d.org/docs/latest/tutorial/geometry/pointcloud.html#Point-cloud-distance

반응형

'심화 > 포인트 클라우드 기반' 카테고리의 다른 글

PCL RGB  (0) 2022.11.07
PCL Window Install  (0) 2022.09.01
Semantic-Kitti 데이터셋 설명  (0) 2022.07.25
DBSCAN(밀도 기반 클러스터링)  (0) 2022.06.21