我正在开发一个项目,我可以在移动环境中“实时”检测场景中的已知图片(这意味着我正在使用智能手机相机捕捉帧并将帧大小调整为150x225) 。图片本身可能相当复杂。现在,我正在平均1.2s处理每个帧(使用OpenCV)。我正在寻找改善处理时间和全球准确性的方法。我目前的实施工作如下:
我的方法可能不是正确的,但即使有很大的改进空间,结果仍然可以。我已经注意到SURF提取太慢了,我无法使用单应性(它可能与ORB有关)。欢迎所有建议!
答案 0 :(得分:7)
在移动设备上,性能始终是一个问题:)
您可以做一些事情。 OpenCV: C++ and C performance comparison解释了处理时间改进的一般方法。
您项目的一些细节:
修改强>
布拉德拉森的问题很有启发性 - 如果匹配器停留900毫秒进行处理,那么这就是问题所在!查看Andrey Kamaev How Does OpenCV ORB Feature Detector Work?的这篇文章,他解释了描述符和匹配器之间可能的组合。尝试基于FLANN的uchar匹配器。
而且,我想你会得到大量的检测 - 数百或数千 - 如果它需要那么多来匹配它们。尝试限制检测,或仅选择前n个最佳值。
答案 1 :(得分:3)
你应该尝试FAST来检测场景中的对象,比SURF更快,你可以找到使用金字塔版FAST的文章。为了提高手机的性能,你可以优化循环,使用固定算法算术等。祝你好运。