欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

特征点的检测(一):ORB特征点检测

程序员文章站 2022-06-11 11:18:53
...

特征点的检测(一):ORB特征点检测

前言

ORB 特征点是在 FAST 特征点和 BRIEF 特征描述子的基础上添加了尺度和方向的描述,首先讲解ORB特征点原理,然后用代码实现特征点提取

ORB特征点

摘自论文:(自己敲实在太费时费力啦)
[1]徐宽. 融合IMU信息的双目视觉SLAM研究[D].哈尔滨工业大学,2018.

1、FAST特征点

特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测

2、BREIF特征描述子

特征点的检测(一):ORB特征点检测
特征点的检测(一):ORB特征点检测

3、ORB特征

特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测特征点的检测(一):ORB特征点检测

代码

win10+VS2015+OpenCV3.3.0(opencv自带函数实现)

#include"stdafx.h"
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
	//读图
	Mat img = imread("E:/images/1.jpg");
	Mat img_gray = img;
	Mat img_output;
	//转为灰度图
	cvtColor(img_gray, img_gray, CV_RGB2GRAY);
	//提取特征点
	vector<KeyPoint> keypoints;
	Ptr<FeatureDetector> detector = ORB::create();
	detector->detect(img_gray, keypoints);
	//计算描述子
	Mat descriptors;
	Ptr<DescriptorExtractor> descriptor = ORB::create();
	descriptor->compute(img_gray, keypoints, descriptors);
	//画出特征点
	drawKeypoints(img, keypoints, img_output, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
	//显示
	imshow("opencv提取ORB特征点", img_output);
	waitKey(0);
	return 0;
}

特征点的检测(一):ORB特征点检测

相关标签: 图像处理