私は多くの AR ライブラリ/SDK/API に出くわしました。それらはすべてマーカーベースです。説明とコメントから、このビデオを見つけるまで、彼は SIFT を使用してオブジェクトを検出し、それを追跡しているようです。
Android でこれを行う必要があるため、純粋な Java で SIFT を完全に実装する必要があります。
喜んでそれを行いますが、最初に SIFT が拡張現実にどのように使用されるかを知る必要があります。
私はあなたが与える情報を利用することができます。
私の意見では、ポータブルデバイスにSIFTを実装しようとするのは狂気です。SIFTは画像特徴抽出アルゴリズムであり、複雑な計算が含まれ、確かに多くの計算能力を必要とします。SIFTも特許を取得しています。
それでも、本当にこのタスクを実行したい場合は、最初にかなりの調査を行う必要があります。次のようなことを確認する必要があります。
なぜAndroidNDKなのか?Javaアプリケーションで使用されているCライブラリにアルゴリズムを実装することで、パフォーマンスが大幅に向上する可能性があるためです。
何かを始める前に、その調査を必ず行ってください。画像の特徴抽出アルゴリズムがAndroid携帯には多すぎることに途中で気付くのは残念です。ARアプリケーションの作成に使用することは言うまでもなく、良好な結果を提供し、許容可能な時間で実行されるようなアルゴリズムを実装すること自体が真剣な取り組みです。
ARでそれをどのように使用するかと同様に、画像でアルゴリズムを実行することで得られる記述子は、中央データベースに保存されているデータと照合する必要があると思います。その後、結果をユーザーに表示できます。SURFから収集された画像の特徴は、それらを使用して識別できるように、それを説明することになっています。私はそれを行う経験はあまりありませんが、Webには常にリソースがあります。おそらく、オブジェクト認識などの一般的なものから始めたいと思うでしょう。
幸運を祈ります:)
330Mhz Symbian モバイルで SURF を試してみましたが、すべての最適化とルックアップ テーブルを使用してもまだ遅すぎました。そしてSIFTはさらに遅くなるはずです。現在、モバイルで FAST を使用している皆さん。とにかく、特徴抽出は最大の問題ではありません。その中での対応と誤検知の解消はより困難です。FAST リンク http://svr-www.eng.cam.ac.uk/~er258/work/fast.html
もし私があなたの所にいれば、SIFT 機能がどのように (そしてなぜ) 機能するかを調べます (前述のように、そのウィキペディアのページには適切な説明があり、詳細については科学論文 (ウィキペディアにリンクされています) を確認してください) )、好みに合った独自のバリアントを構築します。つまり、アプリケーションに必要なパフォーマンスと CPU 負荷の最適なバランスを実現します。
たとえば、ガウス平滑化は、より高速な平滑化の方法に置き換えられる可能性があると思います。
また、独自のバリアントを構築する場合、特許とは何の関係もありません (GLOH のように、既に多くのバリアントが存在します)。
Android ポートで OpenCV の FAST 実装を試しましたか? 私はそれをテストしましたが、非常に高速に動作します。
また、検出された FAST キーポイントの周囲の削減されたヒストグラム記述子を計算することもできます。SIFT の標準的な 4x4 ではなく、3x3 について聞いたことがあります。NEON 命令を使用して大幅に最適化すると、リアルタイムで動作する可能性が十分にあります。それ以外の場合は、非常に高速なキーポイント周辺のパッチの二乗和や絶対差など、高速でシンプルなものをお勧めします。
SIFT は万能薬ではありません。リアルタイム ビデオ アプリケーションの場合、通常はやり過ぎです。
SURF、MSER などを含む、OpenCV ライブラリに既に実装されている機能を確認することから始めることをお勧めします。
http://opencv.willowgarage.com/documentation/cpp/feature_detection.html
アプリケーションにはこれで十分であり、SIFT よりも高速です。そして前述のように、SIFTは特許を取得しています。
また、フレームごとに機能を抽出するだけで、モバイル プラットフォームでパフォーマンス テストを行うことから始めます。これにより、どの機能がリアルタイムで実行できるかどうかがわかります。
いつものように、ウィキペディアはhttp://en.wikipedia.org/wiki/Scale-invariant_feature_transformから始めるのに適していますが、SIFT は特許を取得していることに注意してください。