基于C++的opencv(十二)角点检测

角点检测

角点检测(Corner Detection)是计算机视觉系统中用来获取图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模和目标识别等领域中,也称为特征点检测。

角点检测被定义为两条边的交点,更严格的说法是,角点的局部领域应该具有两个不同区域的不同方向的边界。而实际应用中,大多数所谓的角点检测方法检测的是拥有特定特征的图像点,而不仅仅是“角点”。这些特征点在图像中有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、某些梯度特征等。

一、Harris角点检测

1.1.兴趣点与角点

兴趣点(interest points),也被称作关键点(key points)、特征点(feature points)。他被大量用于解决物体识别、图像识别、图像匹配、视觉跟踪、三维重建等一系列问题。

图像特征类型可以被分为如下三种:
1.边缘;
2.角点(感兴趣关键点);
3.斑点(Blobs)(感兴趣区域)。

如果某一点的任意方向的一个微小变动都会引起灰度很大的变化,那么我们就把它称之位角点。

角点的具体描述:
1.一阶导数(即灰度梯度)的局部最大所对应的像素点;
2.两条及两条以上边缘的交点;
3.图像中梯度值和梯度方向的变化速率都很高的点;
4.角点处的一阶导数最大,二阶导数为零,它指示了物体边缘变化不连续的方向。

1.2.角点检测

在当前的图像处理领域,角点检测算法可归纳为以下三类:
1.基于灰度图像的角点检测;
2.基于二值图像的角点检测;
3.基于轮廓曲线的角点检测。
而基于灰度图像的角点检测又可分为基于梯度、基于模板和基于模板梯度组合三类方法。其中基于模板的方法主要考虑像素领域点的灰度变化,即图像亮度的变化,将与领点亮度对比足够大的点定义为角点。

1.3.harris角点检测

harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性高,尤其对L型角点检测精度高。但由于采用了高斯滤波,运算速度相对较慢,角点信息有丢失和位置偏移的现象,而且角点提取有聚簇现象。

1.4.实现Harris角点检测:cornerHarris()函数

1.5.harris角点检测与绘制示例

二、Shi-Tomasi角点检测

2.1.Shi-Tomasi角点检测概述

Shi-Tomasi算法是Harris算法的改进,此算法最原始的定义是将矩阵M的行列式值与M的迹相减,再将差值同预先给定的阈值进行比较。

2…2.确定图像强角点:goodFeaturesToTrack()函数

2.3.Shi-Tomasi角点检测示例

三、亚像素级角点检测

3.1.概述

亚像素级角点检测的位置在摄像机标定、跟踪并重建摄像机的轨迹,或者重建被跟踪目标的三维结构时,是一个基本的测量值。

3.2.寻找亚像素角点:cornerSubPix()函数

3.3.亚像素级角点检测示例

你可能感兴趣的:(c++,OpenCV,opencv,图像处理)