opencv学习(四十四)之图像角点检测Harris

1.概述

角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用,在保留图像图形重要特征的同时,可以有效减少信息的数据量,使信息的含量很高,有效提高计算速度,有利于图像的可靠匹配,使得实时处理成为可能。在物体识别、图像匹配、视觉跟踪和三维重建等方面有很重要的应用。
角点可以认为是窗口向任意方向的移动都导致图像灰度的明显变化。从图像分析的角度来定义角点可以有一下两种:
1.角点可以是两个边缘的角点
2.角点是邻域内具有两个主方向的特征点
前者往往需要对图像边缘进行编码,这在很大程度上依赖于图像的分割与边缘提取,具有相当大的难度和计算量,且一旦待检测目标局部发生变化,很可能导致操作的失败。
角点检测算法可以归纳为三类:基于灰度图像的角点检测、基于二值图像的角点检测、基于轮廓曲线的角点检测。基于灰度图像的检测又可细分为基于梯度、基于模板、基于模板梯度组合三类方法,其中基于模板的方法主要考虑像素邻域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点。常见的基于模板的角点检测算法有Kitchen-Rosenfeld角点检测,Harris角点检测算法,KLT角点检测和SUSAN角点检测。本文主要介绍Harris角点检测。

2.Harris角点检测原理

Harris角点检测原理推导靠一篇博客讲清楚不太现实,这里介绍一个比较直观的概念而不是数学推导。
Harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性高,尤其对L型角点检测精度高。
人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如下图所示:

在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么久认为在窗口内遇到了角点,如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度发生了很大变化,而在另一些方向上没有发生变化,那么窗口内的图像可能就是一条直线的线段。

3.opencv API

opencv提供cornerHarris()提取Harris角点。cornerHarris函数对每一个像素在blockSize x blockSize邻域内,计算2 x 2梯度的协方差矩阵M(x,y),,接着它计算如下公式输出局部最大值,即为角点。

void cv::cornerHarris   (   InputArray  src,
                 
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值