请选择 进入手机版 | 继续访问电脑版

点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 7722|回复: 0

(Intrinsic Shape Signatures,ISS)关键点检测

[复制链接]
发表于 2018-5-28 16:48:07 | 显示全部楼层 |阅读模式
本帖最后由 王三国 于 2018-5-28 16:53 编辑

ISS主要是一个描述子的名称,当然为了提取描述子,对应的文章《Intrinsic Shape Signatures: A Shape Descriptor for 3D Object Recognition》也定义了与之对应的关键点提取过程,在PCL中仅实现了对应的ISS关键点提取,并没有涉及其描述子的内容。

对应文章中,并没有详细描述关键点的提取流程,以下是本人按照源码实现梳理的关键点提取过程,可能会有谬误,望大家批评指正。
下表,左侧是关键点检测流程,右侧是对应的需要设置的参数。









1 对 每个点的球形领域内的所有点 计算散射矩阵(scatter matrix),并求取特征值 λ1λ2λ3λ1>λ2>λ3),这里的球形领域的半径由用户设置。



2 计算每个点的,根据散射矩阵特征值λ1λ2λ3的约束,筛选出初始的关键点。
具体的约束是:λ2/λ1 <r21, λ3/λ2 <r32,这里r21r32由用户设置。然后初始的每个关键点 对应  一个特征值(也就是散射矩阵中的最小的特征值λ3

3  然后对每个初始的关键点,以固定长度为半径,求k近邻点。
这里的固定长度由用户设置。
如果得到的k近邻点比最少近邻点大,
且这个关键点比所有的近邻点的最小特征值都大的话,这个关键点就是最终求取的关键点,这个关键点的半径min_neighbors_
由用户设置。

4本关键点算法也可以滤除掉边界的关键点
先把输入点云的边界点删除
具体的删除方式是:
对每个点,以固定半径求取k近邻。
这个半径由用户设置。
如果近邻点有点云的边沿点, 这个点就是边界点。
其中计算boundary点的时候,需要计算法向量,而法向量的半径需要人为设置。




1 iss_detector.setSalientRadius (iss_salient_radius_);







2
iss_detector.setThreshold21 (iss_gamma_21_);
iss_detector.setThreshold32 (iss_gamma_32_);



3
iss_detector.setNonMaxRadius (iss_non_max_radius_);
(设置非最大值抑制半径)

Void setMinNeighbors(int min_neighbors);





4    iss_detector.setBorderRadius (iss_border_radius_);                   iss_detector.setNormalRadius (iss_normal_radius_);
回复

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-3-29 23:00 , Processed in 1.850978 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表