ORB特征

包含以下两部分:

  1. FAST角点提取:与原版不同的是计算了主方向
  2. BRIEF描述子:使用了先前计算的方向信息

FAST关键点

检测思想:如果一个像素与邻域像素差别较大,则可能为角点

检测过程如下:

BRIEF描述子

基本原理

BRIEF提供了一种计算二值串的捷径,而并不需要去计算一个类似于SIFT的特征描述子。它需要先平滑图像,然后在特征点周围选择一个Patch,在这个Patch内通过一种选定的方法来挑选出来nd个点对。然后对于每一个点对(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),则对应在二值串中的值为-1,否则为0。所有nd个点对,都进行比较之间,我们就生成了一个nd长的二进制串。

对于nd的选择,我们可以设置为128,256或512,这三种参数在OpenCV中都有提供,但是OpenCV中默认的参数是256,这种情况下,非匹配点的汉明距离呈现均值为128比特征的高斯分布。一旦维数选定了,我们就可以用汉明距离来匹配这些描述子了。

点对选择(各种Pattern)

设我们在特征点的邻域块大小为S×S内选择nd个点对(p,q),Calonder的实验中测试了5种采样方法:

1)在图像块内平均采样;

2)p和q都符合(0,125S2)\left ( 0,\frac{1}{25}S^2 \right )(0,251​S2)的高斯分布;

3)p符合(0,125S2)\left ( 0,\frac{1}{25}S^2 \right )(0,251​S2)的高斯分布,而q符合(0,1100S2)\left ( 0,\frac{1}{100}S^2 \right )(0,1001​S2)的高斯分布;

4)在空间量化极坐标下的离散位置随机采样

5)把p固定为(0,0)(0,0)(0,0),q在周围平均采样

下面是上面5种采样方法的结果示意图。


匹配(基于cv的Matcher)

汉明距离(Hamming distance)

用汉明距离(Hamming distance)作为两个二进制串之间的距离(差异),指不同位数的个数。这个在计算机硬件层面可以直接用异或实现,很友好。

在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。换句话说,它就是将一个字符串变换成另外一个字符串所需要替换的字符个数。例如:

​ 1011101 与 1001001 之间的汉明距离是 2。
​ 2143896 与 2233796 之间的汉明距离是 3。
​ “toned” 与 “roses” 之间的汉明距离是 3。

要决定有多少个位不同,只需将 xor 运算加诸于两个字码就可以,并在结果中计算有多个为1的位。两个字码中不同位值的数目称为汉明距离(Hamming distance) 。

OpenCV中的Matcher

特征点匹配位于feature2D的模块中所以在使用的时候应该在头文件中加入:

#include<opencv2/features2d/features2d.hpp>

模块中有三个类

继承关系如下:

cv::DescriptorMatcher

DescriptorMatcher的类型:

可以直接使用 DescriptorMatcher,参数如上图

ORB匹配--基于OpenCV相关推荐

  1. 基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)

    1.双视频拼接效果展示 2.视频演示 [项目分享]Python基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)_哔哩哔哩_bilibili 3.背景 随着汽车电子和 ...

  2. Python基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)

    1.双视频拼接效果展示 2.视频演示 [项目分享]Python基于OpenCV&ORB和特征匹配的双视频图像拼接(源码&部署教程)_哔哩哔哩_bilibili 3.背景 随着汽车电子和 ...

  3. 基于opencv的图片模板匹配及其简单应用

    opencv的图片模板匹配及其简单应用 我的个人博客 基础知识 基于opencv的图片模板匹配 注: python及其相关包的安装不在讨论范围内 opencv提供了图片模板匹配的方法, cv2.mat ...

  4. ORB特征描述原理、python实现及基于opencv实现

    写在前面: 黄宁然,看你看过的算法系列*,不如,就到此吧. 参考文献镇楼: [1]汪洋,扫地机器人定位算法设计与嵌入式系统实现 [2]王雯涛,ORB图像特征提取算法的FPGA设计与实现 [3]房亮,基 ...

  5. 基于opencv的模板匹配详解

    1.什么是模板匹配 在OpenCV教程中这样解释模板匹配: 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.这里说的模板是我们已知的小图像,模板匹配就是在一副大图像中搜寻目标. ...

  6. 【Opencv】基于Opencv和PCV两种方法的Harris 角点检测与匹配

    [Opencv]基于Opencv和PCV两种方法的Harris 角点检测与匹配[附代码] 理解Harris角点检测 代码:Harris角点检测 1.[opencv版]Harris角点检测 2.[PCV ...

  7. 图像目标检索:基于Opencv的颜色空间匹配法

    图像目标检索:基于Opencv的颜色空间匹配法 目标效果:近似于淘宝上--拍照搜索,检索商品的效果,在传统算法领域,也有一些优秀的算法能粗略的实现该效果,本文便基于传统算法中的颜色空间匹配法来实现,代 ...

  8. android opencv 获取小图在大图的坐标_Android开发—基于OpenCV实现相机实时图像识别跟踪...

    利用OpenCV实现实时图像识别和图像跟踪 图像识别 什么是图像识别 图像识别,是指利用计算机对图像进行处理.分析和理解,以识别各种不同模式的目标和对像的技术.根据观测到的图像,对其中的物体分辨其类别 ...

  9. 图像拼接和图像融合技术(基于Opencv)

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...

最新文章

  1. Delphi XE4 For IOS之部署问题
  2. springMvc时间格式化
  3. SQL2000中因为选定的用户拥有对象,所以无法除去该用户.
  4. BZOJ 1683.City skyline 城市地平线
  5. SpringBoot通过yml和xml文件配置日志输出
  6. 浅谈动态规划和分治、贪心算法的区别
  7. 迭代器之输入和输出迭代器
  8. android 显示canvas,【报Bug】部分情况下,安卓canvas不显示
  9. Script:收集Exadata诊断信息
  10. 系统学习NLP(二十二)--主题模型LDA
  11. 「HNOI 2015」落忆枫音
  12. 【老生谈算法】matlab实现小波分析源码——小波分析
  13. 无线传感器网络中低功耗MAC协议—T-MAC
  14. 【C语言】判断数字是否为素数或合数
  15. Markowitz有效边界投资组合——利用python
  16. 2015-2016-2 《Java程序设计》教学进程
  17. 虚拟现实:认识VR、AR、全息影像和全景视频的涵意
  18. 20P46 Premiere预设800种干扰缩放平移旋转分割拉伸全景透视扭曲炫光视频无缝转场
  19. [PsTools]psexec.exe使用范例-执行远程电脑程序(exe、bat等)
  20. 使用OkHttp3发起POST或GET请求

热门文章

  1. 如何用CSS将网页图片或整个页面弄成黑白
  2. c语言程序设计主编陆蓓,C语言程序设计--详细介绍
  3. android m3u8离线播放器,android上实现离线缓存播放加密HLS视频和未加密的HLS视频...
  4. 正版sql服务器,SQL Server2014企业版 授权许可 正版sql数据库
  5. 全志A20编译调试笔记
  6. 如何成为别人嘴里的高级前端工程师?
  7. uni-app 介绍及使用
  8. python选手的最后得分_用Python进行体育竞技分析(预测球队成绩)!身家都下注了!...
  9. vbs计算机代码,vbs运行一个程序的代码
  10. 音视频播放器与 H.265 播放探索