【计算机视觉】角点检测和立体匹配

目录

【计算机视觉】角点检测、不变特征和立体匹配

1. 角点检测

1.1. Template Matching

1.2. Second-order Derivative Schemes

1.3. A Median Filter Based Corner Detector

1.4. Harris Corner Detection

2. 局部不变特征检测(立体匹配)

【计算机视觉】角点检测、不变特征和立体匹配

1. 角点检测

角点是一种重要的图像局部特征: 通常被定义为两条边的交点,角点的局部领域应该具有两个不同区域的不同方向的边界。它还有一种定义: 如果某一点在任意方向的一个微小变动都会引起灰度很大变化,那么就称为角点。角点一般是曲线局部曲率极大值点,线段重点或具有某种物理量(如:强度)极大值/极小值的点。

角点具有可区分性强的优点,在视角变换的情况下依然能保持稳定的特征,常用于特征匹配等任务。

【计算机视觉】角点检测和立体匹配

1.1. Template Matching

【计算机视觉】角点检测和立体匹配

左侧为检测45度角点的template,右侧为检测90度角点的template。

但这种方法检测角度固定,template相对图像的大小也会影响检测精度。

1.2. Second-order Derivative Schemes

根据定义,角点应该是在灰度快速变化的区域,其梯度和梯度变化率都很大。我们可以利用这种局部变化特性来进行角点检测。我们对某个像素点的灰度值二阶Taylor展开:

【计算机视觉】角点检测和立体匹配

【计算机视觉】角点检测和立体匹配

我们可以得到二阶导数的对称矩阵(结构张量):

【计算机视觉】角点检测和立体匹配

这个矩阵给出像素点局部的曲率信息。我们对坐标系适当旋转,就可以得到这个矩阵的对对角形式:

【计算机视觉】角点检测和立体匹配

我们主要利用其旋转不变性,进行角点检测。一个重要的性质是:经过旋转变换,矩阵的trace和行列式是不变的。Beaudet定义了两个算子描述这一性质:

【计算机视觉】角点检测和立体匹配

​​​​

【计算机视觉】角点检测和立体匹配

【计算机视觉】角点检测和立体匹配

这是一个理想的角的草图,用来给出一个平滑变化的强度函数。虚线表示斜坡上不同强度值下最大水平曲率的路径。DET操作符在P和Q处给出了最大的响应,需要找到理想的角位置C,其中DET给出了零响应。

另一种角点检测方法是Kitchen和Rosenfeld(1982)提出的。他们从考虑边缘方向的局部变化开始,研究了各种定位角的策略。他们发现了一个非常有效的算子,它可以估计梯度方向向量沿水平边缘切线方向的局部变化率的投影,并证明了它在数学上与计算强度函数I水平曲率κ是相同的。为了获得一个角的强度的真实指示,他们将κ乘以局部强度梯度的大小g:

【计算机视觉】角点检测和立体匹配

先用一个median filter滤除角点,得到一个去除角点的新图像

【计算机视觉】角点检测和立体匹配,再用原图像【计算机视觉】角点检测和立体匹配减去新图像【计算机视觉】角点检测和立体匹配,就可以获得角点:【计算机视觉】角点检测和立体匹配。但这种方法是不可靠的,它可能不能检测出角点,反而将噪声检测了出来。幸运地是,人们证明了中值检测器有以下优点:
  1. 首先,在没有噪声的情况下,强信号不会出现在背景区域,也不会出现在直线边缘附近,因为中值滤波器不会显著地移动或修改这些边缘。
  2. 如果一个窗口从背景区域逐渐移动到它的中心像素刚好在一个凸物体的角上,中值滤波器的输出没有变化

因此有一个很强的差异信号可以表明存在角点。

根据图像形态学的知识,我们知道假设一个强度函数沿某一方向x单调增加,在其正交方向y上强度是不变的。因此,圆窗口内的中值等于领域中心的值。这就意味着,如果水平曲率局部为零,中值角检测器得到零信号。

因此,基于中值的角点检测器是利用水平曲率和强度梯度来检测角点的。其信号与水平曲率和强度梯度都成正比。

【计算机视觉】角点检测和立体匹配

其中,D表示位移;a表示曲率半径;g表示梯度;κ表示水平曲率大小。

1.4. Harris Corner Detection

Harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性高,尤其对L型角点检测精度很高。但由于采用了高斯滤波,运算速度相对较慢,角点信息有丢失和位置偏移的现象。

【计算机视觉】角点检测和立体匹配

Harris角点检测就是取某个像素的一个邻域窗口,当这个窗口在各个方向上进行小范围移动时,观察窗口内平均的像素灰度值的变化(即,E(u,v),Window-averaged change of intensity)。从上图可知,我们可以将一幅图像大致分为三个区域(’flat’,’edge’,’corner’),这三个区域变化是不一样的。

【计算机视觉】角点检测和立体匹配

角点检测信号可以定义为:

【计算机视觉】角点检测和立体匹配

【计算机视觉】角点检测和立体匹配

【计算机视觉】角点检测和立体匹配

【计算机视觉】角点检测和立体匹配

还有一种更好的定义:

【计算机视觉】角点检测和立体匹配
  • Corner:在水平、竖直两个方向上变化均较大的点,即Ix、Iy都较大;
  • Edge :仅在水平、或者仅在竖直方向有较大的点,即Ix和Iy只有其一较大 ;
  • Flat : 在水平、竖直方向的变化量均较小的点,即Ix、Iy都较小;

这样通过判断两个变量的值来判断角点毕竟不是很方便。于是,定义了角点响应函数R(corner response function):

【计算机视觉】角点检测和立体匹配

对与三种不同区域,R值如下图所示。

【计算机视觉】角点检测和立体匹配

2. 局部不变特征检测(立体匹配)

Original: https://blog.csdn.net/qq_41502322/article/details/124314673
Author: HelloNettt
Title: 【计算机视觉】角点检测和立体匹配

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/681983/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球