您当前的位置: 首页 >  opencv

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

opencv ORB特征匹配

qianbo_insist 发布时间:2021-07-11 15:47:50 ,浏览量:0

AKAZE 局部特征匹配 级联分类器使用 等比例缩放图片 给图片加logo 鱼眼校正 智能答卷识别 opencv滤镜效果 灰度图像增强方式 opencv模板匹配

基础知识点

ORB 算法 使用 FAST detector 和 BRIEF descriptor 的思路。下面对 FAST 与 BRIEF 进行说明。

1.1 FAST(Featrues from Accelerated Segment Test)

其基本思想是比较当前点与周边点差异,当周边有连续不少于一半的点均比中间点亮或者暗,则认为该点为一个特征点。

1.2 BRIEF

BRIEF 对特征点生成描述特征向量。在 SIFT 与 SURF 中均使用了块特征描述方案, 使用不同小块的方向梯度直方图构成特征向量。BRIEF 使用点特征描述特征点

现在找两个相似的图,但是角度不同 图片一 图片二 可以看出两幅图片偏离了一定的角度,时间不同,角度不同,找特征点使用以下封装

根据角点位置计算 BRIEF 描述子, orb->compute(img1, keypoints1, descriptors1);

结果

图片特征匹配

show me the code
#include 
#include 
#include 

using namespace cv;
using namespace std;
#ifdef _DEBUG
#pragma comment(lib,"opencv_world440d.lib")
#else
#pragma comment(lib,"opencv_world440.lib")
#endif
int main()
{
	Mat img1 = imread("./big.jpg", 1);
	Mat img2 = imread("./big2.jpg", 1);
	std::vector keypoints1, keypoints2;    // 定义关键点(特征点)
	//定义描述子
	Mat descriptors1, descriptors2;                            
	Ptr orb = ORB::create();

	//提取特征点
	orb->detect(img1, keypoints1);
	orb->detect(img2, keypoints2);

	//根据两幅图像的角点位置计算描述符
	orb->compute(img1, keypoints1, descriptors1);
	orb->compute(img2, keypoints2, descriptors2);

	vector matches;
	//找寻距离最小的匹配
	BFMatcher bfmatcher(NORM_HAMMING, true);
	bfmatcher.match(descriptors1, descriptors2, matches);
	// 匹配对筛选:选择 hamming距离小于最小距离的两倍的特征点
	double min_dist = 1000, max_dist = 0;
	// 找出所有匹配之间的最大值和最小值
	for (int i = 0; i             
关注
打赏
1663161521
查看更多评论
0.0463s