코드를 살펴보기 전 normal vector에 대해서 먼저 간략하게 찾아보았다.
법선 벡터(normal vector)
import open3d as o3d
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)
#####################################################
print("Recompute the normal of the downsampled point cloud")
downpcd.estimate_normals(
search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30)
)
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],
point_show_normal=True
)
estimate_normals
k-NN 기반 이웃 선택의 영향
반경 기반 검색(radius-based search)의 영향
따라서 적절한 k값 또는 반경의 선택은 포인트 클라우드의 특성, 특히 점의 밀도와 표면의 복잡도에 따라 다르므로 최적의 값을 선택하기 위해 실험적으로 조정하거나, 데이터의 특성에 맞게 설정하는 것이 중요하다
[Open3D Tutorial] bounding volumes (0) | 2024.08.13 |
---|---|
[Open3D Tutorial] point cloud distance (0) | 2024.08.13 |
[Open3D Tutorial] voxel downsampling (0) | 2024.08.12 |
[Open3D Tutorial] visualize point cloud (0) | 2024.08.12 |
Open3D (0) | 2024.08.12 |