角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模和目标识别等领域中,也称为特征点检测。
角点通常被定义为两条边的交点,更严格的说,角点的局部邻域应该具有两个不同区域的不同方向的边界。而实际应用中,大多数所谓的角点检测方法检测的是拥有特定特征的图像点,而不仅仅是“角点”。这些特征点在图像中有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、某些梯度特征等。
现有的角点检测算法并不是都十分的鲁棒。很多方法都要求有大量的训练集和冗余数据来防止或减少错误特征的出现。角点检测方法的一个很重要的评价标准是其对多幅图像中相同或相似特征的检测能力,并且能够应对光照变化、图像旋转等图像变化。
近年来提出的角点检测方法大多是基于灰度图像的角点检测。主要分三类:
(1)基于边缘特征的角点检测。主要分三个步骤:首先,对图像进行预分割;然后对预分割后得到的图像中边界轮廓点进行顺序编码,得到边缘轮廓链码;最后,根据边缘轮廓链码对图像中的角点进行描述和提取。Wallg和Braday提出了一种基于表面曲率的角点检测算法。为了改善角点检测的稳定性,首先将图像和高斯滤波器卷积,然后计算整个图像的表面曲率,当曲率高于一定阈值,并为局部最大值的点被认为是候选角点。
(2)基于模板的角点检测。一般首先建立一系列具有不同角度的角点模板,然后在一定的窗口内比较待测图像与标准模板之间的相似程度,以此来检测图像中的角点。基于模板的方法主要考虑像素邻域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点。首先设计一系列角点模板,然后计算模板与所有图像子窗口的相似性,以相似性判断在子窗口中心的像素是否为角点。
(3)基于亮度变化的角点检测。该算法基于角点相应函数(CRF)对每个像素基于其模板邻域的图像灰度计算CRF值,如果大于某一阈值且为局部极大值,则认为该点为角点。
当然,角点的检测算法非常之多,仅基于模板的角点检测算法就有Kitchen-Rosenfeld角点检测算法、Harris角点检测算法、KLT角点检测算法及SUSAN角点检测算法等,在此不再一一展开介绍。维视图像从事机器视觉行业十数年,其XAVIS机器视觉科研平台包含近300个优异算法,其中就包含多种优异的角点检测算法,这些算法均是从实际工业项目中积累、优化而来,在算法效率、稳定性上均处于视觉行业领先地位。