Harris角点检测

理论知识:

图像中的角点意味着在这块区域中沿着任意方向移动,这块区域的像素值都会发生比较大的改变。

数学推导

在图像中取一小块,构造这样一个判断函数

E(u,v)=\sum w(x,y)[I(x+u,y+v)-I(x,y)]

u,v指得是这一块区域作的位移,w(x,y)指窗口函数,在这块区域取1,不在取0。

从这个式子可以看出,在平坦的区域,第二项 I(x+u,y+v)-I(x,y) 几乎等于0,对于变化较大的区域这项的值会比较大。所以我们希望检测出变化大的区域,这里就可能存在角点。

下一步将 I(x+u,y+v) 作二元泰勒展开

f(x+u,y+v)=f(x,y)+uf_{x}(x,y)+vf_{y}(x,y)+\frac{1}{2}[u^{2}f_{xx}(x,y)+v^{2}f_{yy}(x,y)+2uvf_{xy}(x,y)]+......

取到1阶

f(x+u,y+v)=f(x,y)+uf_{x}(x,y)+vf_{y}(x,y)

所以E(u,v)可以被简化为:

E(u,v)\cong [u,v]M[u,v]^{T}

其中M = \sum_{x,y}w(x,y)\begin{bmatrix} I_{x}^{2} & I_{x}I_{y}\\ I_{x}I_{y}& I_{y}^{2} \end{bmatrix}

w(x,y)简单情况下可以取1。

 

三种不同图形各个点I_{x},I_{y}的分布情况:

 

平坦区域x,y方向变化率都比较小。

边缘处,x,y方向变换率其中一个很大。

角点处,x,y变化率都比较大。

可以用M的特征值来表征这种现象

 

如何具体计算某一点是否存在角点?

R = detM - k(traceM)^{2}

detM=\lambda _{1}\lambda ^{2} , traceM =\lambda_{1}+\lambda_{2}

k是经验选项一般取(0.04-0.06)

  • R很大对应角点
  • R是负数绝对值很大对应边缘
  • R绝对值较小对应平坦区域

例子:

 

 

 

 

 

 

算法流程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值