Harris的角点检测和特征匹配

article/2025/10/8 4:30:35

一.特征检测(提取)

        基于特征的图像配准方法是图像配准中最常见的方法之一。它不是直接利用图像像素值,二十通过像素值导出的符号特征(如特征点、特征线、特征区域)来实现图像配准,因此可以克服利用灰度信息进行图像配准的缺点,主要体现在以下三个方面:(1)利用特征点而不是图像灰度信息,大大减少了在匹配过程中的计算量;(2)特征点的匹配度量值相对位置变化比较敏感,可以提高匹配的精度;(3)特征点的提取过程可以减少噪声的影响,对灰度变化、图像形变以及遮挡等都有较好的适应能力。

       一类重要的点特征:角点(corner points),其定义主要有以下:

 

 

  1.  局部窗口沿各方向移动,灰度均产生明显变化的点      
  2. 图像局部曲率突变的点
  3. 典型的角点检测算法:Harris角点检测、CSS角点检测
  4. Harris角点检测基本思想
    从图像局部的小窗口观察图像特征,角点定义:窗口向任意方向的移动都导致图像灰度的明显变化(如下图)

 

Harris检测:数学表达

 

将图像窗口平移[u,v]产生灰度变化E(u,v)

 

由泰勒展开,得:

 

利用角点响应函数:

 

判断特征点是否为角点的依据:R只与M值有关,R为大数值正数时特征点为角点,R为大数值负数时为边缘,R为小数值时为平坦区,如下图:

寻找R位于一定阈值之上的局部最大值,去除伪角点。

Harris角点检测流程:
1.通过高斯函数的导数对原始图像进行卷积计算;图像在水平方向和垂直方向的导数Ix和Iy;
2.计算对应这些梯度外积即(Ix2 、Iy2、IxIy)三个图像如下图:
4.使用高斯函数对以上图像进行卷积滤波;
3.使用前面的公式计算角点响应函数R值;
5.对计算到的角点图像进行局部极大值抑制。

 
  1.  

二、特征描述 

 在检测到特征(关键点)之后,我们必须匹配它们,也就是说,我们必须确定哪些特征来自于不同图像中的对应位置。物体识别的核心问题是将同一目标在不同时间、不同分辨率、不同光照、不同位姿情况下所成的图像相匹配。而为了进行匹配,我们首先要合理的表示图像。

SIFT(Scale invariant feature transform)特征通过计算检测到的关键点周围16x16窗口内每一个像素的梯度得到。在这里我只是简单的实现类似于SIFT特征描述子的特征描述方法,即我通过每4x4的四分之一象限,通过将加权梯度值加到直方图八个方向区间中的一个,计算出一个梯度方向直方图,因此在每一个特征点都会形成一个128维的非负值形成了一个原始版本的SIFT描述子向量如下图,并且将其归一化以减少对比度和增益的影响,最后为了使描述子对其他各种光度变化鲁棒,再将这些值以0.2截尾,然后再归一化到单位长度。

 

 

三、特征匹配

一旦我们从两幅或者多幅图像中提取到特征及其描述子后,下一步就是要在这些图像之间建立一些初始特征之间的匹配。
匹配策略一:对前面提取到的两幅图像的128维特征描述子向量做欧式距离度量,最简单的一个策略就是先设定一个阈值(最大距离),然后返回在这个阈值范围之内的另外一个图像中的所有匹配。
匹配策略二:做最近邻匹配,即比较最近邻距离和次近邻距离的比值,即最近邻比率(NNDR)。

匹配策略一的缺点是,如果阈值设得太高,就会产生误报,也就是说会出现不正确的匹配。如果阈值设得太低,就会产生很多“漏报”,也就是说,很多正确的匹配被丢失。

固定阈值,最近邻和最近邻比率匹配。在固定阈值(虚线圆)下,描述子DA未能与DB匹配,DD错误地与DC和DE匹配。如果我们选择最近邻,DA和DE匹配。使用最近邻比率(NNDR),小的NNDR(d1/d2)正确地将DA和DB匹配,大的NNDR(d1'/d2')正确地拒绝DD与DC、DE的匹配。

代码如下:

https://download.csdn.net/download/pbymw8iwm/10659247


http://chatgpt.dhexx.cn/article/FI443Z5g.shtml

相关文章

Harris角点及Shi-Tomasi角点检测

一、角点定义 有定义角点的几段话: 1、角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模和目标识别等领域中。也称为特征点检测。 角点通常被定义为两条边的交点&#xff0…

Harris角点检测算法详解

Harris角点算法 特征点检测广泛应用到目标匹配、目标跟踪、三维重建等应用中,在进行目标建模时会对图像进行目标特征的提取,常用的有颜色、角点、特征点、轮廓、纹理等特征。现在开始讲解常用的特征点检测,其中Harris角点检测是特征点检测的基…

Harris角点检测算子

Harris角点检测算子是于1988年由CHris Harris & Mike Stephens提出来的。在具体展开之前,不得不提一下Moravec早在1981就提出来的Moravec角点检测算子。 1.Moravec角点检测算子 Moravec角点检测算子的思想其实特别简单,在图像上取一个W*W的“滑动窗…

