我正在为iPhone开发增强现实应用程序,该应用程序涉及非常需要处理器算法的对象识别(将CPU推到100%,每秒最多可以处理5帧),为节省电池电量并使整个过程不那么“抖动”,我正在尝试想出一种方法,仅在用户实际移动相机时运行该对象识别器。
我的第一个想法是简单地使用iPhone的加速度计/陀螺仪,但在测试中,我发现很多人会以足够一致的态度和速度移动iPhone,以至于无法确定它是否仍在运动。
因此,剩下的选择是分析实际视频并检测其中的运动。 我已经使用了OpenCV并尝试运行其金字塔Lucas-Kanade光流算法,虽然效果还不错,但几乎与我的对象识别器一样需要占用大量处理器资源-如果我减少深度级别/降低图像采样率/跟踪较少的点,我可以将其帧率达到可接受的水平,但准确性会降低,并开始错过一些大运动并触发小的手震动。
因此,我的问题是,是否有比Lucas-Kanade更快的其他光流算法,如果我只想检测相机运动的总体大小? 我不需要跟踪单个对象,我甚至不需要知道相机移动的方向,我真正需要的只是一种方法来提供两帧视频并让它告诉我它们之间的距离。
我的第一个想法是简单地使用iPhone的加速度计/陀螺仪,但在测试中,我发现很多人会以足够一致的态度和速度移动iPhone,以至于无法确定它是否仍在运动。
因此,剩下的选择是分析实际视频并检测其中的运动。 我已经使用了OpenCV并尝试运行其金字塔Lucas-Kanade光流算法,虽然效果还不错,但几乎与我的对象识别器一样需要占用大量处理器资源-如果我减少深度级别/降低图像采样率/跟踪较少的点,我可以将其帧率达到可接受的水平,但准确性会降低,并开始错过一些大运动并触发小的手震动。
因此,我的问题是,是否有比Lucas-Kanade更快的其他光流算法,如果我只想检测相机运动的总体大小? 我不需要跟踪单个对象,我甚至不需要知道相机移动的方向,我真正需要的只是一种方法来提供两帧视频并让它告诉我它们之间的距离。