我正在开发一款适用于iPhone的增强现实应用程序,它涉及一种处理器密集型的物体识别算法(将CPU推至100%,可以达到每秒5帧),并努力节省电池电量功能并使整个事情变得更少“紧张”我正试图想出一种只在用户实际移动相机时运行该对象识别器的方法。
我的第一个想法是简单地使用iPhone的加速度计/陀螺仪,但在测试中我发现很多时候人们会以足够一致的态度和速度移动iPhone,以至于没有任何方法可以说明它仍然存在在运动中。
这样就可以选择分析实际的视频输入并检测其中的移动。我让OpenCV工作并尝试运行他们的金字塔式Lucas-Kanade光流算法,该算法运行良好但似乎几乎与我的对象识别器一样处理器密集型 - 如果我降低深度级别/下采样,我可以使其达到可接受的帧率图像/跟踪更少的点,但随后精度受到影响,它开始错过一些大的动作并触发小手抖动。
所以我的问题是,如果我只想检测相机移动的整体幅度,是否还有比Lucas-Kanade更快的光流算法?我不需要跟踪单个物体,我甚至不需要知道相机移动的方向,我真正需要的是一种方式来提供两帧视频,让它告诉我它们有多远。
答案 0 :(得分:4)
这里有一个开源(免费供私人使用)项目,它利用FAST角点检测: http://www.hatzlaha.co.il/150842/FAST-Corner-V2
它可能对物体检测非常有用,并且经过严格的优化以达到美观的非抖动结果。
- 编辑 -
现在还有一个Lucas-Kanade光流项目 - http://www.success-ware.com/150842/Lucas-Kanade-Detection-for-the-iPhone 您可以下载源代码,并且还有一个指向AppStore的链接,因此您可以使用它并查看它是否满足您的需求。
HTH,
乌迪德。
答案 1 :(得分:2)
为什么不使用加速度计/陀螺仪运动感应的组合,以及非常低分辨率的图像跟踪器?每种方法似乎都被完全不同的用户动作所混淆。