(一)图像特征匹配--SIFT

1.1 SIFT背景简介

SIFT算法是David Lowe在1999年提出的局部特征描述子,并在2004年深入发展和完善。

SIFT算法是在尺度空间进行特征检测并确定关键点的位置和关键点所在的尺度。

该关键点方向特征选取该点邻域梯度的主方向,以便实现算子对尺度和方向的无关性。

1.2 SIFT特征向量生成步骤

一幅图像SIFT特征向量的生成步骤主要有如下四步:

(1)检测尺度空间极值点,初步确定关键点的位置和所在尺度; [初步找出关键点群]

(2)精确确定关键点位置和尺度,同时去除低对比度的关键点和不确定的边缘响应点,以便增强匹配稳定性、提高抗噪声能力;[精确确定关键点群并择优筛选]

(3)指定每个关键点的方向参数,以便算子具有旋转不变性;

(4)生成关键点描述子,即生成SIFT特征向量;

1.2.1尺度空间

概念解释:尺度空间:尺度空间是利用高斯核对原始图像进行尺度变换,获得图像多尺度下的尺度空间表示序列,对这些序列进行尺度空间特征提取

其中,二维高斯核定义为:

其中σ被称为尺度坐标, 是高斯正态分布的方差。

注:除高斯核外,尺度函数有很多,但并不是所有的尺度函数都可以构建尺度空间。Koenderink和Lindeberg已经证明,在一些合理的约束下,高斯核是唯一可以产生尺度空间的核,而且是唯一的线性核。

二维图像 在不同的尺度空间可以通过图像与卷积核做卷积求得

这里尺度坐标σ越小表示图像被平滑的越少,σ越大表示图像被平滑的越多。大尺度反映图像概貌特征,小尺度反映图像细节特征。

选择合适的尺度因子是构建尺度空间的关键。

1.2.2 高斯金字塔构建

        1)高斯差分尺度空间(DOG scale-space);

为了在尺度空间有效检测到稳定的关键点,提出了高斯差分尺度空间,它是由不同尺度的高斯差分核与图像卷积而生成的。

图像高斯金字塔有O组,每一组有S层,在实际计算时,使用高斯金字塔每组中相邻上下两层图像相减,下一层的图像由上一层图像降采样得到,得到高斯差分图像。

           

(a)高斯金字塔                                               (b)高斯差分金字塔生成图示

图 高斯金字塔图示

(1)空间极值点检测 [关键点初步筛选]

为了寻找尺度空间极值点,需要每个采样点与它所有的相邻点比较,看其是否比它图像域和尺度域的相邻点大或小。

图 DOG尺度空间局部极值监测

图中中间的检测点与它相同尺度的8个相邻点以及上、下相邻尺度的9*2个点比较,以确保在尺度空间和二维图像空间都监测到极值点。

(2)确定极值点位置 [确定关键点]

通过你和三维二次函数来精确确定关键点位置和尺度。

由于DOG算子会产生较强的边缘效应,,所以需要去除低对比度的关键点和不问稳定的边缘响应点以增强匹配稳定性和提高抗噪声能力。

去除边缘响应点原理: 定义一个不好的高斯差分算子的极值在横跨边缘的地方主曲率大,而垂直边缘的方向主曲率小。主曲率通过一个2*2的Hessian矩阵

求出,令为最大特征值, 为最小特征值,

导数由采样点相邻差估计得到。

D的主曲率和H的特征值成正比,令α = γβ,则

此函数单调递增,可以限制比值γ达到过滤边缘响应点的目的。

(3)求关键点方向

利用关键点邻域像素的梯度方向分布特性为每个关键点制定方向参数,使算子具备旋转不变性。

由此可以求出(x,y)处的方向和梯度。 L所用的尺度是每个关键点所在的尺度。

注:一个特征点有三个属性:位置、尺度和方向

(4)生成SIFT特征向量

