ORB采取FAST算法检测特征点,采取BRIEF算法计算特征点描述子。

1、检测特征点

检测候选特征点周围一圈的像素值,若有足够多的像素值与候选特征点的差异都较大,则认为该候选特征点是特征点。

对于上图点p,以半径3画圆,则其周围共16个像素值待检测。

为了加快检测速度,一般采取FAST-N算法,即只检测候选特征点周围N个像素值。

2、BRIEF算法计算特征描述子

在候选特征点的周围以一定模式选取N个点对,比较这N个点对,把比较结果组合成描述子。

如下图,p点周围选取4个点对,设为(A1,B1),(A2,B2),(A3,B3),(A4,B4)

比较方法:

假设:T(A1,B1)=0,T(A2,B2)=1,T(A3,B3)=0,T(A4,B4)=1

则p的描述子是0101

理想的特征描述子应具有旋转、尺度一致性。

ORB并没有解决尺度一致性问题,只是解决了旋转一致性问题。

上述BRIEF算法中,我们以特征点为原点,以特定长度为半径画圆,以水平方向为X轴,竖直方向为Y轴。当图片发生旋转时,坐标系不变,则根据特定模式选取的点对就会发生改变导致描述子发生变化。因此需要建立新的坐标系,使得坐标系随着图片的旋转而旋转。

解决方法:以关键点和其取点区域的形心的连线为X轴建立坐标系。因为形心随物体的旋转而旋转,因此实现了坐标轴的旋转。

ORB(oriented FAST and rotated BRIEF)特征提取与检测的更多相关文章

  1. 图像处理检测方法 — ORB(Oriented FAST and Rotated BRIEF)

    1.FAST  FAST算子的基本原理是:若某像素点与其周围领域内足够多的连续的像素点存在某一属性差异,并且该差异大于指定阈值,则可以断定该像素点与其邻域像素有可被识别的不同之处,可以作为一个特征点( ...

  2. Opencv 特征提取与检测-图像特征描述

    图像特征描述 什么是图像特征 可以表达图像中对象的主要信息.并且以此为依据可以从其它未知图像中检测出相似或者相同对象 常见的图像特征 常见的图像特征  边缘  角点  纹理 图像特征描述  描 ...

  3. Opencv 特征提取与检测-Haar特征

    Haar特征介绍(Haar Like Features) 高类间变异性 低类内变异性 局部强度差 不同尺度 计算效率高 这些所谓的特征不就是一堆堆带条纹的矩形么,到底是干什么用的?我这样给出 ...

  4. [OpenCV-Python] OpenCV 中图像特征提取与描述 部分 V (二)

    部分 V图像特征提取与描述 OpenCV-Python 中文教程(搬运)目录 34 角点检测的 FAST 算法 目标 • 理解 FAST 算法的基础 • 使用 OpenCV 中的 FAST 算法相关函 ...

  5. 第一篇 特征提取以及openvslam中的相关实现详解

    参考尺度空间理论 金字塔 当用一个机器视觉系统分析未知场景时,计算机没有办法预先知道图像中物体尺度,因此,我们需要同时考虑图像在多尺度下的描述,获知感兴趣物体的最佳尺度.所以在很多时候,我们会在将图像 ...

  6. SLAM论文阅读笔记

    [1]陈卫东, 张飞. 移动机器人的同步自定位与地图创建研究进展[J]. 控制理论与应用, 2005, 22(3):455-460. [2]Cadena C, Carlone L, Carrillo ...

  7. OpenCV 之 特征检测

    特征,也称 兴趣点 或 关键点,如下:蓝框内区域平坦,无特征:黑框内有"边缘",红框内有"角点",后二者都可视为"特征" 角点作为一种特征, ...

  8. 深度学习图像配准 Image Registration: From SIFT to Deep Learning

    Image Registration is a fundamental step in Computer Vision. In this article, we present OpenCV feat ...

  9. OpenCV-Python Tutorials目录

    版本 3.4.6 1 Introduction to OpenCV OpenCV介绍Learn how to setup OpenCV-Python on your computer! 2 Gui F ...

随机推荐

  1. RCNN 目标识别基本原理

    RCNN- 将CNN引入目标检测的开山之作 from:https://zhuanlan.zhihu.com/p/23006190 前面一直在写传统机器学习.从本篇开始写一写 深度学习的内容. 可能需要 ...

  2. Find a way out of the ClassLoader maze

    June 6, 2003 Q: When should I use Thread.getContextClassLoader() ? A: Although not frequently asked, ...

  3. 方便好用的 Idea mybatis 插件 MyBatisCodeHelper

    优点: 1.mapper文件(即表对应的dao)与xml文件自由切换,方便代码评审: 2.自动代码生成功能提高开发效率,mysql数据库创建好表结构,写完 pojo(注意字段类型要统一用对象类型!), ...

  4. C++解析四-友员函数、内联函数、静态成员

    友元函数 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员.尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数.友元可以是一个函 ...

  5. angular4-表单

    导入表单模块 import { FormsModule } from '@angular/forms'; // ... @NgModule({ imports: [BrowserModule, For ...

  6. 无法卸载Sql Server 的解决办法

    提示如下: 解决办法: 命令提示符——>wmic——>product list 找到与Sql Server 有关的程序: 重新打开一个命令提示符: 执行卸载命令:msiexec /x {7 ...

  7. leetcode python 003

    ## 给定一个字符串,求其最长无重复的子字符串##给定“abcabcbb”,答案是“abc”,长度为3.##给定“bbbbb”,答案是“b”,长度为1.##鉴于“pwwkew”,答案是“wke”,长度 ...

  8. CSS学习笔记-03- 过渡模块之前奏篇 a标签的伪类选择器

    CSS3 2D转换CSS3 3D转换CSS3 过渡CSS3 动画 CSS3 的四大金刚. 想要实现酷炫的视觉效果,上面4个是必须要掌握的.学习之前,先复习一下 视觉盛宴的前菜 :a标签的伪类选择器 铛 ...

  9. day 35 关于线程

    并发编程之协程   对于单线程下,我们不可避免程序中出现io操作,但如果我们能在自己的程序中(即用户程序级别,而非操作系统级别)控制单线程下的多个任务能在一个任务遇到io阻塞时就切换到另外一个任务去计 ...

  10. linux之ls、ll

    ls == list,根据不同的选项,列举指定目录或文件的相关信息,是Unix/Linux下最常用的命令之一,cd到某一目录下后执行的第一个命令. ls命令格式:ls [OPTION]... [FIL ...