ORB特征提取和匹配
ORB特征提取和匹配
- 1 什么是ORB特征
- 2 FAST关键点
- 3 尺度不变性
- 4 旋转不变性
- 4.1 灰度质心法
- 4.2 rBRIEF描述子
- 4.2.1 BREIF描述子
- 4.2.2Hamming距离
- 4.2.3 rBRIEF描述子
- 5 小结
1 什么是ORB特征
特征是图像信息的一种表达方式,我们可以把角点、边缘和区块都可以看作图像中有代表性的地方,我们发现,图像中的角点、边缘相比于区块更加“特别”,一种直观的提取特征的方式就是在不同的图像间辨认角点,确定它们的对应关系。在这种做法中,角点就是所谓的特征。角点的提取算法有很多,例如Harris角点、FAST角点、GFTT角点等等,然而ORB(Oriented Fast and Rotated BRIEF)是Oriented Fast + Rotated BRIEF的缩写,是目前最快速稳定的特征点检测和提取算法。
同一幅图像同时提取约1000个特征点的情况下:
检测器 | ORB | SURF | SIFT |
---|---|---|---|
一帧耗时(ms) | 15.3 | 217.3 | 5228.7 |
2 FAST关键点
算法步骤:
1、选取像素点p,假设他的亮度为lp;
2、设置一个阈值T(比如lp的20%);
3、以像素p为中心,选取半径为3的圆上的16个像素点;
4、假如选取的圆上,有连续的N个点的亮度大于lp+T或者小于lp+T,那么像素p可以被认为是特征点;(N通常取12即FAST-12,其他常用的N取值为9或者11,他们分别被称为FAST-9和FAST-11)
5、循环以上4步,对每个像素执行相同操作。
在FAST-12算法中,为了更高效,增加了一项预测试的操作,以快速地排除绝大多是不是角点的像素点:
对于每个像素,直接检测领域圆上第1,5,9,13上的亮度,只有当这4个中的3个的亮度同时大于lp+T或者小于lp+T,才有可能是角点,否则直接排除。
原始的FAST角点经常出现”扎堆“的现象,为了解决这个问题,可以采用非极大值抑制的算法:
假设p,qp,qp,q两点相邻,分别计算出两个点与其周围16个像素点之间的差分和为VVV;
去除VVV值较小的点,即把非最大的角点抑制掉。
缺点及解决办法:
- 尺度不变性:可以通过金字塔解决;
- 旋转不变性:可以用质心标定方向解决。
3 尺度不变性
算法步骤:
1、对图像做不同尺度的高斯模糊;
2、对图像做降采样;
3、对每层金字塔做FAST特征点检测;
4、NNN副不同比例的图像提取出的特征点总和作为这幅图像的FAST特征点。
4 旋转不变性
旋转不变性是通过灰度质心法计算出特征方向,在描述子中利用这一角度,消除由于旋转带来的影响。
4.1 灰度质心法
1、在一个小的图像块BBB中,定义图像块的矩为:
mpq=∑x,y∈BxpyqI(x,y)p,q={0,1}m_{pq} = \sum_{x,y\in B} x^{p}y^{q}I(x,y)\ \ \ \ \ \ \ p,q\ =\ \{0,1 \} mpq=x,y∈B∑xpyqI(x,y) p,q = {0,1}
2、通过矩可以找到图像块的质心:
C=(m10m00,m01m00)C\ =\ (\frac{m_{10}}{m_{00}},\frac{m_{01}}{m_{00}} ) C = (m00m10,m00m01)
3、连接图像块的几何中心OOO与质心CCC,得到一个向量OC→\overrightarrow{OC}OC,于是特征点的方向可以定义为:
θ=arctan(m01/m10)\theta\ = \ arctan(m_{01}/m_{10}) θ = arctan(m01/m10)
在公式中,I(x,y)I(x,y)I(x,y)表示像素坐标(x,y)(x,y)(x,y)处的灰度值;m10m00=∑x,y∈BxI(x,y)∑x,y∈BI(x,y)\frac{m_{10}}{m_{00}}=\frac{\sum_{x,y\in B} xI(x,y)}{\sum_{x,y\in B} I(x,y)}m00m10=∑x,y∈BI(x,y)∑x,y∈BxI(x,y)是xxx加权的总量与总和相比显示处xxx在图像的那一列的时候像素值比较大,代表了图像像素在xxx方向上的偏重,即是质心的xxx坐标;同样的,m01m00=∑x,y∈ByI(x,y)∑x,y∈BI(x,y)\frac{m_{01}}{m_{00}}=\frac{\sum_{x,y\in B} yI(x,y)}{\sum_{x,y\in B} I(x,y)}m00m01=∑x,y∈BI(x,y)∑x,y∈ByI(x,y)代表了图像像素在yyy方向上的偏重,即是质心的yyy坐标。
4.2 rBRIEF描述子
rBRIEF特征描述是在BREIF的基础上加入旋转因子改进的,下面首先介绍BREIF描述子的算法原理。
4.2.1 BREIF描述子
BRIEF算法计算出来的是一个二进制串的特诊描述符,它是在一个特征点的领域Path内,通过一种选定的方式来挑选N个点对,然后通过对每个点对(p,q)(p,q)(p,q)比较这两点的亮度值,如果I(p)>I(q)I(p)>I(q)I(p)>I(q)则这个点对生成的二进制串中一个值为1,如果I(p)≤I(q)I(p)≤I(q)I(p)≤I(q)则对应二进制串中的值为0。一般的,N取128、256或512,OpenCV默认为256,并且为了增加描述子的抗噪性,算法首先需要对图像进行高斯平滑处理。
关于点对的选择,假设我们在特征点的领域块S×SS×SS×S内选择N个点对(p,q)(p,q)(p,q),Calonder的实验中测试了5种采样方法:
- 在图像块内平均采样;
- ppp和qqq都符合(0,125S2)(0,\frac{1}{25}S^{2})(0,251S2)的高斯分布;
- ppp符合(0,125S2)(0,\frac{1}{25}S^{2})(0,251S2)的高斯分布,而qqq符合(0,1100S2)(0,\frac{1}{100}S^{2})(0,1001S2)的高斯分布;
- 在空间量化极坐标下的离散位置随机采样;
- 把ppp固定为(0,0)(0,0)(0,0),qqq在周围平均采样;
下面是以上5种采样方法的结果示意图:
论文指出,第二种方法可以取得较好的匹配结果。
经过上述步骤,我们可以得到每个特征点表示的一串二进制编码。
4.2.2Hamming距离
汉明距离是使用数据阐述差错制控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)d(x,y)d(x,y)表示两个字x,yx,yx,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。
- 两个特征编码对应bit位上相同元素的个数小于128的,一定不是配对的;
- 一幅图上特征点与另一幅图上特征编码对应bit位上相同元素的个数最多的特征点配成一对。
其实就是按位求异或的过程。(相同为0,不同为1)
A | B | P |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
所以,对于BRIEF来说,描述子里不包含旋转属性,一旦当匹配的图像有稍微大的旋转角度,按照Hamming算法,匹配度将大幅下降。
4.2.3 rBRIEF描述子
首先,进行前期的优化:
1、采用积分图像来进行平滑;
2、在特征点的31×31的领域内,随机产生点对,并以随机点为中心,取5×5的子窗口;
3、比较两个随机点的子窗口内25个像素的大小进行编码。(而不仅仅是两个随机点了)
其次,增加了旋转不变性:
- 对于任意特征点,在31×31领域内位置为(xi,yi)(x_i,y_i)(xi,yi)的nnn对点集,可以用2×n2×n2×n的矩阵来表示:
S=(x1,...,xny1,...,yn)S=\left( \begin{matrix} x_1, & ... & ,x_n \\ y_1, & ... & ,y_n \end{matrix} \right) S=(x1,y1,......,xn,yn)
- 利用FAST求出的特征点主方向θ\thetaθ和对应的旋转矩阵RθR_\thetaRθ,计算出来的SθS_\thetaSθ来代表SSS:
θ=arctan(m01/m10)\theta\ = \ arctan(m_{01}/m_{10}) θ = arctan(m01/m10)
S=[cosθ−sinθsinθcosθ]S=\left[ \begin{matrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{matrix} \right] S=[cosθsinθ−sinθcosθ]
Sθ=RθSS_\theta = R_\theta S Sθ=RθS
- 计算旋转描述子(steered BRIEF)
gn(p,θ):=fn(p)∣(xi,yi)∈Sθg_n(p,\theta):=f_n(p)|(x_i,y_i)\in S_\theta gn(p,θ):=fn(p)∣(xi,yi)∈Sθ
其中,fn(p):=∑i≤i≤n2i−1(p;xi,yi)f_n(p):=\sum_{i≤i≤n}2^{i-1}(p;x_i,y_i)fn(p):=∑i≤i≤n2i−1(p;xi,yi)为BRIEF的描述子。
steered BRIEF得到的描述子具有旋转不变性,但是描述子的相关性却不如原始的BRIEF算法,rBRIEF没有采用原始5种去点对的方法,而是通过机器学习的方法重新选择了点对集合。
至此,ORB的优化就结束了。
5 小结
- FAST是用来寻找特征点的,ORB在FAST的基础上通过金字塔、灰度质心标定解决了尺度不变和旋转不变,即oFAST;
- BRIEF是用来构造描述子的,ORB在BRIEF的基础上通过引入oFAST的选择角度和机器学习解决了选择特性和特征点难以区分的问题。
- 最终,通过计算Hamming距离计算描述子的距离,即两特征之间的相似程度。
参考文献
[1] 《视觉SLAM十四讲从理论到实践》 高翔,张涛
ORB特征提取和匹配相关推荐
- 3D视觉(四):ORB特征提取与匹配
3D视觉(四):ORB特征提取与匹配 根据维基百科的定义,图像特征是一组与计算任务相关的信息,计算任务取决于具体的应用.简而言之,特征是图像信息的另一种表达形式. 数字图像在计算机中以灰度值矩阵的方式 ...
- Opencv实现Sift、Surf、ORB特征提取与匹配
在opencv3中,这三个算子都转移到一个名为xfeature2d的第三方库中,而在opencv2中这三个算子在nonfree库中. 关于在vs下配置opencv可参考我转载的另外一篇文章.注意版本号 ...
- ORB-SLAM2从理论到代码实现(三):ORB特征提取和匹配理论和代码详解
1. 理论知识 特征点由关键点(Key-point)和描述子(Descriptor)两部分组成.ORB特征点(Oriented FAST and Rotated BRIEF)是由Oriented FA ...
- 特征匹配中OpenCV Dmatch类的用法解析以及非常详细的ORB特征提取与匹配解析
首先说明一点,在SLAM中进行特征提取和匹配时,需要注意使用的OpenCV版本,在使用OpenCV2.x版本时,可以创建特征对象如下所示(省略了参数表): ORB orb; SURF surf; SI ...
- ORB词袋特征提取和匹配
一.预备知识点 Bag-of-Words ORB特征提取与匹配 5. Bag of Word 作用: 加速匹配 和 回环 在跟踪线程里面 一进来就要对每帧进行词袋的提取 词袋模型是由Node和Word ...
- 【理解】ORB特征提取与ORBSLAM特征匹配简要剖析
目录 ORB特征提取 优势: 经典FAST特征提取: 经典的BRIEF描述子: ORB特征提取的改进: 如何在FAST检测的基础上维持特征点的尺度不变性? 如何在FAST检测的基础上维持特征点的旋转不 ...
- SLAM从0到1——ORB特征提取及特征匹配
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 学习3D视觉核心技术,扫描查看介绍,3天内无条件退款 圈里有高质量教程资料.可答疑解惑.助你高效解决问 ...
- ORB算法——特征提取特征匹配
特征提取 Abstract ORB(Oriented Fast and Rotated Brief),可以用来对图像中的关键点快速创建特征向量,这些特征向量可以用来识别图像中的对象. 其中,Fast ...
- 全面综述:图像特征提取与匹配技术
作者:William 来源:自动驾驶全栈工程师知乎专栏,https://www.zhihu.com/people/william.hyin/columns 特征提取和匹配是许多计算机视觉应用中的一个重 ...
最新文章
- 机器学习类别/标称(categorical)数据处理:独热编码(One Hot Encoding)
- Facebook开源ptr:在Python环境中并行运行单元测试
- 更改zabbix-server的端口
- 关于easyui中的editIndex
- 如何将SP1集成到Office 2007安装包
- .NET Core 下使用 Exceptionless 记录日志
- C++ string字符串常见操作函数
- tts android,Android系统自带的TTS实现语音播报
- Redis基础知识详解(非原创)
- qpython3h手机版怎么发短信_python如何使用腾讯云发送短信
- 第十五章 第十五章 异步A3C(Asynchronous Advantage Actor-Critic,A3C)-强化学习理论学习与代码实现(强化学习导论第二版)
- Airtest网易自动化测试工具初探(一)
- 矩阵分析及应用(1-2章)
- Easy3D 样条曲线拟合
- React脚手架使用less
- dlibdotnet 人脸相似度源代码_HAAR与DLib的实时人脸检测之实现与对比
- Android原生框架--Xui使用
- python实现数模转换_树莓派:PCF8591数模转换模块的使用
- 2021年金属非金属矿山(地下矿山)主要负责人模拟考试题库及金属非金属矿山(地下矿山)主要负责人复审模拟考试
- linux系统安装绿色版mysql
热门文章
- RabbitMQ-工作模型
- 美团点评前端无痕埋点实践
- 中国迪士尼商店全球独家发售唐老鸭85周年珍藏版系列公仔
- 听张方方学长分享经验有感
- PHP 实现图片防盗链,Nginx实现图片防盗链功能
- visio画图旋转任意角度,不保留白边保存pdf格式
- 计算机网络知识总结:有关IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字的概念及笔试题
- 如何快速从几千封简历中筛选出适合的简历 ?
- 牛客网 2018校招真题 招商银行信用卡 整数成绩最大化
- 梦幻诛仙手游服务器维护中,《梦幻诛仙手游》12月20日凌晨5点~8点停服维护公告...