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

目录

 

一、Harris 角点检测算法简介

二、涉及函数

1.compute_harris_response

2.get_harris_points

三、harris算法不同场景的实现

1.边缘丰富场景

2.角点丰富场景

3.纹理平坦场景

四、小结

五、代码


一、Harris 角点检测算法简介

1.角点:①局部窗口沿各方向移动,均产生明显变化的点    ②图像局部曲率突变的点

2.Harris 角点检测算法(Harris & Stephens 角点检测器)是一个极为简单的角点检测算法。该算法是利用移动的窗口在图像中计算灰度变化值,应用邻近像素点灰度差值概念,从而进行判断是否为角点、边缘、平滑区域。

3.角点检测基本思想:

边缘:沿着边缘方向移动,无灰度变化

角点:沿任意方向移动,明显灰度变化

平坦:任意方向移动,无灰度变化

二、涉及函数

1.compute_harris_response

该函数在 harris.py 文件中,该函数在一幅灰度图像中,对每个像素计算Harris角点检测器响应函数。因在角点检测中需要抑制噪声,使用了 scipy.ndimage.filters 模块中的高斯导数滤波器来计算导数。

from pylab import *
from numpy import *
# 使用 scipy.ndimage.filters 模块中的高斯导数滤波器来计算导数
from scipy.ndimage import filters

该函数有两个参数(im, sigma),im为传入图像,sigma则定义了高斯滤波器的尺度大小,该函数返回像素值为Harris响应函数的一幅图像 。

对图像中的每一个像素,计算Harris矩阵时,Harris矩阵的特征值有三种情况:

  • 都是很大的正数,则该点是角点
  • 一个很大,一个约等于0,则该区域存在一个边
  • 都约等于0,该区域为空
def compute_harris_response(im,sigma=3):
    # 在一幅灰度图像中,对每个像素计算Harris角点检测器响应函数
    
    # 计算导数
    imx = zeros(im.shape)
    filters.gaussian_filter(im, (sigma,sigma), (0,1), imx)
    imy = zeros(im.shape)
    filters.gaussian_filter(im, (sigma,sigma), (1,0), imy)
    
    # 计算harris矩阵分量
    Wxx = filters.gaussian_filter(imx*imx,sigma)
    Wxy = filters.gaussian_filter(imx*imy,sigma)
    Wyy = filters.gaussian_filter(imy*imy,sigma)
    
    # 计算矩阵的特征值和迹
    Wdet = Wxx*Wyy - Wxy**2
    Wtr = Wxx + Wyy

    # 返回像素值为 Harris 响应函数值的一幅图像
    return Wdet / Wtr

 

2.get_harris_points

该函数同样是在 harris.py 文件中,上面的compute_harris_response函数返回了像素值为 Harris 响应函数值的一幅图像,我们需要从这幅图像中挑选出需要的信息&#x

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值