我想匹配一张图片与一个数据库,其中包含2500多张图片,但我需要找到一种方法,以获得良好的结果,至少10万张图片。在
我已经读了很多关于stackoverflow的帖子,但是我找不到一个合适的解决方案来解决我的问题。 我考虑过使用直方图,但如果我理解得好,找到相似之处是有用的,但是我需要一个“完美”的匹配。在
我目前有一些代码在工作来完成这项任务,但它太慢了(大约6秒才能找到与2500幅图像匹配的图像)
我使用ORB检测器cv2.ORB()
来查找关键点和描述符,FlannBasedMatcher和RANSAC的findHomography函数,如下所示。在
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
改成了这样:为了不损失这些参数的准确性,我将用ORB检测器提取的特征点数量从400个更改为700个。在
它解决了我的问题,之前比赛是2到3秒(6秒没有弗兰恩指数),现在是25/30毫秒左右
但即使在这个解决方案之后,我仍然愿意接受新的建议,在不损失太多速度的情况下提高精度。在
相关问题 更多 >
编程相关推荐