前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法
FAST
SURF
ORB
BRISK
KAZE
AKAZE
MESR
GFTT good feature to tack
Bob斑点
STAR
AGAST
接下来分别讲述这是一种图像特征检测算法,但是首先,需要了解OPENCV的一种数据结构, KeyPoint结构,该结构的头文件定义如下:
class KeyPoint
{
Point2f pt; //该图像特征点的坐标
float size; //特征点邻域直径
float angle; //特征点的方向,值为[零,三百六十),负值表示不使用,有了这个方向,能够让特征点拥有更高的辨识度,否则仅仅坐标和直径有时会误判特征点
float response;//响应程度,代表该点的强壮程度,也就是该点角点程度,用于后期使用和排序
int octave; //特征点所在的图像金字塔的组
int class_id; //用于聚类的id
}
每个图像特征点检测算法最终的目标之一,而当一张图像的特征点被检测出来之后,就可以和另一张图像的特征点进行匹配,根据相似级别判定两个图像的相似程度.
比如我们可以在图像中检测一张人脸的特征点,从而来检索在另一张图中是否存在相似程度很高的特征点集,从而确认另一张图像中的人脸以及人脸的位置,等,特征点检测算法在物体检测,视觉跟踪,3D重建的时候都有着重要的作用.
一. 图像特征点检测的通用接口
Opencv为了方便用户使用图像特征点检测