在本教程中,我们将展示如何检测三维形状的ISS关键点。该实现基于俞忠在2009年《Intrinsic Shape Signatures: A Shape Descriptor for 3D Object Recognition》中提出的关键点检测模块。

ISS关键点原理

ISS显著性度量是由对每个点所在的球形区域内的所有点的散射矩阵的特征值分解(EVD)决定的,即

在给定的情况下,其特征值从大到小表示为λ1,λ2,λ3。 在筛选关键点过程中,使两个连续特征值之比低于阈值

其基本原理是避免对沿主方向具有相似分布的点处检测关键点,因为在无法建立可重复的规范参考系的情况下,随后的描述阶段很难有效。在剩余的点中,显著性由最小特征值的大小决定(试想,如果临近点沿某个方向分布致密则该方向会作为椭球的第一主方向,稀疏的方向则是第二主方向,法线方向当然是极度稀疏(只有一层),那么则作为第三主方向。如果某个点恰好处于角点,则第一主特征值,第二主特征值,第三主特征值大小相差不会太大。如果点云沿着某方向致密,而垂直方向系数则有可能是边界):

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

注意:有关更多详细信息,请参考原始出版物或Tombari等人的“Performance Evaluation of 3D Keypoint Detectors”。

代码展示

# -*-coding:utf-8 -*-
import numpy as np
import time
import open3d as o3d
import Open3D.examples.python.open3d_tutorial as o3dtut# Compute ISS Keypoints on Armadillo
mesh = o3dtut.get_armadillo_mesh()
pcd = o3d.geometry.PointCloud()
pcd.points = mesh.verticestic = 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], front=[0, 0, -1.0])# 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 += spherespheres.paint_uniform_color([1.0, 0.75, 0.0])return spheres# Compute ISS Keypoints on Standford Bunny, changing the default parameters
mesh = o3dtut.get_bunny_mesh()
pcd = o3d.geometry.PointCloud()
pcd.points = mesh.verticestic = 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])

效果展示

Open3d之内部形状描述子ISS相关推荐

  1. 图像形状特征(六)--AR模型形状描述子

    1. 自回归模型的定义 自回归模型(Autoregressive Model)是用自身做回归变量的过程,即利用前期若干时刻的随机变量的线性组合来描述以后某时刻随机变量的线性回归模型[1],它是时间序列 ...

  2. 谷粒商城属性分组功能实现内部包含子组件给父组件数据传递

    页面展示 前端实现 将之前三级分类页面拆成一个组件便于以后使用.组件如下. <template><div><el-input placeholder="输入关键 ...

  3. SQL 基础-- 子查询

    --========================= --SQL 基础--> 子查询 --========================= /* 一.子查询 子查询就是位于SELECT.UP ...

  4. css居父容器下,整理:子容器垂直居中于父容器的方案

    本文在evernote里有备份.如果evernote的阅读区域嫌窄了,那么可以把这个链接拖入书签并点击javascript:jQuery("#container").width(9 ...

  5. 品茗论道说广播(Broadcast内部机制讲解)

    1 概述 我们在编写Android程序时,常常会用到广播(Broadcast)机制.从易用性的角度来说,使用广播是非常简单的.不过,这个不是本文关心的重点,我们希望探索得再深入一点儿.我想,许多人也不 ...

  6. Auto Lisp 标注子样式_CSS 核心样式

    CSS核心样式 粗细font-weight 作用:设置文字是否加粗显示 属性名: font-weight, 属于font属性的一个单-属性 属性值有两种方式:单词类型.数字类型 单词类型 数字类型 1 ...

  7. html盒子模型子元素怎么水平占满父元素_前端面试常考问题之css盒模型

    一.题目:谈一谈你对CSS盒模型的认识 专业的面试,一定会问 CSS 盒模型.对于这个题目,我们要回答一下几个方面: (1)基本概念:content.padding.margin. (2)标准盒模型. ...

  8. mysql非结构化查询_Mysql(2.3) 简单查询(SELECT)、子查询

    结构化查询语言(sql) SQL概念和规则 关键字:SQL语言保留的字符串(SELECT FORM) 语句:一条完整的SQL命令(SELECT * FROM dept) 子句:部分的SQL语句,通常由 ...

  9. 阴阳师系统转移开放服务器,阴阳师:运营商倒闭后?原来只是子账号数据转移,可迁移到官服...

    原标题:阴阳师:运营商倒闭后?原来只是子账号数据转移,可迁移到官服 哈喽各位小伙伴们大家好啊,阴阳师在这周更新之后许多小伙伴在登录游戏之后发现自己的客户端出现了一丝异样,点开一看竟然是账号数据迁移,于 ...

最新文章

  1. Python 学习笔记 - 字典
  2. ———— javascript中数组常用方法总结 ————
  3. c++ primer 5th,习题13.3 答案是不是错了?(未解决)
  4. 使用VS2013在WIN8.1上运行gaclib的hello world
  5. zoj 3707 Calculate Prime S
  6. Chrome source code map - fail - cannot debug
  7. python 基类 派生类_在Python中具有两个子(派生)类的继承示例
  8. wordpress提取文章(最新,最热,随机)
  9. Kai - Golang实现的目标检测云服务
  10. Rancher助力美国农业部的容器实践之路
  11. MySQL高级-MySQL查询缓存优化
  12. Java网络编程(TCP协议-练习-上传文本文件)
  13. oracle增加表字段_史上最详细的oracle 中的CR块介绍--一致性读
  14. mysql磁盘空间满了会崩吗_磁盘空间不够导致mysql崩溃重启
  15. MPC5744P-时钟模块
  16. 笔记本打印机显示服务器脱机,打印机显示脱机状态怎么办 打印机显示脱机状态解决方法【详解】...
  17. 领域驱动设计(1) DDD的一些基础概念
  18. 英语 语义分割_语义分割该如何走下去?
  19. 火车头采集优化-收集的文章内容怎么批量变成原创文章
  20. 三菱FX5U位逻辑指令

热门文章

  1. Oracle--plsql之控制结构
  2. (CSS3)CSS3- 最常用的属性(一)
  3. linux服务器中用U盘或者移动硬盘拷贝数据
  4. 使用Zabbix监控memcached
  5. Zabbix监控内存
  6. double类型的精度问题【计算时有误差】。 (0.1 * 0.1 , 1.0 - 0.9)
  7. safari无法调试iphone提示“无可检查的应用程序”的解决方法
  8. atomicReference 的使用和AtomicStampedReference 解决ABA的问题
  9. 解决eclipse不会自动弹出Console控制台的问题
  10. 微信小程序访问豆瓣电影api400错误解决方法