【泡泡机器人原创专栏】DBoW3 视觉词袋模型 视觉字典和图像数据库分析

本文深入浅析DBoW3库,它是用于图像特征排序和视觉词袋表示的开源C++库,适用于SLAM、计算机视觉等领域。通过DBoW3,可以构建视觉词典和图像数据库,实现高效检索。文章介绍了DBoW3与DBoW2的区别、主要类及算法,如K-Means++聚类,并探讨了相似度度量方法。
摘要由CSDN通过智能技术生成
               

前言

        图像数据库、视觉字典和视觉词袋向量是SLAM、计算机视觉、3D物体识别和卷积神经网络图像处理的重要基础工具。所谓“万丈高楼平地起”,在深刻理解这些基本工具的基础之上,根据开源项目构建自己的工程就可以做到游刃有余了。在工程实践中,开源代码往往不能满足业务需求,而对计算机视觉的应用直接上来裁剪代码是一件非常困难的事情。本文的初衷是用最浅显易懂的语言,帮助大家理解并不那么普及的技术,更重要是能够根据这些原理快速构建代码和应用。

        无奈,本文作者码力有限,若要对算法上手即来,直接形成代码还是一件非常困难的事情。代码的实践性非常强,大量的工程实践是光明大道。纸上得来终觉浅,绝知此事要躬行。


DBoW3库介绍

        DBoW3是DBoW2的增强版,这是一个开源的C++库,用于给图像特征排序,并将图像转化成视觉词袋表示。它采用层级树状结构将相近的图像特征在物理存储上聚集在一起,创建一个视觉词典。DBoW3还生成一个图像数据库,带有顺序索引和逆序索引,可以使图像特征的检索和对比非常快。


         DBoW3与DBoW2的主要差别:

        1、DBoW3依赖项只有OpenCV,DBoW2依赖项DLIB被移除;

        2、DBoW3可以直接使用二值和浮点特征描述子,不需要再为这些特征描述子重写新类;

        3、DBoW3可以在Linux和Windows下编译;

        4、为了优化执行速度,重写了部分代码(特征的操作都写入类DescManip);DBoW3的接口也被简化了;

        5、可以使用二进制视觉词典文件;二进制文件在加载和保存上比.yml文件快4-5倍;而且,二进制文件还能被压缩;

        6、仍然和DBoW2yml文件兼容。


        DBoW3有两个主要的类:Vocabulary和Database。视觉词典将图像转化成视觉词袋向量,图像数据库对图像进行索引。

        ORB-SLAM2中的ORBVocabulary保存在文件orbvoc.dbow3中,二进制文件在Github上:https://github.com/raulmur/ORB_SLAM2/tree/master/Vocabulary


        逆序指针指向一个数据对<图像It, 视觉词袋向量vti>,可以快速获取图像上的视觉单词的权重。当新的图像It加入到图像数据库中的时候,逆序指针就会更新,也方便在数据库中查找图像。逆序索引用于提取与给定图像相似的图像。这个结构用于存储视觉单词,视觉单词组成视觉字典,视觉字典形成图像。检索图像、做比较操作时,就不会对比图像中相同的视觉单词,这对检索图像数据库非常有用。顺序索引有效地获取图像间的云点匹配,加快图像确认中的几何特征检验。顺序指针可以方便地存储每幅图像的特征。视觉字典中的节点是分层存储的,假如树一共有L层,从叶子开始为0层,即L=0,到根结束,l=Lw。对于每幅图像It,将l层的节点存储在顺序指针中,而l层的这些节点是图像It的视觉单词的父节点,局部特征ftj列表与每个节点关联。用顺序指针和词袋模型树估算BRIEF向量描述子空间中的最邻近的节点。对于那些特征属于相同的单词或具有第l层相同父节点的单词,计算特征的对应关系时,这些顺序指针可以加快几何验证过程。当获取一个将要匹配的候选特征时,几何验证非常必要,新图像加进数据库,顺序指针就会更新。


权重计算Weighting

        单词在视觉字典和词袋向量中都有权重。

        视觉单词有4种权重计算方法:

        1. 词频Term Frequency (tf)其中,是单词 在图像d中出现的次数;是图像d中单词的数量;

        2. 逆向文件频率Inverse documentfrequency (idf):N是图像数量;Ni是图像包含单词的数量;

        3. 词频-逆向文件频率Term frequency -inverse document frequency (tf-idf):

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值