Open3D Intrinsic shape signatures (ISS) 固有形状特征码

简介: Open3D Intrinsic shape signatures (ISS) 固有形状特征码

Intrinsic shape signatures (ISS) 固有形状特征码

在本教程中,我们将展示如何检测 3D 形状的 ISS 关键点。该实现基于于忠提出的关键点检测模块,“内在形状特征:用于3D对象识别的形状描述符”,2009年。( Yu Zhong , “Intrinsic Shape Signatures: A Shape Descriptor for 3D Object Recognition)

ISS Keypoints

ISS 显著性测度基于属于p pp的点的散射矩Σ(p)的特征值分解(EVD)。

Σ(p)=N1qN(p)(qμp)(qμp)Twithμp=N1qN(p)q

给定Σ(p),其数量级数量级递减的特征值在这里表示为 λ1、λ2、λ3。在修剪阶段,保留两个连续特征值之间比率低于阈值的点:

λ1(p)λ2(p)<γ12λ2(p)λ3(p)<γ23

其基本原理是避免在沿主要方向表现出类似扩散的点上检测关键点,在这些点上无法建立可重复的规范参考系,因此,随后的描述阶段很难变得有效。在其余点中,显著性由最小特征值的大小决定

ρ(p)λ3(p)

以便仅包括沿每个主方向变化较大的点。

在检测步骤之后,如果某个点在给定邻域上具有最大显著性值,则该点将被视为关键点。

注意:有关更多详细信息,请参考原始出版物或Tombari et.al 的“3D关键点探测器的性能评估”(Performance Evaluation of 3D Keypoint Detectors)。

ISS keypoint detection example ISS 关键点检测示例

#Intrinsic shape siqnatures
import open3d as o3d
import time

# Compute ISS Keypoints on ArmadilloMesh
armadillo_path = r'../data/ArmadilloMesh.ply'
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])

# This function is only used to make the keypoints look better on the rendering
def keypoints_to_spheres(keypoints):
    spheres = o3d.geometry.TriangleMesh()
    for keypoint in keypoints.points:
        sphere = o3d.geometry.TriangleMesh.create_sphere(radius=0.001)
        sphere.translate(keypoint)
        spheres += sphere
    spheres.paint_uniform_color([1.0, 0.75, 0.0])
    return spheres

# Compute ISS Keypoints on Standford BunnyMesh, changing the default parameters
bunny_path = r'../data/BunnyMesh.ply'
mesh = o3d.io.read_triangle_mesh(bunny_path)
mesh.compute_vertex_normals()

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

tic = time.time()
keypoints = o3d.geometry.keypoint.compute_iss_keypoints(pcd,
                                                        salient_radius=0.005,
                                                        non_max_radius=0.005,
                                                        gamma_21=0.5,
                                                        gamma_32=0.5)
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])
o3d.visualization.draw_geometries([keypoints_to_spheres(keypoints), mesh])
相关文章
|
1月前
|
计算机视觉 芯片
最大输出 18W,集成 Type-C PD 输出和各种快充输出协议
一、产品简介 IP6510是一款集成同步开关的降压转换器、支持 9 种输出快充协议、支持 Type-C 输出和 USB PD协议,为车载充电器、快充适配器、智能排插提供完整的解决方案。 IP6510 内置功率 MOS,输入电压范围是 4.5V到 32V,输出电压范围是 3V 到 12V,能提供最大 18W 的输出功率,能够根据识别到的快充协议自动调整输出电压和电流,典型输出电压和电流有: 5V@3.1A,7V@2.4A,9V@2A,12V@1.5A。IP6510的降压转换效率高至 97%。 IP6510 的输出具有 CV/CC 特性,当输出电流小于设定值,输出 CV 模式,输出电压恒
57 0
|
1天前
|
机器学习/深度学习 监控 物联网
函数计算操作报错合集之调用接口提示Cannot copy out of meta tensor; no data! 是什么原因
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
1月前
|
存储
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
【VBA代码解决方案】md文档转Word后,全自动转换为标准的Word公式格式
90 0
|
7月前
layer.open的常用参数例子
layer.open的常用参数例子
|
8月前
|
XML 安全 数据安全/隐私保护
SAP Success Factor Single Sign On(单点集成) 的文档清单
SAP Success Factor Single Sign On(单点集成) 的文档清单
|
9月前
|
机器学习/深度学习 编解码 人工智能
ATC 模型转换动态 shape 问题案例
ATC(Ascend Tensor Compiler)是异构计算架构 CANN 体系下的模型转换工具:它可以将开源框架的网络模型(如 TensorFlow 等)以及 Ascend IR 定义的单算子描述文件转换为昇腾 AI 处理器支持的离线模型;模型转换过程中,ATC 会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾 AI 处理器上。
138 0
ALLEN BRADLEY 842E-CM-MIP3BA 保留原始流中存在的所有信息
ALLEN BRADLEY 842E-CM-MIP3BA 保留原始流中存在的所有信息
ALLEN BRADLEY 842E-CM-MIP3BA  保留原始流中存在的所有信息
|
JavaScript 前端开发
01显示转换隐私转换 有8个值转为false 显示转换Number的注意点
01显示转换隐私转换 有8个值转为false 显示转换Number的注意点