计算机视觉专栏传送
上一篇:图像特征算法(二)——SURF算法简述及Python标记SURF特征检测实践
下一篇:持续创作中…
目录
一、ORB算法
1.算法简介
ORB 是 Oriented Fast and Rotated Brief 的简称,可以用来对图像中的关键点快速创建特征向量,这些特征向量可以用来识别图像中的对象。
其中,Fast 和 Brief 分别是特征检测算法和向量创建算法。ORB 首先会从图像中查找特殊区域,称为关键点。关键点即图像中突出的小区域,比如角点,比如它们具有像素值急剧的从浅色变为深色的特征。然后 ORB 会为每个关键点计算相应的特征向量。ORB 算法创建的特征向量只包含 1 和 0,称为二元特征向量。1 和 0 的顺序会根据特定关键点和其周围的像素区域而变化。该向量表示关键点周围的强度模式,因此多个特征向量可以用来识别更大的区域,甚至图像中的特定对象。
ORB 的特点是速度非常快,而且在一定程度上不受噪点和图像变换的影响,例如旋转和缩放变换等。
2.FAST寻找特征点
ORB 特征检测的第一步是查找图像中的关键点,这一步骤中使用的是 FAST 算法。
FAST 是 Features from Accelerated Segments Test 的简称,可以快速选择关键点,算法步骤如下:
(1)确定选定特征点的阈值参数 h 的数值。
(2)对于图像上的任意一个像素点 p 而言,FAST 比较以点 p 为圆心的圆圈范围中的 16 个像素,如果圈圈上灰度值小于 lp - h ( lp 即 p 点的灰度值)或灰度值大于 lp + h 的像素共计有 8 个以上,则将像素 p 选作关键点。

FAST 如此高效的原因是,仅将 p 与圆圈中的 4 个等距像素相比。这种方法已经证明和比较 16 个周围像素的效果相同。如果至少有一对连续像素的灰度高于 lp + h 或低于 lp - h ,则将 p 选作关键点。这种优化使得在整个图像中搜索关键点的时间缩短了四倍。

由 FAST 确定特征点的算法步骤可以看出, FAST 确定的关键特征点位于灰度有快速变化的区域,此类区域通常确定了某种边缘。下图中绿色的点为 FAST 确定的图像特征点,图中猫的眼睛轮廓、鼻头着色区域即为图像中的边缘性区域。边缘定义了猫的界限,以及脸部区域的界限,因此这些关键点使我们能够识别这只猫,而不是图像中的任何其他对象或背景。
3.BRIEF 算法生成图像特征描述符
BRIEF 是 Binary Robust Independent Elementary Features 的简称,它的作用是根据一组关键点创建二进制特征向量,又称为二进制特征描述符,是仅包含 1 和 0 的特征向量。在 BRIEF 中 每个关键点由一个二进制特征向量描述,该向量一般为 128-512 位的字符串,其中仅包含 1 和 0。

BRIEF 算法生成二进制的特征描述符最大优点在于能非常高效地存储在内存中,并且可以快速计算,且使 BRIEF 能够在计算资源非常有限的设备(例如智能手机)上运行。
BRIEF算法生成特征描述符的具体步骤如下:
(1)首先利用高斯核对给定图像进行平滑处理,以防描述符对高频噪点过于敏感。
(2)然后对于给定关键点(例如下图猫爪上的绿点),以该关键点为中心的高斯分布中抽取一个像素,下文将该点称作关键点的一号点(下图中的蓝点),标准差为 σ。

(3)以一号点为中心的高斯分布中抽取一个像素,下文将该点称作关键点的二号点(下图中的黄点),标准差为 σ/2【这么取是因为经验表明这种选择提高了特征匹配率】。

本文深入解析ORB算法,一种快速创建图像特征向量的方法,适用于对象识别。文章涵盖FAST特征点检测、BRIEF描述符生成,以及缩放旋转不变性的改进策略,附带Python代码示例。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