特征检测之Harris角点检测

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达特征点又叫兴趣点或者角点。常被用于目标匹配,目标跟踪,三维重建等应用中。点特征主要指图像中的明显点,如突出的角点、边缘端点、极值…

Harris角点检测原理分析

主要参考了:http://blog.csdn.net/yudingjun0611/article/details/7991601 Harris角点检测算子 本文将该文拷贝了过来,并做了一些数学方面的补充,以方便对数学已经生疏的小伙伴们参考理解。由于补充的内容还挺多,所以还是将本文标…

【理解】经典角点检测算法--Harris角点

目录 什么是角点角点检测算法的原始思想:Harris角点检测原理Harris角点算法的基本步骤实践:Harris角点检测可能会用到的OpenCV API:手写API:1.展示图片:2.手写Harris特征:3.手写非极大值抑制:4.在原图标注角…

角点检测(Harris角点检测法)

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录 原理讲解【1】为何选取角点作为特征?【2】角点的定义&#xff1a…

Harris角点检测原理详解

关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,这里我想对有些地方做出补充说明&#xff…

OpenCV——Harris角点检测

目录 一、Harris角点检测二、C代码三、python代码四、结果展示1、原始图像2、Harris角点 一、Harris角点检测 角点原理来源于人对角点的感性判断,即图像在各个方向灰度有明显变化。算法的核心是利用局部窗口在图像上进行移动判断灰度发生较大的变化,所以…

Harris角点检测

目录 一.基本原理 1.基本思想 2.数学模型 二.实现代码 三.实验结果与分析 1.场景一:纹理平坦场景 2.场景二:多水平边缘场景 3.场景三:角点丰富场景 四.实验总结 一.基本原理 1.基本思想 判断图像的角点,可以利用卷积窗…

harris角点检测原理

目录 1、角点概述 2、数学知识 3、Harris角点检测基本原理 4、优化改进 1、角点概述 如果一个点在任意方向的一个微小变动都会引起灰度很大的变化,那么我们就把它称之为角点,也就是一阶导数(即灰度图的梯度)中的局部最大所对应的像素点就是角点。在现…

计算机视觉(角点检测)- 1 - Harris角点检测

计算机视觉(角点检测)- 1 - Harris角点检测 学习前言一、Harris角点检测  1、什么是角点?  2、Harris角点检测的基本原理&基本思想  3、Harris角点检测的数学表达  4、获取点数据后,计算 I x , I y I_x&#x…

Visual Studio的sln工程设置VTK、ITK项目

Visual Studio的sln工程设置VTK、ITK项目 最近在学习使用VTK和ITK,使用Visual Studio新建Qt项目时发现项目不是使用过去使用的CMake组织,而是使用的Visual Studio默认的.sln文件,便学习了一下使用Visual Studio的sln工程设置VTK、ITK项目&am…

windows sln的qt 工程

看起来应该vs开发 qt项目不需要qtcreator? 画界面应该还是需要的。装一个vs的插件 2019的如果打开的工程跟你本地的qt不一致 在工程名字上右键change qt version弹出一个框框,里面有俩这里应该选第一个,这个是我本地安装的,vs2015 x86 版本windows sln 工程【这个新建一个q…

Visual studio 2015修改项目文件名及.sln文件名

Visual studio 2015修改项目文件名及.sln文件名: 问题描述 提示:在使用原有的项目代建一个新项目时,为了方便区分与原项目,故要修改该项目的项目名。 如图: 需要将QtGuiApplication1.vcxproj修改成CARFILM.vcxproj&…

C# 解析 sln 文件

我的项目,编码工具 需要检测打开一个工程,获取所有项目。 但是发现原来的方法,如果存在文件夹,把项目放在文件夹中,那么是无法获得项目,于是我就找了一个方法去获得sln文件的所有项目。 原先使用的方法dte…

Visual studio无法打开C#\.sln文件,不兼容

23/7/19文章更新:后来我总结了我这个问题出现的原因,是因为我的VS是2015版本,本来安装在笔记本电脑上,为了转到台式机,直接U盘复制过来的,然后复制过来安装的时候提示某个东西安装失败,我就点击…

.sln图标异常修复

.sln图标显示异常 本人就喜欢新版本的东西,电脑上安装过vs2017,vs2019,想体验最新的vs2022是什么感觉,之后sln图标显示异常,不太顺眼 这是由于该文件VSFileHandler_64.dll异常带来的问题,下载我提供的文件&#xff0c…

Visual Studio打开无sln项目,修复无效sln文件

Visual Studio打开无sln项目,修复无效sln文件 打开项目文件地址(可在项目名右键-在文件资源管理器中打开文件夹) 打开-项目名.vcxproj文件 VC左上角点击全部保存,选择保存位置储存新的sln头文件 4.sln文件修复完成

VS2019 使用命令行编译工程sln

需要使用 devenv.com这个工具 具体的执行如下: test>"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.com" build\1.sln /Build执行结果如下: 在对应的路径下找到可执行文件运行