为什么opencv FREAK提取器会删除这么多关键点,特别是使用ORB检测器

min*_*oon 17 opencv extractor orb freak feature-descriptor

我正在使用OpenCV 2.4.3 c ++接口来查找两个图像之间的匹配点.第一次尝试是使用SURF.唯一的问题是消耗时间,所以我尝试了新的FREAK提取器.使用SURF进行检测和FREAK进行描述,我意识到FREAK将关键点的数量减少到几乎检测到的一半,并且得到的匹配不够.这就是原因,我尝试了FAST以获得更多关键点.结果:

  1. SURF检测器,SURF提取器,BFMatcher交叉检查true,RANSAC:70关键第一图像,50关键点第二图像,200ms.250毫秒.为15ms.为15ms.
  2. SURF检测器,FREAK提取器,BFMatcher交叉检查true,RANSAC:39个关键点第一个图像,30个关键点第二个图像(FREAK之后),200ms.,50 ms.,0ms.,0ms.这导致很少有良好的匹配.
  3. FAST检测器,FREAK提取器,BFMatcher交叉检查true,RANSAC:120个关键点,90个关键点,(FREAK后69和48个关键点),10ms.,450 ms.,15 ms.,10 ms.

之后,我使用了ORBFeatureDetector,它获得了与FAST相同数量的关键点,但在FREAK提取器之后,每个图像的结果关键点为0.难道我做错了什么?ORB关键点是否与从FAST获得的关键点不同?也许我可以为此开另一个问题,但我有最后一个问题.检测器/提取器的最佳组合是什么才能获得与使用SURF的第一次实验相同的结果,但缩短处理时间?因为虽然我使用了FREAK,但是当我获得更多关键点时,提取器部分也更耗时.

Jav*_*ock 11

FREAK如果无法为其生成描述符,则会删除点,很多时候会出现在图像的边框中,因为如果它不在边界图像之外,则无法生成描述符.我通过在提取前应用ROI来避免此问题.

我也使用FAST结合FREAK,我得到了最好的结果,但我仍然有减少提取器时间的问题,这对我来说太高了.