PCL中3D特征描述子Shot详解
上周点云公众号开始分享群友们的反馈分享,由博主分配任务,半个月甚至一个月参与学习小伙伴的反馈给群主,并在微信交流群中进行学术交流,加强大家的阅读文献能力,并提高公众号的分享效果。已经有一些开始陆续反馈中,在此期待之前参与任务的小伙伴赶紧将你们的分享发送给群主吧,同时也希望更多的同学能参与进来,参与我们下一轮学习!
SHOT概述
SHOT(Signature of Histogram of Orientation)是一种基于局部特征的描述子,在特征点处建立局部坐标系,将邻域点的空间位置信息和几何特征统计信息结合起来描述特征点。Tombari 等人将现有三维局部特征描述方法分为两类,即基于特征的描述方法与基于直方图的描述方法,并分析了两种方法的优势,提出基于特征的局部特征描述方法要比后者在特征的描述能力上更强,而基于直方图的局部特征描述方法在特征的鲁棒性上比前者更胜一筹。
计算3D表面之间的相似程度(表面匹配)是计算机视觉任务尤其是3D对象识别和表面对齐的关键。通过匹配3D描述符建立的局部对应关系可以用于解决更高级别的任务,例如3D对象识别。这种方法以有效地处理诸如遮挡,杂乱和视点变化等问题。
SHOT步骤
The first category, that includes earliest works on the subject, describes the 3D surface neighborhood of a given point (hereinafter support) by defining an invariant local Reference Frame (RF) and encoding, according to the local coordinates, one or more geometric measurements computed individually on each point of a subset of the support.
一方面,通过定义不变的局部坐标系(RF)并根据局部坐标单独编码计算一个点的支撑区域的几何特征,来描述给定点的3D表面邻域(下文称为Support)。
On the other hand, Histogram-based methods describe the support by accumulating local geometrical or topological measurements (e.g. point counts, mesh triangle areas) into histograms according to a specific quantized domain (e.g. point coordinates, curvatures) which requires the definition of either a Reference Axis (RA) or a local RF.
另一方面,基于直方图的方法通过根据特定的量化域(例如点坐标,曲率)将局部几何或拓扑测量(例如点数,网格三角形区域)累积到直方图中来描述支撑区域,这需要定义参考轴Reference Axis(RA)或局部RF。(local Reference Frame)
step1: 根据特征点球邻域信息建立局部参考坐标系LRF,对特征点的球邻域分别沿径向(内外球)、经度(时区)和纬度方向(南北半球)进行区域划分。通常径向划分为2,经度划分为8,纬度划分为2,总共32个小区域。
step2:分别统计每个小区域内的法向量夹角余弦值分布情况,法向量划分为11个bin。最终SHOT的长度为:32x11=352。
分解步骤1:建立坐标系
法向估计 得到Z轴一般使用的PCA
计算该点K近邻组成类似平面的XYZ方向上的特征值就是它的法线。通过主成分分析法(PCA)来计算它的方向也具有二义性,无法对整个点云数据集的法线方向进行一致性定向。
本文中添加了一个距离参数,给邻域内较远的点分配较小的权重,协方差矩阵的构造过程和深度图中某点的法向计算类似,不同的是,该方法在构造协方差矩阵时加上了距离权重。离特征点距离近的点对协方差矩阵构造的贡献大,距离特征点远的点对协方差矩阵构造的贡献小,这样增强了局部参考系在复杂场景中的可重复性。
为了计算方便,设置特征点P为质心,设置半径为R的球形支撑区域。
另外本文还解决了法线二义性的问题,将由上式得到的特征值从大到小排列,与其对应的三个特征向量分别称为x +,y +和z +轴。
这个公式大致意思是说特征点P邻域内点Pi满足点到P的距离小于R并且该点减去特征点,与x+同向,满足这两个条件的点数较多,X+就是X轴的正向。也就是说必须使各向量的方向指向局部表面点分布的高密度方向。Y轴由Z和X叉乘得到。
分解步骤2:直方图特征描述
提出了一种3D描述符,其对基本一阶微分实体(即支撑区域内的点的法线)的直方图进行编码,与平面3D坐标相比,其更能代表表面的局部结构。
SHOT描述在纹理上的扩展
由于最初提出的SHOT描述子是不针对纹理和颜色信息的,单纯的几何信息编码影响识别的准确率,因此后来SHOT加入了颜色信息。SHOT中的颜色编码主要是LAB空间(CIELAB计算)中的颜色;直方图31级,因此颜色描述子长度32x31 = 992;添加颜色信息的SHOT描述子共1344维。
参考文献
[1] http://docs.pointclouds.org/trunk/structpcl_1_1_s_h_o_t1344.html
[2] http://www.vision.deis.unibo.it/research/80-shot
[3] https://blog.csdn.net/FireMicrocosm/article/details/78059151
[4] https://www.cnblogs.com/BellaVita/p/10019409.html
[5] F. Tombari *, S. Salti *, L. Di Stefano, "Unique Signatures of Histograms for Local Surface Description", 11th European Conference on Computer Vision (ECCV), September 5-11, Hersonissos, Greece, 2010.
[6] F. Tombari, S. Salti, L. Di Stefano, "A combined texture-shape descriptor for enhanced 3D feature matching", IEEE International Conference on Image Processing (ICIP), September 11-14, Brussels, Belgium, 2011.
[7] S. Salti, F. Tombari, L. Di Stefano, "SHOT: Unique Signatures of Histograms for Surface and Texture Description", Computer Vision and Image Understanding, May, 2014.
[8] 邓俊文,基于二值描述符的三维目标识别研究 。重庆大学硕士学位论文.
此分享来自北京工业大学的闫同学,在此感谢她为公众号的分享,并号召大家积极分享共同营造良好的交流分享的氛围,并且此文章已经上传至github组群。同时文章中若有疑问或者错误请留言指正。
资源
三维点云论文及相关应用分享
【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法
3D目标检测:MV3D-Net
三维点云分割综述(上)
3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)
win下使用QT添加VTK插件实现点云可视化GUI
JSNet:3D点云的联合实例和语义分割
大场景三维点云的语义分割综述
PCL中outofcore模块---基于核外八叉树的大规模点云的显示
基于局部凹凸性进行目标分割
基于三维卷积神经网络的点云标记
点云的超体素(SuperVoxel)
基于超点图的大规模点云分割
更多文章可查看:点云学习历史文章大汇总
SLAM及AR相关分享
【开源方案共享】ORB-SLAM3开源啦!
【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM
【点云论文速读】StructSLAM:结构化线特征SLAM
SLAM和AR综述
常用的3D深度相机
AR设备单目视觉惯导SLAM算法综述与评价
SLAM综述(4)激光与视觉融合SLAM
Kimera实时重建的语义SLAM系统
SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM
易扩展的SLAM框架-OpenVSLAM
高翔:非结构化道路激光SLAM中的挑战
SLAM综述之Lidar SLAM
基于鱼眼相机的SLAM方法介绍
往期线上分享录播汇总
第一期B站录播之三维模型检索技术
第二期B站录播之深度学习在3D场景中的应用
第三期B站录播之CMake进阶学习
第四期B站录播之点云物体及六自由度姿态估计
第五期B站录播之点云深度学习语义分割拓展
第六期B站录播之Pointnetlk解读
[线上分享录播]点云配准概述及其在激光SLAM中的应用
[线上分享录播]cloudcompare插件开发
[线上分享录播]基于点云数据的 Mesh重建与处理
[线上分享录播]机器人力反馈遥操作技术及机器人视觉分享
[线上分享录播]地面点云配准与机载点云航带平差
点云PCL更多活动请查看:点云PCL活动之应届生校招群
扫描下方微信视频号二维码可查看最新研究成果及相关开源方案的演示:
如果你对本文感兴趣,请点击“原文阅读”获取知识星球二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,免费下载pdf文档,和更多热爱分享的小伙伴一起交流吧!
以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除
扫描二维码
关注我们
让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。
分享及合作方式:群主微信“920177957”(需要按要求备注) 联系邮箱:dianyunpcl@163.com,欢迎企业来联系公众号展开合作。
点一下“在看”你会更好看耶
PCL中3D特征描述子Shot详解相关推荐
- sift计算描述子代码详解_浅谈SIFT特征描述子
SIFT是我接触最早的图像局部特征描述子之一,其实最初,始终觉得局部特征描述子是些非常玄虚的东西.对于SIFT,这种感觉更是尤为强烈,"尺度空间""拉普拉斯高斯算子(Lo ...
- 【特征描述】ORB详解(附python实例代码)
文章目录 特征描述 ORB ORB特征描述 ORB的基本思路 FAST角点检测的缺点 BRIEF的缺点 BRIEF ORB对BRIEF的改进 完整代码如下 特征描述 ORB ORB 算法创建的特征向量 ...
- sift计算描述子代码详解_SIFT解析(三)生成特征描述子
以上两篇中检测在DOG空间中稳定的特征点,lowe已经提到这些特征点是比Harris角点等特征还要稳定的特征.下一步骤我们要考虑的就是如何去很好地描述这些DOG特征点. 下面好好说说如何来描述这些特征 ...
- sift计算描述子代码详解_代码详解——如何计算横向误差?
在路径跟踪控制的论文中,我们常会看到判断精确性的指标,即横向误差和航向误差,那么横向误差和航向误差如何获得? 在前几期代码详解中,参考路径和实际轨迹均由To Workspace模块导出,如图所示: 那 ...
- python中@property以及描述符descriptor详解
python一直以代码简洁优雅而著称,这篇文章介绍的小技巧,就是如何优雅地对一个类的属性进行赋值和取值.不过不仅仅如此,本文章还为类属性的查找顺序,以及装饰器在类方法的使用打下了基础. 文章目录 待解 ...
- 特征描述子提取公用接口
OpenCV封装了一些特征描述子提取算法,使得用户能够解决该问题时候方便使用各种算法.这章用来计算的描述子提取被表达成一个高维空间的向量 vector.所有实现 vector 特征描述子子提取的部分继 ...
- PCL中3D点云特征描述与提取(三)
PCL中3D点云特征描述与提取(三) 1 如何从一个深度图像中提取NARF特征 2 RoPs特征 2.1 理论基础 2.1.1 生物视觉认知学启示 2.1.2 局部参考坐标框架构建 2.1.3 RoP ...
- PCL:点云特征描述子3D_object_recognition_(descriptors)
PCL官网:https://pointclouds.org/ 翻译自该网站:http://robotica.unileon.es/index.php/PCL/OpenNI_tutorial_4:_3D ...
- 【视觉算法】SHOT特征描述子
回顾一下上一篇文章学习的物体识别流程,首先计算模型点云特征,并将特征保存:然后计算场景点云特征,并将特征保存:在此基础上,进行特征匹配:每一对特征点,进行霍夫投票,投票峰值对应的那些点对,即为正确的特 ...
最新文章
- $().html()对ie9无效,不注意这点,\9和\0就可能对hack IE11\IE9\IE8无效
- Android点击事件之多点触摸与手势识别
- android .a .so区别,.so,.la和.a库文件有什么区别?
- 图文教程:使用MyEclipse的hibernate工具从数据库反向生成实体Bean
- c语言无视数据类型字符串存储,C语言基础-第二课-数据类型与运算符(示例代码)...
- hdu 1754 I Hate It(分块做法)
- ProxyChains
- 2021最新全球CS专业排名发布,CMU再夺榜首,清华和MIT并列
- Spring IOC 概述
- 35. 后台模块开发(2)
- 御剑后台扫描工具下载、安装、使用教程
- 软件测评师考试大纲2018
- 为什么你的温湿度传感器测不准?
- Java九阳神功-内部类
- 常用密码学论文查找网站
- 用Node.js申请缓存buffer报DEP0005错误的解决方法
- Unity 自发光(燃烧)溶解Shader
- 什么叫实时操作系统,什么叫非实时操作系统,两者有什么区别?
- 计算机仿真文献标识码,【计算机仿真论文】计算机仿真纸币识别体系分析(共4309字)...
- C++基础——IO库基础
热门文章
- commander.js
- 小程序中点击input控件键盘弹出时placeholder文字上移
- oracle手工启动,SQLSERVER服务手工启动 批处理文件
- 使用Dom4j操作XML数据
- ES6深入学习记录(一)class方法相关
- 导入drupal中文语言包
- android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...
- java mysql 是否插入 成功_您如何确定使用Java和MySQL插入或更新是否成功?
- java soap协议头_java – 服务器无法识别HTTP标头“SOAPAction”的值
- xiaohai.cf index.php,php des 加密 - 北京破小孩