4

Visual C++ 2010 の OpenCV で BRIEF 記述子を使用して、2 つの画像の点を一致させています。

ブリーフ記述子に関する論文では、物事をスピードアップすることが可能であると書かれています。

「BRIEF 記述子はハミング距離を使用します。これは、最新の SSE 命令セットの場合のように、XOR またはビット カウント操作を実行するための特定の命令を提供することが多い最新の CPU で非常に高速に実行できます。」

SSE4.2 を有効にすると、速度が向上するはずです。私の質問は、単に Visual C++ でこれを行う方法ですか?

別の方法として、SSE4 をサポートする別のコンパイラを選択することもできます。たとえば、Intel の ICC です。これは本当に必要ですか?

4

2 に答える 2

6

残念ながら、そのようには機能しません。

C/C++ コンパイラは、[プロジェクト] -> [C/C++] -> [コード生成] -> [拡張命令セットを有効にする] で特定の命令セットを使用するように指示される場合があります。しかし、それはほとんど何もしません。あなたの場合、まったく何もしません。これは、一部の CPU 命令が C ステートメントから簡単にアクセスできないためです。一部のコンパイラ (Intel など) は他のコンパイラよりも優れていますが、達成したいことに対して十分にスマートなコンパイラはありません。

あなたがしなければならないことは、特定のアルゴリズムを見つけ、SSE命令を学び、それらの命令でアルゴリズムを手動で書き直すことです。純粋なアセンブリで記述することも、C/C++ から呼び出すことができる組み込み関数を使用することもでき、コンパイル時に SSE 命令を発行します。

于 2012-04-17T11:07:07.373 に答える