Harris Corner

Harris Corner网上已经有很多的资料了,但它也是我读研究生后读的第一篇论文,对我有一种特别的意义。

这篇文章我想从几个方面来讲解Harris Corner,一是Harris Corner的思想,二是Harris Corner重要公式的推导,三是从图像的层面直观的观察每一个公式的结果。本人能力有限,如有纰漏,万望指正。Any advice and suggestions will be greatly appreciated。

我们的目的是在图像上找到角点。那我们在图像上设置一个小窗,然后我们将小窗再多个方向进行微小的移动,比对朝每个方向移动后的小窗与原始小窗中的数据,可能产生以下三种情况:

1.原始小窗在一个平面上,则小窗无论朝哪个方向进行移动后,改变的数值都很小;

2.原始小窗在一条边缘上,则小窗朝边缘的线性方向移动时,改变很小,但朝别的方向进行移动时,改变很大;

3.原始小窗在一个角点上,则无论它朝任何方向进行移动,都会有较大的改变

我们用数学公式对这个思想进行描述:

这是一个自相关函数,x,y代表的是小窗中原始图像的位置,detaX和detaY表示偏移量,w是一个平滑函数

中括号内部的函数表示对原始小窗和移动后的小窗进行距离的计算,对多个方向的小窗进行有一个高斯加权求和,得到一个响应值

对这个公式进行推导。

引入二元泰勒展开式,则

带入自相关函数

只观察大括号内

再带入自相关函数

考虑α,β为M矩阵的两个特征值:

如果两个特征值都很小,则说明窗口再各个方向变换都不大,说明它在平面内;

如果其中一个特征值很大,而另一个很小,则说明窗口在一个方向变化小,而另一个方向变换较大,说明窗口在边缘上

如果两个特征值都比较大,而且近似,那么说明这个窗口无论朝什么方向移动都比较大,说明窗口在角点上

可以知道矩阵的迹和矩阵的行列式可由下式算出

为了简化计算我们计算

当R大于设定阀值时,我们就认为当前点是角点。

考虑:

X,Y我们可以理解为图像在x和y方向上的一阶导,对于图像,我们可以用卷积模板进行卷积操作来实现

针对原始图像

对应的偏导图像X,Y分别为

这是一个简单的边缘检测。

针对自先关函数进行变形可得到

其中,

A,B,C对应M矩阵中的A,B,C

接着对图像M矩阵进行运算

得到相应图片

Harris计算特征值来判别角点,因此对方向有自适应性,所以能够具有旋转不变性。

但是针对不同尺度的角点,Harris由于并没有改变图片和模板大小,所以不能检测到别的尺度的角点。

还有一点,阀值R对图片亮度的变化不敏感,改变阀值能够很大程度的影响检测到的角点数目。

原文地址:https://www.cnblogs.com/YuchengLuo/p/8597254.html

时间: 2024-10-03 21:48:12

Harris Corner的相关文章

Harris Corner(Harris角检测)

在做图像匹配时,常需要对两幅图像中的特征点进行匹配.为了保证匹配的准确性,所选择的特征必须有其独特性,角点可以作为一种不错的特征. 那么为什么角点有其独特性呢?角点往往是两条边缘的交点,它是两条边缘方向变换的一种表示,因此其两个方向的梯度变换通常都比较大并且容易检测到. 这里我们理解一下Harris Corner 一种角点检测的算法 角点检测基本原理: 人们通常通过在一个小的窗口区域内观察点的灰度值大小来识别角点,如果往任何方向移动窗口都会引起比较大的灰度变换那么往往这就是我们要找的角点.如下图

OpenCV Feature Detection and Description -- Harris Corner Detection Harris角点检测

原文链接 https://docs.opencv.org/4.1.2/dc/d0d/tutorial_py_features_harris.html 阅读文档学习opencv 如有问题,大家指出-- Goal In this chapter, We will understand the concepts behind Harris Corner Detection. We will see the functions: cv.cornerHarris(), cv.cornerSubPix()

OpenCV Tutorials —— Harris corner detector

Harris 角点检测 ~~   Why is a corner so special Because, since it is the intersection of two edges, it represents a point in which the directions of these two edges change.  角点是两条边界的交点,体现了两个梯度方向上的变化 Hence, the gradient of the image (in both directions) h

OpenCV2学习笔记(十):特征点检测之Harris法

在计算机视觉中,特征点的概念被大量用于解决物体识别.图像匹配.视觉跟踪.三维重建等问题,比如图像中物体的角点,它们是在图像中可被轻易而精确地定位的二维特征.顾名思义,特征点检测的思想是无需观察整幅图像,而是通过选择某些特殊点,然后对它们执行局部分析.如果能检测到足够多的这种点,同时它们的区分度很高,并且可以精确定位稳定的特征,那么这个方法就很有效.这里主要使用Harris特征检测器检测图像角点.使用的开发平台为Qt5.3.2+OpenCV2.4.9. Harris角点的理论部分可见这篇blog:

Harris角点检测学习

1.角点的定义与性质 角点是一种局部特征,具有旋转不变性和不随光照条件变化而变化的特点,一般将图像中曲率足够高或者曲率变化明显的点作为角点.检测得到的角点特征通常用于图像匹配.目标跟踪.运动估计等方面. 2.Harris角点 1)定性描述 该算法中,将图像分为平坦区域.边缘.角点三部分.平坦区域中像素灰度在各个方向上变换都很小,边缘上的像素灰度在某个方向变化很大,但是在另一些方向变化很小:位于角点上的像素灰度则在各个方向上的变化都比较大.这是通过人眼观察得到的直观感受. 2)量化的数学表达 不同

寻找Harris、Shi-Tomasi和亚像素角点

Harris.Shi-Tomasi和亚像素角点都是角点,隶属于特征点这个大类(特征点可以分为边缘.角点.斑点). 一.Harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性较高,但是也可能出现有用信息丢失的情况. 函数:cornerHarris() void cv::cornerHarris ( InputArray  src,  //需要为8位单通道     OutputArray  dst,  //结果     int  blockSize, //领域大小     int  ksi

openCV2马拉松第19圈——Harris角点检测(自己实现)

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/26824529 收入囊中 使用OpenCV的connerHarris实现角点检测 自己实现Harris算法 下面是自己实现的一个效果图 因为阀值设置比较高,所以房屋周围没有找出来 葵花宝典 在此之前,我们讲过边缘的检测,边缘检测的基本原理就是x方向或者y方向梯度变化很大,角点,顾名思义,就是两个方向的梯度变化都很大. 左1,平滑区域,没有边缘和角点

OpenCV Tutorials —— Creating yor own corner detector

Use the OpenCV function cornerEigenValsAndVecs to find the eigenvalues and eigenvectors to determine if a pixel is a corner. Use the OpenCV function cornerMinEigenVal to find the minimum eigenvalues for corner detection.   最小特征值对应的角点监测 ~~ 对自相关矩阵 M 进行

OpenCV Feature Detection and Description -- Shi-Tomasi Corner Detector

原文链接:https://docs.opencv.org/4.1.2/d4/d8c/tutorial_py_shi_tomasi.html 如有错误欢迎指出-谢谢 Goal In this chapter, We will learn about the another corner detector: Shi-Tomasi Corner Detector We will see the function: cv.goodFeaturesToTrack() 目标: 在此章节, 我们会学习其他的角