私はiPhone用の拡張現実アプリに取り組んでいます。これには非常にプロセッサを集中的に使用するオブジェクト認識アルゴリズム(CPUを100%でプッシュすると、1秒あたり5フレームを通過できる可能性があります)が含まれ、バッテリーの電力を節約し、全体が「ぎこちない」ものではない私は、ユーザーが実際にカメラを動かしているときにのみ、そのオブジェクト認識機能を実行する方法を考え出そうとしています。
私が最初に考えたのは、iPhoneの加速度計/ジャイロスコープを使用することでしたが、テストの結果、iPhoneがまだ動いていることを知る方法がないほど、十分な姿勢と速度でiPhoneを動かすことが非常に多いことがわかりました。
そのため、実際のビデオフィードを分析し、その中の動きを検出するオプションが残りました。OpenCVを動作させて、ピラミッド型のLucas-Kanadeオプティカルフローアルゴリズムを実行してみました。これはうまく機能しますが、オブジェクト認識機能とほぼ同じくらいプロセッサを集中的に使用するようです。深度レベルを下げる/ダウンサンプリングすると、許容可能なフレームレートに到達できます。画像/追跡するポイントは少なくなりますが、精度が低下し、大きな動きを見逃し始め、小さな手で揺れるような動きでトリガーされます。
だから私の質問は、カメラの動きの全体的な大きさを検出したいだけの場合、Lucas-Kanadeよりも高速な別のオプティカルフローアルゴリズムはありますか?個々のオブジェクトを追跡する必要はありません。カメラがどちらの方向に動いているかを知る必要もありません。本当に必要なのは、2フレームのビデオをフィードして、それらがどれだけ離れているかを教えてもらう方法だけです。