您当前的位置: 首页 > 
  • 3浏览

    0关注

    417博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

(01)ORB-SLAM2源码无死角解析-(11)ORBextractor::operator()→BRIEF描述子

江南才尽,年少无知! 发布时间:2022-03-15 14:21:29 ,浏览量:3

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/123092196   文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证} 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证  

一、前言

通过前面的博客,我们已经对FAST关键点做了详细的讲解。我们先来回顾一下之前的代码,在 ORBextractor::operator() 函数中,调用了比较重要的几个函数:

void ORBextractor::operator()( InputArray _image, InputArray _mask, vector& _keypoints,
                      OutputArray _descriptors){
    // Step 2 构建图像金字塔
    ComputePyramid(image);
    //使用四叉树的方式计算每层图像的特征点并进行分配
    ComputeKeyPointsOctTree(allKeypoints);
    // Step 6 计算高斯模糊后图像的描述子
    computeDescriptors(workingMat, 	//高斯模糊之后的图层图像
                       keypoints, 	//当前图层中的特征点集合
                       desc, 		//存储计算之后的描述子
                       pattern);	//随机采样模板
}

针对于 ComputePyramid(image); 以及 ComputeKeyPointsOctTree(allKeypoints); 已经做了比较详细的讲解,接下来我们就是就是对 computeDescriptors()进行讲解了。在代码讲解之前,我们先来了解一下BRIEF描述子的理论知识

 

二、理论基础

论文:BRIEF: Binary Robust Independent Elementary Features,如果需要详细了解的朋友可以查看这篇论文。 简要说明: 一种对已检测到的特征点进行描述的算法,它是一种二进制编码的描述子,在图像匹配时使用BRIEF能极大的提升匹配速度。 主要实现的思想逻辑如下:

步骤 ( 1 ) \color{blue}{步骤(1)} 步骤(1)         为减少噪声干扰,先对图像进行高斯滤波.

步骤 ( 2 ) \color{blue}{步骤(2)} 步骤(2)         以关键点为中心,取SxS的邻域大窗口(仅在该区域内为该关键点生成描述子)。大窗口中随机选取一对(两个)5x5的子窗口,当然也可以是随机两个像素点。比较子窗口内的像素和(可用积分图像完成),进行二进制赋值。(一般S=31),公式如下: τ ( p ; x , y ) = { 0 , i f    p ( x ) < p ( y ) 1 , o t h e r w i s e \color{blue} \tau(p;x,y)= \begin{cases} 0,& if ~~p(x)

关注
打赏
1592542134
查看更多评论
立即登录/注册

微信扫码登录

0.0720s