计算机视觉——harris角点检测之harris角点响应函数R

一、harris角点检测原理

1.1基本思想

  使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
在这里插入图片描述

1.2 数学模型

图像窗口平移[u,v]产生灰度变化E(u,v)为:
在这里插入图片描述
  上式经泰勒展开后的得到
在这里插入图片描述
  对局部微小的移动量 [u,v],所以 可以近似得到下式
在这里插入图片描述
记M的特征值λ1、λ2,可以将图像上的像素点分类成直线、平面与角点:当λ1和λ2 都比较大,且近似相等时,可以认为是角点。对图像点分类如下图:
在这里插入图片描述

3、关于harris角点响应函数R

由于是通过M的两个特征值的大小对图像进行分类,所以,定义角点相应函数R:
在这里插入图片描述
于是上图图像点分类图转化为下图:
在这里插入图片描述
有结论如下:

  • 角点——R为大数值正数
  • 边缘——为大数值负数
  • 平坦区——为小数值

在判断角点的时候,对角点响应函数R进行阈值处理:R > threshold,提取R的局部极大值。

二、harris角点检测源代码

2.1 计算harris角点响应函数R

算法:

  1. 使用高斯倒数滤波器计算图像x,y两个方向的梯度值im_x,im_y(使用高斯倒数滤波器计算可在角点检测过程中抑制噪声强度)
  2. 计算图像两个方向梯度的乘积分别为x方向的平方,y方向的平方,x和y的乘积,同样使用高斯倒数滤波器计算
  3. 计算局部特征结果矩阵M的特征值
  4. 计算响应函数的值
def compute_harris_response(im, sigma=3):
    '''
    对每个像素值计算Harris角点检测器响应函数
    :param im:
    :param sigma:
    :return:
    '''

    # 计算导数
    im_x = np.zeros(im.shape)
    im_y = np.zeros(im.shape)
    filters.gaussian_filter(im, (sigma, sigma), (0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值