31

SURFSIFTを使用してオブジェクト検出をテストしています。

SURFはSIFTよりも高速で堅牢であると主張していますが、私のテストではこれは真実ではないことがわかりました。ミディアムイメージ(600 * 400)のSIFTは、SURFと同じ速度であり、オブジェクトをかなりよく認識します(SURFよりも優れている可能性があります)。

私は何か間違ったことをしていますか?

[編集]

opencvコードを少し変更するだけで、SURFがはるかに高速になる方法を説明する記事があることに注意してください。

アクティブなopencv開発者を知っている場合は、彼に見てもらいましょう。

4

6 に答える 6

31

設計時に高速化を意図していましたが、実際には、標準的なカメラを使用したリアルタイム アプリケーションにはその違いは関係ありません。ところで、FAST 検出器は高速で非常に堅牢です。私は電話でリアルタイムの拡張現実をプログラミングしており、アプリケーションの実行中に SIFT (初期化) と FAST (リアルタイムの機能検出のためのピラミッド型 FAST) を組み合わせて使用​​しています。FAST はより高速であり、OpenCV で実装されているため、SURF に固執したくない場合は試してみてください。リアルタイムに SURF を使用する最近の論文は見たことがありませんが、SIFT の修正版を見たことがあります。記述子のピクセル数を減らしたり、その他の種類の修正を加えたりしたものです。と思われた程度。とにかく、それは私の意見です。

于 2012-07-02T21:02:28.887 に答える
17

OpenCV には、速度や安定性に関して SURF の最適な実装がありません。適切に記述された 2 つの実装の FLOPS をカウントした場合、SURF は SIFT よりも基本的に高速です。SIFT は、画像を大きなガウス カーネルで数回畳み込むことによって画像ピラミッドを計算しますが、SURF は積分画像を使用してその近似を行います。

SURF のいくつかの実装の比較を確認するには、次の私のページをご覧ください。

http://boofcv.org/index.php?title=パフォーマンス:SURF

クロスプラットフォームの問題により、丸めに関するパッチが OpenCV によって拒否されたのは残念です。たぶん、パッチは微調整されて再提出されるでしょう。私自身の作業で、汎用 round() が非常に遅いことに気付き、それをカスタム関数に置き換えました。

Jav_Rock で言及されている FAST 検出器については、最後の手段としてのみ使用します。検出器の安定性は他のどの検出器よりもはるかに劣りますが、実際には高速です。

于 2012-12-02T18:21:38.187 に答える
5

SURFはより高速で、SIFTはより堅牢である必要があります。Astorは、600*400は今日の基準では小さな画像であると言っているのは正しいです。けれど。

そうは言っても、SURFはSIFTよりも何桁も速いはずです。

于 2012-06-23T19:45:53.790 に答える
1

すべてのフレームに適用するのではなく、6 フレームごとに適用することで Surf 機能検出器の速度を上げましたが、私のアプリケーションでは問題ありませんでした。カウンター i を作成し、if ステートメント if(i%6==0) を作成し、この if ステートメントの下にコードを挿入すると、速度が向上します

于 2015-08-14T14:48:46.577 に答える