我正在使用 OpenCV 2.4.3 c++ 接口来查找两个图像之间的匹配点。第一次尝试是使用 SURF。唯一的问题是耗时,所以我尝试了新的 FREAK 提取器。使用 SURF 进行检测,使用 FREAK 进行描述,我意识到 FREAK 将关键点的数量减少到几乎检测到的一半,并且结果匹配还不够。这就是原因,我尝试 FAST 来获得更多的关键点。结果:
- SURF 检测器,SURF 提取器,BFMatcher crosscheck true,RANSAC:第一个图像 70 个关键点,第二个图像 50 个关键点,200 毫秒。250 毫秒。15 毫秒。15 毫秒。
- SURF 检测器,FREAK 提取器,BFMatcher 交叉检查为真,RANSAC:第一个图像 39 个关键点,第二个图像 30 个关键点(在 FREAK 之后),200 毫秒,50 毫秒。, 0 毫秒, 0 毫秒。结果是好的匹配太少了。
- FAST 检测器、FREAK 提取器、BFMatcher crosscheck true、RANSAC:120 个关键点、90 个关键点(FREAK 之后的 69 和 48 个关键点)、10 毫秒、450 毫秒、15 毫秒、10 毫秒。
之后,我使用了 ORBFeatureDetector,它获得的关键点数量与 FAST 相同,但在 FREAK 提取器之后,每个图像的结果关键点为 0。难道我做错了什么?ORB 关键点与从 FAST 获得的关键点不同吗?也许我可以为此提出另一个问题,但我有最后一个问题。什么是检测器/提取器的最佳组合,以获得与我使用 SURF 的第一次实验相同的结果,但减少了处理时间?因为当我获得更多关键点时,提取器部分也更耗时,尽管我使用 FREAK。