6

1つの画像(A)のSURF記述子を他のいくつかの画像(B、C、D、..)の記述子と比較して、Aに最も類似した画像を見つけたいと思います。記述子には64の次元があります。

C#とEmguを使用して、Aの記述子をB、次にC、次にDなどと比較することによって照合が行われます。画像数が10を超えると、無関係な記述子を多数検索する必要があるため、これは非常に遅くなります。

プロセスをスピードアップするために、(記事によると)正しい方法は、(B、C、D、..)の記述子用に1つのkdツリーを構築して、Aの記述子をすばやく一致させることです。kd -ツリーはレベルに応じて次元で分割されます。最初の分割は1次元で決定され、2番目の分割は2次元で決定されます。ただし、記述子の次元数が多い場合(64)、KDツリーを使用する利点は小さくなります。

だから私の質問は:1つの画像(A)から複数の画像(B、C、D ..)にSURF記述子を一致させるためにKDツリー/他の方法を使用することでどのような経験または知識がありますか?何がうまくいくのか、あまりうまくいかないのか、そしてあなたはこのようなことをしましたか?

FLANNはOpenCVで使用されているため、ここではオプションになりますが、C#のバージョンが見つかりません。ほぼ最も近いNeightboorもkdツリーを高速化するオプションですが、それは一致する画像でうまく機能しますか?

よろしくモーテン

4

2 に答える 2

0

C または C++ でFLANNを試すことができます。それほど複雑ではありません。

ただし、C++ で FLANN をテストしていますが、マッチング時間 (SURF 機能、FLANN、1,000 画像のクエリを使用) は 20 秒から 400 秒 (画像ごとの特徴ベクトルの数によって異なります) と非常に長くなります。

于 2011-12-01T15:03:01.700 に答える
0

この例を確認してください: https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/find_obj.cpp?rev=2065

于 2011-12-08T21:34:48.673 に答える