SLAM ORB-SLAM2(27)词袋模型


1. 词袋模型

《SLAM ORB-SLAM2(26)重定位过程》时, 提到用 词袋模型 进行 重定位
也简单说明了词袋模型在文本检索和图像分类的应用

那么词袋模型具体是什么呢?
在这里插入图片描述上图是 DBoW2 的词袋模型示意图,它由三个部分构成:

  • 词汇树 (Vocabulary Tree)
  • 逆向索引表 (Inverse Indexes)
  • 正向索引表 (Direct Indexes)

1.1. 词汇树

词汇树的 叶子节点 表示词袋的单词(words),它是由一堆图片离线训练出来的
在这里插入图片描述

首先对训练的图片计算 ORB 特征点,然后把这些特征点放

### 创建用于SLAM模型 #### 1. 理解模型的概念 模型(Bag of Words, BoW)是一种简化的方法来表示文档的内容。在计算机视觉领域,特别是针对SLAM应用,该方法被用来描述图像的关键点分布情况。通过将局部特征向量量化为离散单,并统计这些单在整个数据库中的频率,可以有效地压缩数据并提高检索效率。 #### 2. 准备工作 为了实现一个有效的BoW SLAM系统,首先需要收集大量的训练样本集,通常是从不同环境中获取的一系列带有地理标签的照片。接着利用SIFT、SURF或其他稳健不变性的检测器提取每张图片里的兴趣点及其对应的描述子[^1]。 ```python import cv2 from sklearn.cluster import MiniBatchKMeans # 初始化ORB特征检测器 orb = cv2.ORB_create() def extract_features(image_path): img = cv2.imread(image_path, 0) keypoints, descriptors = orb.detectAndCompute(img, None) return descriptors ``` #### 3. 构建汇表 一旦拥有了足够的描述符集合之后,下一步就是聚类分析以形成固定大小的码本——也就是所谓的“汇”。这里推荐采用Mini Batch K-Means算法来进行高效的大规模集群操作: ```python descriptors_list = [] # 存储所有图像的描述符 for image_file in training_images: des = extract_features(image_file) if des is not None: descriptors_list.extend(des) kmeans = MiniBatchKMeans(n_clusters=visual_words_size).fit(descriptors_list) vocabulary = kmeans.cluster_centers_ ``` #### 4. 图像编码与索引 完成上述步骤后,就可以基于已有的汇对新来的每一幅输入影像实施编码处理了;具体做法是计算各个候选区域所属类别概率的最大值作为最终分配结果,并据此构建直方图形式的表达方式。此外还需维护一张逆向映射表记录下哪些节点曾经观察到了特定条以便后续查询使用。 ```python def bow_encode(descriptor_set, vocabulary): words_histogram = np.zeros(len(vocabulary)) for desc in descriptor_set: distances = ((vocabulary - desc)**2).sum(axis=1) closest_word_index = np.argmin(distances) words_histogram[closest_word_index] += 1 return words_histogram / sum(words_histogram) # 归一化 image_bow_representation = bow_encode(extract_features(query_image), vocabulary) ``` #### 5. 应用至SLAM框架内 最后一步则是把这套机制集成到实际运行当中去,在每次接收到传感器传回的新一轮观测资料之时同步更新全局地图结构的同时也刷新相应位置处所关联的文字表述信息。这样不仅有助于增强鲁棒性和准确性,而且还能显著降低存储开销以及加速重定位过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

氢键H-H

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值