ORB特征提取分为两步:
①FAST角点提取,找出图片中的角点、计算特征点的主方向为后续BRIEF描述子增加了旋转不变特性。
②BRIEF特征点描述。
OpenCV3中ORB特征检测主要分为五步:
–读取图像
–初始化
①检测Oriented FAST角点位置
②根据焦点位置计算BRIEF描述子
③使用Hamming距离对两幅图像中的描述子进行匹配
④匹配点对筛选
⑤绘制匹配结果
下面贴上代码详解
代码是《SLAM十四讲》中的,博主正在学习中,所以自己加上了注释,非常详细的~(大部分是自己查的,一小部分是借鉴别的博主的)
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/features2d/features2d.hpp>
#include<opencv2/highgui/highgui.hpp>
//core.hpp该头文件是支持pencv2的主要头文件,core是opencv的主要头文件,包括数据结构,矩阵运算,数据变换,内存管理,文本和数学等功能
//highgui.hpp包括图形界面和视频图像处理的头文件
using namespace std;//namespace标准空间
using namespace cv;
int main(int argc,char**argv ) //argc是命令行总的参数个数 ,用来统计运行程序时送给命令行的参数个数
{
if (argc !=3 )//判断运行该程序时,是否满足以下启动命令
{
cout<< "usage:feature_extraction image1 iamge2 "<<endl;
return 1;
}
//---读取图像
Mat img_1 = imread( argv[1], CV_LOAD_IMAGE_COLOR ); //MAT为opencv中最主要的数据存储格式,该语句是以彩色通道读取图片的意思
Mat img_1 = imread( argv[2], CV_LOAD_IMAGE_COLOR )