상세 컨텐츠

본문 제목

[Open3D Tutorial] voxel downsampling

AI/Open3D

by 쑤야. 2024. 8. 12. 16:21

본문

Voxel downsampling


코드를 살펴보기 전 down-sampling과 up-sampling에 대한 이해가 필요하다고 생각해 아래 링크에 이에 대한 정리를 해보았다. 

 

https://developer-ssooya.tistory.com/entry/up-sampling-and-down-sampling

 

up-sampling and down-sampling

down-sampling과 up-sampling은 딥러닝 모델에서 데이터의 크기와 해상도를 조절하여 더 나은 학습 결과를 얻기 위해 자주 사용하는 방법이다. 1. Down Sampling데이터의 해상도 또는 크기를 줄이는 과정

developer-ssooya.tistory.com


 

import open3d as o3d

print("Load a ply point cloud")
ply_point_cloud = o3d.data.PLYPointCloud()
pcd = o3d.io.read_point_cloud(ply_point_cloud.path)

print("downsample the point cloud with a voxel of 0.05")
downpcd = pcd.voxel_down_sample(voxel_size=0.05) 
o3d.visualization.draw_geometries(
    [downpcd],
    zoom=0.3412,
    front=[0.4257, -0.2125, -0.8795],
    lookat=[2.6172, 2.0475, 1.532],
    up=[-0.0694, -0.9768, 0.2024]
)

여기서 voxel_size 매개변수 값을 0.05보다 작은 값인 0.01로 설정하였더니 형체를 더욱 뚜렷하게 알아볼 수 있게 되었다.

voxel_size를 작게 할 경우 더 높은 해상도를 유지하여 세밀한 디테일이 보존되지만, 많은 포인트 클라우드들이 유지되는 것이다 보니 처리시간과 메모리 사용량이 증가할 수 있다.

downpcd = pcd.voxel_down_sample(voxel_size=0.01)

반대로 voxel_size를 0.05보다 더 높은 1로 설정할 경우는 아래와 같다.

디테일이 거의 없어졌다고 볼 수 있는데, 포인트 클라우드를 간략화하여 전체적인 형상만 유지하고 작은 디테일은 사라지게 된다.

이 경우에는 남아있는 포인트 클라우드가 거의 없다 보니 세부 정보가 손실되지만, 메모리 사용량과 처리 시간은 줄어드는 특징을 가진다.

downpcd = pcd.voxel_down_sample(voxel_size=1)

voxel_size에 대해 조금 더 정리해 보자면, 다운샘플링에 중요한 매개변수로 여러 영향을 미칠 수 있게 되므로 상황에 맞게 적절한 값을 설정하는 것이 중요하다

  1. 포인트 클라우드의 세밀함
    • 작은 voxel_size: 더 높은 해상도를 유지하며 세밀한 디테일 보존 / 처리 시간과 메모리 사용량 증가
    • 높은 voxel_size: 포인트 클라우드를 간략화하여 디테일은 제거되며 전체적인 형상만 유지(세부 정보 손실) / 메모리 사용량과 처리 시간이 줄어듦
  2. 연산 효율성
    • 작은 voxel_size: 데이터가 많아 계산이 느려질 수 있음
    • 높은 voxel_size: 데이터가 줄어 계산이 빠르게 이뤄짐
  3. 노이즈 감소
    • 작은 voxel_size: 작은 노이즈가 그대로 유지될 가능성이 큼
    • 높은 voxel_size: 노이즈가 상대적으로 줄어들며, 전체적인 형태가 더 깔끔해짐
  4. 응용 분야에 따른 선택
    • 작은 voxel_size: 정밀한 3D 재구성, 고해상도 모델링, 로봇 내비게이션
    • 높은 voxel_size: 빠른 처리, 메모리 절약, 큰 장면의 대략적인 형상 파악

'AI > Open3D' 카테고리의 다른 글

[Open3D Tutorial] bounding volumes  (0) 2024.08.13
[Open3D Tutorial] point cloud distance  (0) 2024.08.13
[Open3D Tutorial] vertex normal estimation  (0) 2024.08.12
[Open3D Tutorial] visualize point cloud  (0) 2024.08.12
Open3D  (0) 2024.08.12

관련글 더보기