【图像特征提取(三)角点特征之Harris角点检测】

Harris Corner 一种角点检测的算法,通常用于计算机视觉任务中的角点检测。Harris角点检测算法为1988年,由C.Harris,等人论文中提出。

论文地址:《C.Harris, M.Stephens. “A Combined Corner and Edge Detector”. Proc. of 4th Alvey Vision Conference, 1988》


在学习Harris角点检测算法之前,先介绍一下它的前身也就是Moravec角点检测算法原理。

1. Moravec角点检测算法

Moravec角点检测算法是最早的角点检测算法之一。来源于《Moravec, H, Obstacle Avoidance and Navigation in the Real World by a Seeing Robot Rover, Tech Report CMU-RI-TR-3, Carnegie-Mellon University, Robotics Institute, September 1980.》一文中。

算法原理将角点定义为低“自相关性”的点。算法检测以每一个像素点为中心取一个矩形框,对矩形框进行各个方向平移,计算平移前和平移后的两个框相关性,以像素灰度差的平方之和(SSD)来衡量,SSD值越小则相似性越高。如果像素位于平滑区域,周围的邻域灰度值都很相似,如果在边缘上,则其周围的邻域在与边缘正交的方向上会有很大的差异,在与边缘平行的方向上较为相似。而如果像素是各个方向都有变化的特征点,则其周围邻域内的不会很相似。Moravec通过计算每个像素邻域和周围移动之后的邻域的SSD最小值作为强度值,取局部强度最大的点作为特征点。

示意图:

2. 将moravec角点检测方法公式化:

Moravec 在1980年提出Moravec角点检测算子,并将它应用于立体匹配。首先, 计算每个像素点的兴趣值, 即以该像素点为中心, 取一个w*w(如:3×3,5x5)的方形窗口, 计算0度、45度、90度、135度四个方向灰度差的平方和, 取其中的最小值作为该像素点的兴趣值。

窗口函数w(x,y)=

图1 以3x3为例 黑色窗口为I(x,y) 红色窗口为I(x+u,y+v)

其中四种移位 (u,v) = (1,0), (1,1), (0,1), (-1, 1).w(x,y)为方形二值窗口,若像素点在窗口内,则取值为1, 否则为0。

3. Moravec角点检测步骤:
(1)对于每一个像素点,计算在E(u,v),在上面算法中,(u,v)的取值是((1,0), (1,1), (0,1), (-1, 1)。当然,也可以改成(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1),(0,-1),(1,-1) 8种情况。

(2)计算最小值对每个位置minValue = min{E(u,v)},其中(u,v) = (1,0), (1,1), (0,1), (-1, 1)。
(3)
对每个位置minValue 进行判断,是不是大于设定阈值,如果是大于设定阈值,接着判断是不是局部极大值。然后进行非极大值抑制。

非极大值抑制:比如,在算出整幅图像每个像素点位置minValue之后,我们需要人为设定一个阈值,比如阈值设置为170之后,在一个像素相邻的地方比如5×5区域内(如下图)这些满足的点有三个,我们只允许出现一个最大值,因此需要选取SSD为200的位置点作为特征角点。 


Harris角点检测算法从某种意义上来讲是对上面的方法进行了改进。

1. Harris角点检测算法公式核心也是:

窗口函数w(x,y)=

2. 改进对E(x,y)公式中的I(x+u,y+v)进行了泰勒级数展开:

E(u,v) = \sum\limits_{x,y} {w(x,y){​{[I(x + u,y + v) - I(x,y)]}^2}}

I(x + u,y + v) = I(x,y) + {I_x}u + {I_y}v + o({u^2} + {v^2})

对于局部微小的移动量[u,v],近似得到下面的表达:

其中?是2×2矩阵,可由图像的导数求得:

M = \sum\limits_{x,y}{w(x,y)\left( {\begin{array}{*{20}{c}} {I_x^2}&{​{I_x}{I_y}}\\ {​{I_x}{I_y}}&{I_y^2} \end{array}} \right)}

窗口移动导致的图像变化:实对称矩阵?的特征值分析

λ1, λ2 设为矩阵?的特征值。

3.定义:角点响应函数?,其中k为经验常量通常取值为? = 0.04-0.06

因此对特征值的分析原问题可转化为对R的分析过程。

• ?只与?的特征值有关
• 角点: ?为大数值正数
• 边缘: ?为大数值负数
• 平坦区: ?为小数值

算法计算过程:
•对角点响应函数?进行阈值处理:? > threshold
•提取?的局部极大值

一个好的角点沿着任意方向移动都将导致明显的图像灰度变化,即:R具有大的正数值。

 

 

 

 

参考文献:

【1】Moravec H P. Obstacle avoidance and navigation in the real world by a seeing robot rover[R]. STANFORD UNIV CA DEPT OF COMPUTER SCIENCE, 1980.

【2】Harris C G, Stephens M. A combined corner and edge detector[C]//Alvey vision conference. 1988, 15(50): 10-5244.

【3】https://www.cnblogs.com/klitech/p/5779600.html

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值