2016-06-25 9 views
0

私はARアンドロイドアプリケーションを開発しようとしています。
私はこの目的のためにOpenCVを使用していますが、カメラでキャプチャしたオブジェクトを検出して認識する必要がありますが、ARフィールドのモバイルデバイスのオブジェクト認識にはあまり慣れていません。ARオブジェクトの3Dオブジェクト認識

私は2つの質問があります:アルゴリズム(精度と速度の意味で)SIFT優れている、SURF、FAST、ORB、または何か他のもの

1-?

-2-検出および追跡のプロセスがこのようなものであろうかどうかのだろうか。その後で利用可能な各画像(記述子のMAT)と、それに一致、
カメラフレームを取ってキーポイントを検出し、その記述子を計算しますそれがどのデータベースに属しているかを見つけることができます。
上記の手順は計算量が重く、特にオブジェクトを追跡し続けるために各フレームごとに繰り返していると感じます。

私の目標に最も適したアルゴリズムと手順について、私にいくつかの詳細を教えてください。
ありがとうございます事前に感謝します

答えて

1

私はそれが古い質問だと知っていますが、他人を助けることができると感じています。

Android、OpenCV、およびOpenGL ES 3.0を使用して、NDKを使用してAndroidスタジオで小さなARアプリケーションを構築するこのチュートリアルがあります。 コードを確認するのに良い説明とGithubのレポがあります。

http://www.anandmuralidhar.com/blog/android/simple-ar/

これは、シーンに3Dオブジェクトを起動するために/マッチマーカーを検出するために、ORBの機能を使用しています。 チュートリアルでは、プロセスがどのように機能するかを理解することができます。

3

FASTは検出器であり、SIFT、SURF、ORB、およびBRISKは検出器と記述子です。

あなたの質問は非常に一般的なものです。

  • SIFT記述子は古典的なアプローチであり、後で提案されるほとんどの記述子についても「オリジナル」 のインスピレーションがあります。欠点は、 は数学的に複雑で計算量が多いということです。
  • SURF検出器は、 SIFTのより効率的な代替として認識されています。 Hessianベースの検出器とディストリビューションベースのディスクリプタジェネレータを持っています。
  • SIFTとSURFはグラデーションのヒストグラムに基づいています。つまり、パッチ内の各ピクセルの勾配を計算する必要があります。これらの の計算には時間がかかります。 SURFは、積分画像を用いた演算 をスピードアップしていますが、これはまだいくつかの アプリケーション

のために十分な速さではありませんSIFTとSURFは、最も正確であるが、彼らは、特許で保護されていると、彼らは購入せずに使用することはできません。

  • FASTはスタンドアロンのフィーチャ検出器であり、記述子ではありません ジェネレータ。これは、非常に効率的であり、複雑な複雑さのリアルタイムアプリケーションに適しているように設計されています。
  • 簡易ディスクリプタは、バイナリ文字列に基づく軽量で実装しやすいディスクリプタ です。簡単な記述子は、低電力の デバイスを対象にしており、その堅牢性と精度の一部を効率的に補償しています( )。

バイナリ・ディスクリプタは、多くの最新のアプリケーション、特に計算リソースとメモリ・リソースの両方が限られているモバイル・プラットフォームにとって魅力的なソリューションです。

私の見解では、ORBはバイナリベースのディスクリプタであるため、ORBを好むと思います。BRISKと比較すると、計算量が少なくメモリ要件は少なくなります。

ファイナライズする前に、これらの利用可能なディスクリプタすべてについて調査作業を行う必要があります。

+0

これは本当に便利です!ありがとうございます:) –

+0

親愛なる@ Lisa.s、なぜあなたはhaarカスケードとディープラーニング(CNN)ではなく、あなたのプロジェクトにフィーチャーディテクタとディスクリプタを選択しましたか?私も同じプロジェクトをやっていましたが、フィーチャーメソッドを使う理由を知りません。 – John

関連する問題