美文网首页
Harris 角点检测

Harris 角点检测

作者: yuerxiaoshui | 来源:发表于2020-10-16 10:16 被阅读0次

    角点的定义有以下两种:

    • 角点可以是两个边缘的交点
    • 角点是邻域内具有两个主方向的特征点

    基本假设:如果在各个方向上移动窗口,窗口区域内的灰度值发生了较大变化,那么就认为在窗口内遇到了角点。


    窗口平移 [u,v] 产生的灰度变化的自相关函数如下:
    E(u,v)=\sum_{x,y}w(x,y)\left[I(x+u,y+v)-I(x,y)\right]^2
    其中 w (权重矩阵) 可以是均值矩阵,也可以是高斯核
    I(x+u,y+v)=I(x,y)+I_xu+I_yv+o(u^2,v^2)
    E(u,v)=\sum_{x,y}w(x,y)\left[I_xu+I_yv+o(u^2,v^2)\right]^2
    o(u^2,v^2)\approx0
    \left[I_xu+I_yv\right]^2=\begin{bmatrix}u & v\end{bmatrix}\begin{bmatrix}I_x^2 & I_xI_y \\ I_xI_y & I_y^2 \end{bmatrix}\begin{bmatrix}u \\ v\end{bmatrix}
    E(u,v)\cong\begin{bmatrix}u&v\end{bmatrix}M\begin{bmatrix}u\\v\end{bmatrix}
    M=\sum_{x,y}w(x,y)\begin{bmatrix}I_x^2 & I_xI_y \\ I_xI_y & I_y^2 \end{bmatrix}
    M=W\ast M_I
    M_I=\nabla I\nabla I^T=\begin{bmatrix}I_x \\ I_y\end{bmatrix}\begin{bmatrix}I_x & I_y\end{bmatrix}=\begin{bmatrix}I_x^2 & I_xI_y \\ I_xI_y & I_y^2 \end{bmatrix}
    其中,矩阵 M 又称为 Harris 矩阵,W 的大小决定了卷积的范围。

    忽略余项之后的表达式为一个二项式函数,而二项式函数的本质是一个椭圆函数,椭圆的扁率和尺寸是由 M(x,y) 的特征值 \lambda1 \lambda2 决定的,椭圆的方向是由 M(x,y) 的特征矢量决定的。

    椭圆函数特征值与图像中的角点、直线(边缘)和平面之间的关系如下:

    • 直线:一个特征值大,另一个特征值小,\lambda1>\lambda2\lambda2>\lambda1。自相关函数值在某一方向上大,在其他方向上小。
    • 平面:两个特征值都小,且近似相等;自相关函数数值在各个方向上都小。
    • 角点:两个特征值都大,且近似相等,自相关函数在所有方向都增大。

    定义角点函数 R
    R=\det M-k(\mathrm{trace} M)^2
    \mathrm{trace}M=\lambda1+\lambda2
    \det M=\lambda1\lambda2
    (其中,一般取k=0.04\sim 0.06)故:

    • 直线:R 为大数值负数
    • 平面:R 为小数值
    • 角点:R 为大数值正数
      故在判断角点时,设定阈值,提取 R 的局部最大值即为角点。

    相关文章

      网友评论

          本文标题:Harris 角点检测

          本文链接:https://www.haomeiwen.com/subject/tusnpktx.html