目录
什么是角点?
正如我们描述一个物体,需要点明颜色、形状、材质等“关键词”一样,当我们处理图片的时候,也要着重关注能反映或描述图像本质的“ 特征(feature)”。这里的特征包括全局特征(直方图、方差)和局部特征(角点、边缘点)等。
角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种重要方法,也称为特征点检测(Feature Point Detection)。如果某一点在任意方向的一个微小变动都会引起灰度很大的变化,那么我们就把这个点称为图像的一个角点(Corner)。更形象一点的话,我们可以把角点理解为平面的交汇处或者边的交点,导致交点的局部区域具有多个不同区域的不同方向的边界。比如说下图中,在窗格A-F中,EF即为我们要找的交点。
角点在保留图像图形重要特征的同时,可以有效地减少信息的数据量,有效地提高了计算的速度,有利于图像的可靠匹配,该方法也是特征检测与匹配的基础。
在当前的图像处理领域中,角点检测算法可以分为:(1)基于灰度图像的角点检测;(2)基于二值图像的角点检测;(3)基于轮廓曲线的角点检测。
近年来提出的角点检测方法大多是基于灰度图像的角点检测,又可以分为:
(1)基于边缘特征的角点检测。主要分三个步骤:首先,对图像进行预分割;然后,对预分割后得到的图像中边界轮廓点进行顺序编码,得到边缘轮廓链码;最后,根据边缘轮廓链码对图像中的角点进行描述和提取。Wallg和Braday提出了一种基于表面曲率的角点检测算法。为了改善角点检测的稳定性,首先将图像和高斯滤波器卷积,然后计算整个图像的表面曲率,当曲率高于一定阈值,并为局部最大值的点被认为是候选角点。
(2)基于模板的角点检测。一般首先建立一系列具有不同角度的角点模板,然后在一定的窗口内比较待测图像与标准模板之间的相似程度,以此来检测图像中的角点。基于模板的方法主要考虑像素邻域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点。首先设计一系列角点模板,然后计算模板与所有图像子窗口的相似性,以相似性判断在子窗口中心的像素是否为角点。
(3)基于亮度变化的角点检测。该算法基于角点相应函数(CRF)对每个像素基于其模板邻域的图像灰度计算CRF值,如果大于某一阈值且为局部极大值,则认为该点为角点。
Harris角点检测算法
Chris Harris 和 Mike Stephens 于1988年Proc of 4th Alvey Vision Conference发表的“A Combined Corner and Edge Detector”中提出了Harris 角点提取算法,又称Plessey算法。harris角点检测是一种直接基于灰度图像的角点提取算法。
Harris角点检测的基本思想是,使用一个固定穿扩在图像上进行任意方向的滑动,比较滑动前与滑动后窗口中的像素灰度变化程度,如果对于任意方向的滑动,都有较大程度的灰度变化,那么我们可以认为该窗口中存在角点。
对于一张灰度图片中的点,其灰度值为
。我们选择一个合适大小的窗口
来
当窗口发生移动时,移动前后对应的窗口中的像素点灰度变化如下所示: