7 个不稳定版本

0.4.2 2022年6月12日
0.4.1 2021年7月5日
0.3.0 2021年4月11日
0.2.0 2021年1月31日
0.1.3 2020年12月25日

#934算法

Download history 6/week @ 2024-03-10 5/week @ 2024-03-31

942 每月下载量

MIT 许可证

27KB
442

词袋

A rust crate,用于将图像特征描述符集合转换为“词袋”表示,以快速匹配定位/SLAM系统中的图像。使用层次k-means聚类创建“词汇表”,其中包含常见的视觉特征。然后可以使用词汇表将新的图像或图像关键点描述符集合转换为紧凑的词袋(bow)向量。词袋向量可以非常快速地进行匹配,以给出图像相似度的度量。

设置

此crate主要设计用于与用户提供的特征点描述符一起使用。目前支持32位二进制描述符(ORB或BRIEF是流行的例子)。然而,此crate提供方便的函数来从图像中计算ORB描述符,使用opencvopencv-rust

可以使用特征标志“opencv”启用或禁用这些函数。此功能默认启用,因此如果您不希望使用opencv,请使用以下方式更新您的Cargo.toml

abow = {version = "0.2", default-features = false, features = ["bincode"]}

或者如果您还想禁用bincode(易于词汇保存/加载的序列化库)

abow = {version = "0.2", default-features = false}

否则,您需要安装OpenCV。opencv-rust绑定问题的故障排除信息可在https://github.com/twistedfall/opencv-rust找到。

可执行示例

从一组图像创建描述符词汇并保存它

foo@bar:~/repos/ABoW$ cargo run --release --example create-voc

Vocabulary = Vocabulary {
    Word/Leaf Nodes: 3125,
    Other Nodes: 780,
    Levels: 5,
    Branching Factor: 5,
    Total Training Features: 131376,
    Min Word Cluster Size: 1,
    Max Word Cluster Size: 373,
    Mean Word Cluster Size: 42,
}

加载一个词汇表,将一系列图像转换为BoW,并计算它们之间的最佳匹配

foo@bar:~/repos/ABoW$ cargo run --release --example match

Top 5 Matches for "100.jpg":
Match     | Score
"100.jpg" | 1.0
"102.jpg" | 0.4220034
"101.jpg" | 0.4040035
"98.jpg"  | 0.3740036
"99.jpg"  | 0.37200385

参考文献

此库主要基于C++存储库DBoW2fbow

依赖项

~3.5–5MB
~83K SLoC