计算机视觉——Harris角点检测


计算机视觉—Harris角点检测


[email protected]


1、全微分


        定义:如果函数 z=f(x,y) 在定义域 D 的内点 (x,y) 处全增量 Δz=f(x+Δx,y+Δy)f(x,y) 可以表示成
Δz=AΔx+BΔy+o(ρ),ρ=(Δx)2+(Δy)2

        其中, A,B 不依赖于 Δx,Δy ,仅与 x,y 有关,则称函数 f(x,y) 在点 (x,y) 可微。 AΔx+BΔy 称为函数 f(x,y) 在点 (x,y) 的全微分,记作
dz=df=AΔx+BΔy

若函数在 D 内各点都可微,则称此函数在 D 内可微。


        近似:当 z=f(x,y) 在点 (x,y) 的两个偏导数 fx(x,y) fy(x,y) 连续,且 |Δx|,|Δy| 都较小时,有近似等式
Δzdz=fx(x,y)Δx+fy(x,y)Δy

        或者

f(x+Δx,y+Δy)f(x,y)+fx(x,y)Δx+fy(x,y)Δy

2、常用公式


[Ax+By]2=[xy][A2ABABB2][xy]

3、角点检测


        寻找角点的基本思想:观察一个小窗口所包含的区域,在角点附近向任何方向移动窗口,灰度值都会有较大的变化。如左图,在平坦区域,在任何方向灰度值都没有变化;如中图,沿着边缘方向灰度值无变化;如右图,在多个方向上灰度值都有变化。

计算机视觉——Harris角点检测_第1张图片

        在平移 [u,v] 下的灰度变化为:
E(u,v)=x,yw(x,y)[I(x+u,y+v)I(x,y)]2

        其中, w(x,y) 是一个以 (x,y) 为中心的窗函数, I(x,y) (x,y) 处的像素值。为了寻找带角点的窗口,需要搜索像素灰度变化较大的窗口。于是, 我们期望最大化 E(u,v)


        假设 u v 很小,则有
I(x+u,y+v)I(x,y)Ixu+Iyv

[I(x+u,y+v)I(x,y)]2[Ixu+Iyv]2=[uv][I2xIxIyIxIyI2y][uv]

        因此,对于小平移 [u,v] 可作如下近似

E(u,v)[uv]  M[uv]

        其中, M 是一个 2×2 矩阵,

M=x,yw(x,y)[I2xIxIyIxIyI2y]

        协方差矩阵可以表示多维随机变量之间的相关性。协方差矩阵的对角线元素表示的是各个维度的方差,而非对角线上的元素表示的是各个维度之间的相关性。可以把矩阵 M 看作一个二维随机分布的协方差矩阵,通过将其对角化,求矩阵的两个特征值,然后根据这两个特征值来判断是不是角点。

        设 λ1,λ2 为矩阵 M 的特征值,当 λ1λ2 λ1λ2 时,为边缘点;当 λ1 λ2 都很小且接近时,为平坦区域内的点;当 λ1 λ2 都很大且接近时,说明图像窗口在各个方向上移动都产生了明显灰度变化,为角点。


计算机视觉——Harris角点检测_第2张图片

        由于特征值的计算量较大,因此,实际中采用角点响应函数来检测角点。角点响应函数定义为
R=det(M)k[trace(M)]2=λ1λ2k(λ1+λ2)2

        k 的经验取值一般为 0.040.06 R 依赖于 M 的特征值, R 较大时,为角点; R 值较大且为负时,为边缘; |R| 较小时,为平坦区域。最终, Harris 角点检测就是:寻找有大角点响应函数 R 的点( R>thres ),且是 R 的局部极大值的点。

你可能感兴趣的:(计算机视觉)