图像配准SIFT的更多相关文章

  1. 图像配准:从SIFT到深度学习

      图像配准(Image Registration)是计算机视觉中的基本步骤.在本文中,我们首先介绍基于OpenCV的方法,然后介绍深度学习的方法. 什么是图像配准 图像配准就是找到一幅图像像素到另一 ...

  2. Opencv探索之路(二十):制作一个简易手动图像配准工具

    近日在做基于sift特征点的图像配准时遇到匹配失败的情况,失败的原因在于两幅图像分辨率相差有点大,而且这两幅图是不同时间段的同一场景的图片,所以基于sift点的匹配已经找不到匹配点了.然后老师叫我尝试 ...

  3. CV 两幅图像配准

    http://www.cnblogs.com/Lemon-Li/p/3504717.html 图像配准算法一般可分为: 一.基于图像灰度统计特性配准算法:二.基于图像特征配准算法:三.基于图像理解的配 ...

  4. 【计算机视觉】图像配准(Image Registration)

    (Source:https://blog.sicara.com/image-registration-sift-deep-learning-3c794d794b7a)  图像配准方法概述 图像配准广泛 ...

  5. 非刚性图像配准 matlab简单示例 demons算法

    2011-05-25 17:21 非刚性图像配准 matlab简单示例 demons算法, % Clean clc; clear all; close all; % Compile the mex f ...

  6. 经典的图像匹配算法----SIFT

    经典的图像匹配算法----SIFT  http://mp.weixin.qq.com/s?__biz=MzIzNDM2OTMzOQ==&mid=2247484319&idx=1& ...

  7. 图像配准建立仿射变换模型并用RANSAC算法评估

    当初选方向时就由于从小几何就不好.缺乏空间想像能力才没有选择摄影測量方向而是选择了GIS. 昨天同学找我帮他做图像匹配.这我哪里懂啊,无奈我是一个别人有求于我,总是不好意思开口拒绝的人.于是乎就看着他 ...

  8. 【图像配准】基于互信息的图像配准算法:MI、EMI、ECC算法

    简单介绍: 基于互信息的图像配准算法以其较高的配准精度和广泛的适用性而成为图像配准领域研究的热点之中的一个.而基于互信息的医学图像配准方法被觉得是最好的配准方法之中的一个.基于此.本文将介绍简单的基于 ...

  9. Opencv中使用Surf特征实现图像配准及对透视变换矩阵H的平移修正

    图像配准需要将一张测试图片按照第二张基准图片的尺寸.角度等形态信息进行透视(仿射)变换匹配,本例通过Surf特征的定位和匹配实现图像配准. 配准流程: 1. 提取两幅图像的Surf特征 2. 对Sur ...

随机推荐

  1. [原创] Matlab 指派问题模型代码

    指派问题的基本内容 一般来说指派问题解决的是如何将任务分配到人,使得任务完成的效益最大化(成本型效益则求最小值,利润型效益则求最大值).上述问题一个 0 - 1 整数规划问题. 问题围绕着任务和人展开 ...

  2. Spring boot使用log4j打印日志

    先将maven中spring-boot-starter的日志spring-boot-starter-logging去掉 <dependency> <groupId>org.sp ...

  3. js运动基础2(运动的封装)

    简单运动的封装 先从最简单的封装开始,慢慢的使其更丰富,更实用. 还是上一篇博文的代码,在此不作细说. 需求:点击按钮,让元素匀速运动. <!DOCTYPE html> <html ...

  4. sublime_REPL使用及安装教程(解决Sublime无交互问题)

    谈到python编程工具能想到那些? pycharm?IDLE? Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等,还可自定义键绑定,菜单和工具栏. ...

  5. easyui-datetimebox 控件绑定双击事件实现自动选中当前日期时间

    本方法是在不改变原 js 的情况下,通过扩展方法来实现本目的 首先在 datetimebox 控件中扩展一个 绑定双击事件 的方法 $.extend($.fn.datetimebox.methods, ...

  6. opencv霍夫变换

    霍夫变换不仅可以找出图片中的直线,也可以找出圆,椭圆,三角形等等,只要你能定义出直线方程,圆形的方程等等. 不得不说,现在网上的各种博客质量真的不行,网上一堆文章,乱TM瞎写,误人子弟.本身自己就没有 ...

  7. 【SQL server初级】数据库性能优化二:数据库表优化

    数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第二部分 数据库性能优化二:数据库表优化 优化①:设计规范化表,消除数据冗余 数据库范式是确保数据库结构合理,满足各种查询 ...

  8. MangoDB的下载和安装

    ​ 前面已经简单介绍了MongoDB,今天我们就要正式学习他了,话不多说,咱先来安装. 1.现在MongoDB已经到了4.0版本,咱先去官网下载,MongoDB官网传送门,下载的版本信息如下,点击Do ...

  9. Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解

    1. 引言 在当前的微服务架构方式下,我们会有很多的服务部署在不同的机器上,相互是通过服务调用的方式进行交互,一个完整的业务流程中间会经过很多个微服务的处理和传递,那么,如何能知道每个服务的健康状况就 ...

  10. 浅谈MVC&MTV设计模式

    在目前基于Python语言的几十个Web开发框架中,几乎所有的全栈框架都强制或引导开发者使用MVC设计模式.所谓全栈框架,是指除了封装网络和线程操作,还提供HTTP.数据库读写管理.HTML模板引擎等 ...