Back

Harris 角点

Moravec Detector

Moravec角点检测是第一个提出兴趣点(interest points)的Paper。它的主要思想是:以每个像素为中心,有一个固定的滑动窗口。该方法计算并在八个方向上(纵横以及斜对角)搜索每个像素的最小强度变化,如果最小值大于给定阈值,则检测出感兴趣点。

Moravec示意图

其可以用数学公式表达为:$E(u, v)=\sum_{x, y} w(x, y)[I(x+u, y+v)-I(x, y)]^{2}$

  • $E(u,v)$代表像素中心$(x,y)$在偏移量$(u,v)$的方向上的强度变化。

  • $w(x,y)$是一个指示函数,当$(x,y)$在滑动窗口内时,为1,若在滑动窗口外,则为0.

  • $I(x,y)$指的是在像素点(x,y)处的光强或者说是灰度值。

值得说明的是,这个式子是Harris总结的。

Harris Corner Detector

Moravec存在着许多不足。非常重要的一点就是:由于对于灰度值变化的梯度判断是离散的进行在8个方向,所以不具有旋转不变性;同时还会出现误判,尤其是当一条线不平行于这八个方向时,线上的点也会被误检测为角点。

为了进一步改进Moravec角点检测,Harris提出了著名的Harris角点检测。

$$ \begin{aligned} &E(u, v)=\sum_{(x, y)} w(x, y)[I(x+u, y+v)-I(x, y)]^{2}\
&\approx \sum_{(x, y)} w(x, y)\left[I(x, y)+\frac{\partial I}{\partial x}(x, y) u+\frac{\partial I}{\partial y}(x, y) v-I(x, y)\right]^{2}\qquad\text { (一阶泰勒展开) }\
&\approx \sum_{(x, y)} w(x, y)\left[\frac{\partial I}{\partial x}(x, y) u+\frac{\partial I}{\partial y}(x, y) v\right]^{2} \qquad \text { (消除重复项) }\
&=\sum_{x, y} w(x, y)\left(u^{2} f_{x}^{2}(x, y)+2 u v f_{x}(x, y) f_{y}(x, y)+v^{2} f_{y}^{2}(x, y)\right)\text { }\
&\begin{array}{l} =\sum_{x, y} w(x, y)\left(u^{2} I_{x}^{2}+2 u v I_{x} I_{y}+v^{2} I_{y}^{2}\right)\qquad \text { (简化) } \
=\left[\begin{array}{ll} u & v \end{array}\right]\left(\sum w(x, y)\left[\begin{array}{cc} I_{x}^{2} & I_{x} I_{y} \
I_{x} I_{y} & I_{y}^{2} \end{array}\right]\right)\left[\begin{array}{l} u \
v \end{array}\right] \
=\left[\begin{array}{l} u \
v \end{array}\right]^{T} H\left[\begin{array}{l} u \
v \end{array}\right] \end{array} \end{aligned} $$ 可以看到,E的变化主要与H的大小相关。所以只需要分析H的变化就可以得到E的变化趋势。

图像梯度:$\Delta I(x, y)=\left(\frac{\partial I}{\partial x}(x, y), \frac{\partial I}{\partial y}(x, y)\right)$

Harris矩阵:$H=\left[\begin{array}{cc}\sum_{(x, y)} w(x, y)\left(\frac{\partial I}{\partial x}(x, y)\right)^{2} & \left.\sum_{(x, y)} w(x, y)\left(\frac{\partial I}{\partial x}(x, y)\right) \frac{\partial I}{\partial y}(x, y)\right) \ \left.\sum_{(x, y)} w(x, y)\left(\frac{\partial I}{\partial x}(x, y)\right) \frac{\partial I}{\partial y}(x, y)\right) & \sum_{(x, y)} w(x, y)\left(\frac{\partial I}{\partial y}(x, y)\right)^{2}\end{array}\right]$

w:表示权重,可以是0/1, 也可以是以点为中心的高斯权重。

图像的水平梯度与垂直梯度:$I_{x}=\frac{\partial I(x+u, y+v)}{\partial x} \quad I_{y}=\frac{\partial I(x+u, y+v)}{\partial y}$

Harris矩阵的特征值分析

对于图像:

  • 平坦区域:梯度方向各异,但是梯度幅值变化不大
  • 线性边缘:梯度幅值改变较大,梯度方向改变不大
  • 角点:梯度方向和梯度幅值变化都较大

$\mathbf{H}$就是Harris矩阵。对其进行奇异值分解,两个特征值分别反映互相垂直方向上的梯度变化情况,分别代表最快和最慢的方向。特征值大的变化快,特征值小的变化慢。

进行特征值分解:$S V D(H)=U \sum V,\left(\lambda_{1}, \lambda_{2}\right), \quad \lambda_{1}>\lambda_{2}$

那么就有:

  • 特征值都比较大,则窗口中含有角点。
  • 特征值一个比较大,一个比较小,则窗口中含有边缘线。
  • 特征值都比较小,则处在平坦区域。

Morris检测

Harris角点准则

$$\operatorname{det} H=\lambda_{1} \lambda_{2}$$

$$\operatorname{trace} H=\lambda_{1}+\lambda_{2}$$

所以某点的响应函数:

$R=\operatorname{det}(H)-\operatorname{ktrace}(H)^{2}=\lambda_{1} \lambda_{2}-k\left(\lambda_{1}+\lambda_{2}\right)^{2}, k=0.04$

利用C与阈值比较判断,来判断其是否是角点。

  • $R<0$ 边缘点
  • $R \approx 0$ 平坦点
  • $R > 0$ 角点

Shi-Tomasi 角点检测

在Harris角点检测的基础上,Shi和Tomasi 在1993的一篇论文《Good Features to track》中提出了基于Harris角点检测的Shi-Tomasi方法。

Harris角点检测的稳定性与k值有关,而k是个经验值。不好设定。

在此基础上,Shi与Tomasi发现,焦点的稳定性与矩阵的娇小的特征值有关,直接使用较小的特征值作为分数。

所以: $R=\min \left(\lambda_{1}, \lambda_{2}\right)$

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy