Harris角点检测的数学

信息处理 图像处理 opencv 线性代数
2022-01-11 22:48:36

这是 Harris 角点检测的数学表达式:

这是哈里斯角点检测的数学表达式......

但我有以下疑问:

  1. 的物理意义是什么许多参考资料说这是窗口移动的幅度。那么窗口移动了多少?一个像素还是两个像素?uvw
  2. 窗口覆盖的像素位置的总和吗?
  3. 简单地假设是 (x,y) 处的单个像素窗口内的强度的总和w(x,y)=1I(x,y)(x,y)(x,y)
  4. 根据 wiki,他们说图像是 2D 的,用 I 表示,然后要求考虑区域上的图像补丁,然后使用符号(x,y)I(x,y)

我发现掌握数学解释令人困惑。有人有想法吗?

1个回答

这个公式的意思真的很简单。想象一下,您拍摄图像的两个相同大小的小区域,蓝色区域和红色区域:

在此处输入图像描述

窗口函数在红色矩形外等于 0(为简单起见,我们可以假设窗口在红色矩形内简单地保持不变)。因此,窗口函数选择您要查看的像素,并为每个像素分配相对权重。(最常见的是高斯窗口,因为它是旋转对称的,计算效率高,并且强调窗口中心附近的像素。)蓝色矩形移动了 (u,v)。

接下来计算标记为红色和蓝色的图像部分之间的平方差之和,即逐个像素地减去它们,将差值平方并求和结果(为简单起见,假设我们正在查看的区域中的窗口 = 1在)。这为每个可能的 (u,v) -> E(u,v) 提供了一个数字。

让我们看看如果我们计算不同的 u/v 值会发生什么:

首先保持 v=0:

在此处输入图像描述

这应该不足为奇:当它们之间的偏移量 (u,v) 为 0 时,图像部分之间的差异最小。随着您增加两个补丁之间的距离,差异平方和也会增加。

保持 u=0:

在此处输入图像描述

该图看起来很相似,但是当您将蓝色矩形沿边缘方向移动时,两个图像部分之间的平方差之和要小得多。

E(u,v) 的完整图如下所示:

在此处输入图像描述

情节看起来有点像“峡谷”:如果您将图像沿峡谷方向移动,则只有很小的差异。那是因为这个图像块具有主导(垂直)方向。

我们可以对不同的图像补丁做同样的事情:

在此处输入图像描述

在这里,E(u,v) 的图看起来不同:

在此处输入图像描述

无论您以哪种方式移动补丁,它总是看起来不同。

所以函数 E(u,v) 的形状告诉我们一些关于图像补丁的信息

  • 如果 E(u,v) 在任何地方都接近 0,则您正在查看的图像补丁中没有纹理
  • 如果 E(u,v) 是“峡谷形”,则补丁具有主导方向(这可能是边缘或纹理)
  • 如果 E(u,v) 是“锥形”,则补丁具有纹理,但没有主导方向。这就是角检测器正在寻找的那种补丁。

许多参考资料说这是窗口“w”移动的幅度......那么窗口移动了多少?一个像素......两个像素?

通常,您根本不计算 E(u,v)。您只对 (u,v)=(0,0) 附近的形状感兴趣。所以你只想要 E(u,v) 在 (0,0) 附近的泰勒展开,它完全描述了它的“形状”。

窗口覆盖的像素位置的总和吗?

从数学上讲,让总和范围覆盖所有像素更优雅。实际上,对窗口为 0 的像素求和是没有意义的。