基于Open3D的点云处理15-特征点

Intrinsic shape signatures (ISS)

参考
ISS关键点:
基本原理是避免在沿主要方向表现出类似分布的点上检测关键点,在这些点上无法建立可重复的规范参考框架,因此后续描述阶段很难变得有效。在剩余点中,显着性由最小特征值的大小决定,以便仅包括沿每个主要方向变化较大的点。
在检测步骤之后,如果一个点在给定邻域上具有最大显着性值,则该点将被视为关键点。

import open3d as o3d
import numpy as np
import time
# Compute ISS Keypoints on ArmadilloMesh
armadillo = o3d.data.ArmadilloMesh()
mesh = o3d.io.read_triangle_mesh(armadillo.path)
mesh.compute_vertex_normals()

pcd = o3d.geometry.PointCloud()
pcd.points = mesh.vertices

tic = time.time()
keypoints = o3d.geometry.keypoint.compute_iss_keypoints(pcd)
toc = 1000 * (time.time() - tic)
print("ISS Computation took {:.0f} [ms]".format(toc))

mesh.compute_vertex_normals()
mesh.paint_uniform_color([0.5, 0.5, 0.5])
keypoints.paint_uniform_color([1.0, 0.75, 0.0])
o3d.visualization.draw_geometries([keypoints, mesh])

基于Open3D的点云处理15-特征点_第1张图片

Fast Point Feature Histogram (FPFH)

FPFH特征是一个33维的向量,描述了一个点的局部几何属性。 33 维空间中的最近邻查询可以返回具有相似局部几何结构的点。
基于Open3D的点云处理15-特征点_第2张图片

import open3d as o3d

pcd = o3d.io.read_point_cloud('bunny.pcd')
voxel_size = 0.05 

pcd_down = pcd.voxel_down_sample(voxel_size)

radius_normal = voxel_size * 2
print(":: Estimate normal with search radius %.3f." % radius_normal)
pcd_down.estimate_normals(
    o3d.geometry.KDTreeSearchParamHybrid(radius=radius_normal, max_nn=30))

radius_feature = voxel_size * 5
print(":: Compute FPFH feature with search radius %.3f." % radius_feature)
pcd_fpfh = o3d.pipelines.registration.compute_fpfh_feature(
    pcd_down,
    o3d.geometry.KDTreeSearchParamHybrid(radius=radius_feature, max_nn=100))
print(pcd_fpfh)

你可能感兴趣的:(三维数据处理,Open3d,算法,python)