我正在尝试为 iPhone/iPad 创建一个全景应用程序。
图像拼接位还可以,我使用的是 openCV 库,结果还可以接受。
但我有点坚持开发 UI 以在捕捉全景时帮助用户。
大多数应用程序(甚至在 Android 上)都会为用户提供某种标记,该标记可以平移/旋转与用户相机的移动完全匹配。[我正在使用 iOS 7 - 默认相机的全景功能作为初步基准]。
但是,到目前为止,我还远远不够。
我尝试过的: 我尝试过使用加速度计和陀螺仪数据来跟踪标记。使用这种方法 -
我在加速度计数据上应用了 LPF,并使用简单的牛顿力学(具有仔细调整的阻尼因子)来平移屏幕上的标记。这种方法的问题:非常不稳定的数据。标记倾向于在点之间跳跃和摆动。很难区分平稳运动和混蛋。
我尝试在 LPF-ed 陀螺仪和加速度计数据之间使用互补滤波器来转换 blob。这种方法的问题:比第一种方法略好,但仍然很随机。
我也尝试过使用图像处理来计算光流。我正在使用openCV
goodFeaturesToTrack(firstMat, cornersA, 30, 0.01, 30);
从第一张图像中获取可跟踪点(从相机选择器中采样),然后
calcOpticalFlowPyrLK
用于获取这些点在下一张图像中的位置。 这种方法的问题:但是,通过跟踪这些点获得的运动矢量噪声太大,无法准确计算得到的运动方向。
我认为我接下来应该做什么:
也许从加速度计和陀螺仪数据计算 DCT 矩阵,并使用某种算法将一个输出与另一个输出过滤。
研究图像处理算法,使用一些不同的技术(???)。
使用卡尔曼滤波器将加速度计+陀螺仪的状态预测与图像处理模块的状态预测融合。
我需要的帮助:
你能建议一些更简单的方法来完成这项工作吗?
如果没有,您能否强调我的方法中可能存在的任何错误?真的有必要这么复杂吗?
请帮忙。