我正在为 iPhone 开发一个增强现实应用程序,该应用程序涉及一个处理器密集型对象识别算法(以 100% 的速度推动 CPU,它可能每秒可以通过 5 帧),并努力节省电池电量并让整件事不那么“紧张”我试图想出一种方法,只在用户实际移动相机时才运行该对象识别器。
我的第一个想法是简单地使用 iPhone 的加速度计/陀螺仪,但在测试中我发现人们经常会以足够一致的姿态和速度移动 iPhone,以至于无法判断它仍在运动。
这样就剩下分析实际视频输入并检测其中的运动的选项。我让 OpenCV 正常工作并尝试运行他们的金字塔形 Lucas-Kanade 光流算法,该算法运行良好,但似乎与我的对象识别器一样占用大量处理器 - 如果我降低深度级别/下采样,我可以将其提高到可接受的帧速率图像/跟踪更少的点,但准确性会受到影响,它开始错过一些大动作并触发小握手。
所以我的问题是,如果我只想检测相机运动的整体幅度,是否还有另一种比 Lucas-Kanade 更快的光流算法?我不需要跟踪单个对象,我什至不需要知道相机正在移动的方向,我真正需要的只是一种方法来输入两帧视频并让它告诉我它们相距多远。