Harris 角点检测算法编程步骤及示例演示 也不说那么多废话了,要介绍啥背景意义之类的,角点检测,顾名思义,就是检测角点,最简单的就是两条线的交点了,还有比如下国际象棋的棋盘格子的交点之类的,反正就是检测这些点
简单将 Harris 角点检测算法的思想说下,就是拿一个小窗在图像中移动,通过考察这个小窗口内图像灰度的平均变换值来确定角点
(1)如果窗口内区域图像的灰度值恒定,那么所有不同方向的偏移几乎不发生变化; (2)如果窗口跨越一条边,那么沿着这条边的偏移几乎不发生变化, 但是与边垂直的偏移会发生很大的变化; (3)如果窗口包含一个孤立的点或者角点,那么所有不同方向的偏移会发生很大的变化
下面给出具体数学推导: 设图像窗口平移量为(u,v),产生的灰度变化为E(u,v), 有E(u,v)=sum[w(x,y)[I(x+u,y+v)-I(x,y)]^2],其中 w(x,y)为窗口函数,I(x+u,y+v)为平移后的灰度值,I(x,y)为平移前的灰度值
有泰勒公式展开可得: I(x+u,y+v)=I(x,y)+Ix*u+Iy*v+O(u^2,v^2); Ix,Iy 分别为偏微分,在图像中为图像的方向导数
因此E(u,v)=sum[w(x,y) [Ix*u+Iy*v+O(u^2,v^2)]^2], 可以近 似 得到 E(u,v)=sum[w(x,y) [Ix*u+Iy*v]^2],即 E(u,v)=[u,v][Ix^2,Ix*Iy;Ix*Iy,Iy^2][u,v]T 令M=[Ix^2,Ix*Iy;Ix*Iy,Iy^2],因此最后对角点的检测成了对矩阵M 的特征值的分析了,令M 其特征值为x1,x2; 当x1>>x2 或者x2>>x1,则检测到的是边缘部分; 当x1,x2 都很小,图像窗口在所有移动的方向上移动灰度级都无明显变化
当X1,X2 都很大时且相当,检测到