什么是SURF特征检测(加速鲁棒特征)
1.属于尺度不变特征的检测,即不仅在任何尺度下拍摄的物体都能检测到一致的关键点,而且每个被检测的特征点都对应一个尺度因子
2.SURF 特征,它的全称为加速稳健特征( Speeded Up Robust Feature ),它不仅是尺度不变特征,而且是具有较高计算效率的特征
3.这个算法可被用于对象定位和识别、人脸识别、3D重建、对象跟踪和提取兴趣点 他部分的灵感来自于 SIFT 算法
应用场景
SURF可以用于对象定位和识别、人脸识别、3D重建、对象跟踪和提取兴趣点等。常用来进行物体辨识和图像匹配
SURF 全称 speed up robust feature 是加速版的SIFT
由于SURF特征检测较于Harris等检测算子有良好的尺度不变性,所有在不同景深不同高度不同方向不同视角都可以快速精准的匹配特征信息
如何提取SURF特征?两步:检测和描述
检测特征点
描述特征点
什么样的点是特征点
检测到,只要这个点所对应的那个物体还在摄像头的视野范围内,那么这个点就能被检测出来。比如角点,边界点,亮处的暗点,暗处的亮点等,一言以蔽之,就是与周围有反差的点
不受明暗光线变化的影响
工作原理
1.选择图像中POI(Points of Interest)Hessian Matrix
2.在不同的尺度空间发现关键点,非最大信号抑制
3.发现特征点方向、旋转不变性要求
4.生成特征向量
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <opencv2/xfeatures2d.hpp>//opencv第三方扩展库文件 用于特征SURF SIFT检测等 必须添加此库文件
#include <iostream>
#include <math.h>
using namespace cv;
using namespace cv::xfeatures2d;
using namespace std;
Mat src, dst;
int HessianNum = 200;
int HessianMax = 500;
void SurfFeature(int, void*);
int main()
{