网站首页 > 技术文章 正文
编者序:在计算机视觉相关应用中,经常会遇到特征选择与匹配问题。到底哪种特征好呢,目前尚缺乏数学理论分析,仁者见仁智者见智。本周将连续推送三篇特征比较的经典论文,供读者参考。本文为第三篇特征评估,综合三篇来看,编者推荐采用ORB+FREAK或ORB+BRISK关键点+描述子组合。
推荐指数 ☆☆☆☆☆☆
一、引言
没有对日常物品的识别就没有最近服务机器人领域的进展,我们的双手机器人Velma头部装备有一对儿RGB相机,并且装备有一对儿垂直方向的Kinect传感器,这样的感知系统使得机器人能够通过获取到的点云感知周边环境。生成3D目标模型的点云有两种类型:用于可视化的稠密彩色点云和用于识别的稀疏特征点云。当前我们的目标识别是在利用深度信息的基础上,将SIFT特征转换到点云里(our object recognition process relies on SIFT features transformed into a feature cloud on the basis of additional depth information)。之所以选择SIFT,是由于它是基于方向梯度直方图(Histograms of Oriented Gradients,HOG)的描述子家族中最有价值的特征。
然而目前我们更关注于二进制描述子特征,这种类型特征优点很简单:降低时间成本。二进制描述子不去计算每个像素的所有梯度,而是通过比较像素间的强度关系进行编码。由于Hamming距离可以通过二进制编码按位XOR操作并求和后得到,所以比基于经典的HOG描述子快很多。因此,在服务机器人实时目标识别应用中很需要这样的特征。本文评估了现有的几种类型的特征,比较了它们的辨别能力,以便根据需要择优应用。
二、特征分类
特征可分为全局特征和局部特征两种。全局特征代表了在整幅图像上计算得到的某种特性,可以从构成目标的整个点云或属于目标的所有图像分割中提取。局部特征通过描述子对关键点的邻域特性进行阐述。全局特征可以快速区分整幅图像或目标的相似度,而局部特征对比较特定区域有用。
在RGB-D图像中特征可分为:从彩色通道外观中提取的特征和从深度图或点云3D形状中提取的特征。直方图是RGB通道全局特征的一个例子,基于颜色得到;从点云提取全局特征的一个例子是点特征直方图(Point Feature Histogram,PFH);根据点在点云表面的角度得到。
局部特征需要关注关键点检测器和特征描述子。最新的一个RGB图像上的关键字检测器是FAST(Features from Accelerated Segment Test),特征描述子的两个例子是BRIEF(Binary Robust Independent Elementary Features)和FREAK(Fast Retina Keypoint)。有些特征含有自己的检测器和描述子,如SIFT、BRISK(Binary Robust Invariant Scalable Keypoint)。从点云或深度图上提取的局部特征例子是SHOT(Signature of Histograms of Orientation)和 SC(3-D Shape Context)特征。
三、二进制描述子局部特征
BRIEF是一种二进制描述子,不包括关键点检测,因此常常结合FAST使用。BRIEF描述子通常包括128、256或512位,位数等于分析的像素数(the number of analysed pairs of pixels of analysed patch),位数影响了运算速度和辨别能力。该描述子对噪声很敏感,因为对于给定的每一对儿像素,它仅仅考虑点强度,忽略了周边像素。可以通过高斯滤波等预先平滑操作降低噪声的影响。BRIEF没有确定的采样模式,构建描述子的像素对儿是随机选取的。该方法的作者给出了五种选取像素对儿的方法,并指出采用高斯分布的随机选取方式获得的结果最优。
ORB与BRIEF类似,但加入了旋转和尺度不变性。ORB通过机器学习方法学习到最优的采样对儿集合,而不是随机选取。ORB使用FAST检测关键点,然后使用Harris 角点测量选取其中的Top-N。ORB通过构建金字塔实现尺度不变性,通过在质心点周边圆环像素点的moment实现旋转不变性。采样对儿应该具备两个特性:互不相关、方差尽可能最大化。ORB通过贪婪搜索实现这两个特性。
BRISK描述子采用手工采样方式,由同心环组成,并且外环点数多。下图中BRISK包括60个采样点,小蓝圈代表采样点位置,红色虚线圆圈是对采样点进行强度平滑的高斯核标准差。辨别出两种类型的采样点对儿:短距离和长距离。距离门限根据检测到关键点的尺度决定。BRISK也提供了方向补偿机制。
FREAK描述子同样采用编码采样方式,使用重叠的同心圆且内环上点较多。每个圆圈代表了一个敏感区域(sensitive field)。FREAK通过圆对称结构实现旋转不变性。类似于ORB,FREAK同样学习最优的采样对儿集合,选取辨识能力最高的集合。
四 性能评估
4.1 数据集
本文性能评估所采用的的数据集和Mikolajczyk所用的一样,共含退化、视角、尺度、JPEG压缩和光照变化6种图像变换,分为8个图像子集,如下图所示。每个子集包括6张图片,1张基准图和5张不同程度失真的图像。由于服务机器人应用场景为室内,所有本文主要关注于尺度旋转的boat子集和视角变化的graffit子集。
4.2 性能评估
本文性能评估流程如下图所示。实验环境为Ubuntu 12.04,Phenom 965处理器,4GB内存和OpenCV 2.4.8。
4.3 实验结果
不同关键点检测器情况下的匹配结果如下图所示,其中(b)中的默认检测器为FAST。可以看出ORB检测器和BRISK或FREAK组合的正确匹配率最高。
在graffiti和wall数据集上也有类似结果,如下图所示,ORB+FREAK匹配准确率最高。
需要说明的事,在别的数据集上得到的结论未必是这样,因此需要针对特定应用场景、特定目的下选择合适的特征。如在室内目标识别应用中,对退化和图像压缩的稳健性并不那么重要。
检测关键点和提取描述子的耗时如下图所示。
由图中可以看出,FASK检测器最快,SIFT最慢,且ORB检测器比BRISK快两倍,但比FAST慢20倍。最慢的二进制描述子是ORB,但也比SIFT快十倍。
不同组合的关键点检测器和描述子耗时如下图所示,可以看出ORB+BRISK比ORB+FREAK稍微快些。
经对比评估后,本文决定选ORB+FREAK组合。
英文名称:Performance Evaluation of Binary Descriptors of Local Features
链接:
https://www.researchgate.net/publication/291408271_Performance_Evaluation_of_Binary_Descriptors_of_Local_Features
结论:要针对特定应用场景、特定目的下选择合适的特征,室内服务机器人应用中主要需要考虑对尺度、旋转和视角的鲁棒性,ORB+FREAK组合是最优的。
死磕自律,遇见更好的自己;自斩双臂,方能长出强两翼。
败而不弃,潜龙勿用待时机;执着坚毅,飞升上神创奇迹!
关注该头条号,一起创造奇迹。
- 上一篇: 图像的角点检测 角点检测算法
- 下一篇: 特征点的检测与匹配--系统总结 特征点提取与匹配
猜你喜欢
- 2024-10-08 基于ASIFT算法特征匹配的研究 基于sift特征的图像配准
- 2024-10-08 多传感器数据融合:提升环境感知精度的关键
- 2024-10-08 手眼标定如何一步步实现 手眼标定流程
- 2024-10-08 OpenCV4Net的开始【核心库】 OpenCvSharp 介绍
- 2024-10-08 使用 OpenCV 对图像进行特征检测、描述和匹配
- 2024-10-08 机器视觉(七):图像特征提取 图像特征提取系统流程图
- 2024-10-08 opencv 图像特征一文通 opencv图像识别特定形状
- 2024-10-08 一种事件相机描述子——DART 事件相机行为识别
- 2024-10-08 SIFT算法原理:SIFT算法详细介绍 sift算法python
- 2024-10-08 「火炉炼AI」机器学习050-提取图像的Star特征
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)