角点检测--基于梯度的方法(Moravec角点检测、Harris角点检测、Shi-Tomasi角点检测)

Moravec Detector

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

Moravec示意图

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

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

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

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

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

Harris Corner Detector

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

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

E ( u , v ) = ∑ ( x , y ) w ( x , y ) [ I ( x + u , y + v ) − I ( x , y ) ] 2 ≈ ∑ ( x , y ) w ( x , y ) [ I ( x , y ) + ∂ I ∂ x ( x , y ) u + ∂ I ∂ y ( x , y ) v − I ( x , y ) ] 2  (一阶泰勒展开)  ≈ ∑ ( x , y ) w ( x , y ) [ ∂ I ∂ x ( x , y ) u + ∂ I ∂ y ( x , y ) v ] 2  (消除重复项)  = ∑ x , y w ( x , y ) ( 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 ) )   = ∑ x , y w ( x , y ) ( u 2 I x 2 + 2 u v I x I y + v 2 I y 2 )  (简化)  = [ u v ] ( ∑ w ( x , y ) [ I x 2 I x I y I x I y I y 2 ] ) [ u v ] = [ u v ] T H [ u v ] \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(u,v)=(x,y)w(x,y)[I(x+u,y+v)I(x,y)]2(x,y)w(x,y)[I(x,y)+xI(x,y)u+yI(x,y)vI(x,y)]2 (一阶泰勒展开(x,y)w(x,y)[xI(x,y)u+yI(x,y)v]2 (消除重复项=x,yw(x,y)(u2fx2(x,y)+2uvfx(x,y)fy(x,y)+v2fy2(x,y)) =x,yw(x,y)(u2Ix2+2uvIxIy+v2Iy2) (简化=[uv](w(x,y)[Ix2IxIyIxIyIy2])[uv]=[uv]TH[uv]
可以看到,E的变化主要与H的大小相关。所以只需要分析H的变化就可以得到E的变化趋势。

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

Harris矩阵: H = [ ∑ ( x , y ) w ( x , y ) ( ∂ I ∂ x ( x , y ) ) 2 ∑ ( x , y ) w ( x , y ) ( ∂ I ∂ x ( x , y ) ) ∂ I ∂ y ( x , y ) ) ∑ ( x , y ) w ( x , y ) ( ∂ I ∂ x ( x , y ) ) ∂ I ∂ y ( x , y ) ) ∑ ( x , y ) w ( x , y ) ( ∂ I ∂ y ( x , y ) ) 2 ] 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] H=(x,y)w(x,y)(xI(x,y))2(x,y)w(x,y)(xI(x,y))yI(x,y))(x,y)w(x,y)(xI(x,y))yI(x,y))(x,y)w(x,y)(yI(x,y))2

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

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

Harris矩阵的特征值分析

对于图像:

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

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

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

那么就有:

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

在这里插入图片描述

Harris角点准则

det ⁡ H = λ 1 λ 2 \operatorname{det} H=\lambda_{1} \lambda_{2} detH=λ1λ2

trace ⁡ H = λ 1 + λ 2 \operatorname{trace} H=\lambda_{1}+\lambda_{2} traceH=λ1+λ2

所以某点的响应函数:

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

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

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

Shi-Tomasi 角点检测

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

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

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

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值