在发现OpenCV的强大功能后,我决定使用该库来开发我正在研究的自然标记跟踪引擎。但我的问题是我不知道如何正确实施这种跟踪器。
我设计了以下计划:
我尝试了SIFT和SURF算法来描述和提取关键点,最终结果是两种算法的超低fps(即小于0 fps)。我注意到SIFT和SURF的计算成本非常高,它是否适合在现场摄像机上进行这种跟踪?
感谢。
答案 0 :(得分:4)
开发此类标记需要您对图像处理,3D成像,跟踪等有深入了解。不像开发简单的应用程序。
最好使用开发的;)
FERNS比SIFT更有效,更简单。你可以使用它。它是由EPFL的研究开发的。如果你阅读AR /跟踪论文,你会发现这些人是行业/领域的领导者。它也在更高版本的OpenCV中实现(我认为在2.1或2.2中?)
否则,您始终可以从此处获取该算法的源代码: Ferns: Planar Object Detection
修改强>
基本上像FERNS这样的算法会告诉你位置/旋转等(这是由称为Homography的矩阵表示的变化)某个表面将参考另一个帧。这个Homography是3D渲染所需的一切;)
使用OpenGL或类似的3D库,您可以使用计算的Homography绘制对象。如果您为每个帧重复此过程,您将拥有一个简单的AR应用程序。
理论书籍:Image Processing和3D Imaging
了解AR阅读:ARToolKit paper
有关FERNS的更多信息:oezuysal'site
答案 1 :(得分:4)
SIFT是一个很好的算法,但你无法从中得到最好的效果。有些方法使用FAST进行检测,然后构建检测点的简化SIFT描述符(而不是它们使用的128个值,例如32)。还开发了用于FAST的金字塔方法(你有ORB,但它的描述符不够好)。
现在OpenCV刚刚发布了FREAK,他们承诺它是最快和最强大的,所以我很快就会尝试。您可以在OpenCV上查看这种tutorial增强现实。
答案 2 :(得分:1)
SIFT和SURF是成功的视觉特征,可能是正确的方法(尽管存在更快的计算功能) 可以在GPU上有效地计算SIFT。请参阅siftGPU。