gpt4 book ai didi

python - OpenCV/ python : Fast way to match a picture with a database

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:21 26 4
gpt4 key购买 nike

我想将一张图片与目前包含 2500 多张图片的数据库进行匹配,但我需要找到一种方法来获得至少 10k 图片的良好结果。

我已经阅读了很多关于 stackoverflow 的帖子,但我找不到合适的解决方案来解决我的问题。我考虑过使用直方图,但如果我理解得很好,找到相似点很有用,但我需要一个“完美”匹配。

我目前有一些代码可以完成这项任务,但它太慢了(大约 6 秒才能找到 2500 张图像的匹配项)

我正在使用 ORB 检测器 cv2.ORB() 来查找关键点和描述符,FlannBasedMatcher 和 findHomography 函数以及 RANSAC,如下所示。

FLANN_INDEX_LSH = 6
flann_params = dict(algorithm = FLANN_INDEX_LSH, table_number = 6, key_size = 12, multi_probe_level = 1)
...
self.matcher = cv2.FlannBasedMatcher(params, {})
...
(_, status) = cv2.findHomography(ptsA, ptsB, cv2.RANSAC, 4.0)

我想知道是否有更好、更重要、更快的方式来匹配我的数据库,也许还有一种不同的方式将图片存储在数据库中(我目前正在保存关键点和描述符)。

希望我说得足够清楚,如果您需要更多详细信息,请发表评论。

最佳答案

我正在做的事情的重点是从视频捕获中识别书中的一页,这就是为什么我需要我的代码快速、准确。

我找到了一种更快的方法来完成这项工作,我在启动时用整个数据库构建了一个 FLANN 索引(对于 3k 图片并不那么慢),我从这个 link 得到了帮助.此外,这是最重要的部分,我将 flann_params 更改为:

flann_params = dict(algorithm = FLANN_INDEX_LSH, table_number = 10, key_size = 20, multi_probe_level = 0)

为了不丢失这些参数的准确性,我将使用 ORB 检测器提取的特征点数量从 400 更改为 700。

它解决了我的问题,在匹配完成之前 2 到 3 秒(没有 FLANN 索引的 6 秒),现在大约是 25/30 毫秒

但即使在这个解决方案之后,我仍然愿意接受新的建议来提高准确性而不会损失太多速度。

关于python - OpenCV/ python : Fast way to match a picture with a database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29563429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com