高翔Slambook第七讲代码解读(特征点提取)

本文是小白对高翔SLAMbook第七讲代码的解读,主要聚焦于特征点提取。通过阅读代码,理解了提取FAST角点、计算BRIEF描述子、匹配和筛选匹配结果的过程。文中适合初学者,详细解释了OpenCV中的imread、KeyPoint类、FeatureDetector等概念,并展示了特征点匹配的最终结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:小白创建了一个微信公众号,主要面向学习视觉的小伙伴,分享一些学习过程中的感受和一些技术文章。公众号里文章也会更新在优快云中,不过由于工作量较大,会出现一段时间的延时,感兴趣的小伙伴可以关注公众号第一时间接受消息。


作者:小白

公众号:小白学视觉


作为一个视觉SLAM的入门学徒,高翔的书我看了一遍,视频也跟了一遍,代码在自己的电脑上也跑过,但总觉得跟啥都没学没有太大区别。

于是乎决定开始看代码。由于不是计算机专业的本科,看代码比较生疏所以一直以来都是在逃避在敷衍,现在一看确实不落实到代码层面是干脆不行的。高翔的slambook前几讲都是相对比较基础的内容,直到第七讲视觉里程计才有相对切实的应用,那么我准备从第七讲的代码开始下手。

第七讲共五个程序:特征点提取、三种位姿估计方式:2d-2d、3d-2d、3d-3d,和三角化测量。

其中特征点提取是剩余所有程序的一个基础,也作为一个封装好的函数进行调用,那么不妨先从特征点提取这个基础程序开始看。

由于我代码基础较为薄弱,自学能力也较弱,所以本篇内容写得相对基础与啰嗦。对特征点提取这里稔熟于心的同学可以取干别的了,不必在这里浪费时间~

首先,明确一下特征点提取的目的与步骤:

  • 目的:在每张图像中找到“区分度较高”的像素点,这里“区分度较高”具体为FAST角点。

  • 步骤:高翔的代码注释写的也很全面,步骤基本上可以分为

  1. 读取图像

  2. 初始化存储特征点数据的变量

  3. 提取每张图像的FAST角点

  4. 计算每张图像每个FAST角点的BRIEF描述子

  5. 根据刚刚计算好的BRIEF描述子,对两张图的角点进行匹配

  6. 筛去匹配度较差的角点配对

  7. 绘制匹配结果

好了,在把高翔的注释抄了一遍之后,咱们来开始看代码。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main ( int argc, char** argv )
{
   if ( argc != 3 )
   {
       cout<<"usage: feature_extraction img1 img2"<<endl;
       return 1;
   }
   //-- 读取图像
   Mat img_1 = imread ( argv[1], CV_LOAD_IMAGE_COLOR );
   Mat img_2 = imread ( argv[2], CV_LOAD_IMAGE_COLOR );

   //-- 初始化
   vector<KeyPoint> keypoints_1, keypoints_2;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值