問題タブ [feature-descriptor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
318 参照

opencv - SURF 記述子を使用する理由

私はちょうどその実装について勉強しSURFて行きましたが、なぜ私たちがそれを使用descriptorするのか、私はそれを理解していませんでしkeypointsdescriptors. そして、認識におけるそれらの重要性と役割は何ですか?

私はそれについて紙、フォーラム、ネットから読みましたが、その方程式を理解できませんでした。誰かが方程式をよく理解していない可能性があるため、簡単な言葉でそれについて知りたいだけです。

0 投票する
1 に答える
4025 参照

c++ - KeyPoint 記述子 OpenCV

KeyPointOpenCVで特定の記述子を取得する方法を理解しようとしています。これまでのところ、私のコードは次のようになります。

問題は、記述子にデータがないことです。私は何が欠けていますか?KeyPointオブジェクトに渡されるパラメータについて詳しく説明していただけますか? 私はコンピューター ビジョンと OpenCV を初めて使用するので、(OpenCV のドキュメントよりも) 詳しい説明が役立つ可能性があります。

0 投票する
0 に答える
309 参照

c++ - 記述子 OpenCV を計算するときの malloc エラー

私は OpenCV を使用して ORB 記述子を計算しています。問題は、実行中のランダムな時点でこのようなエラーが発生することです。

LightFieldRecovery(3468,0x7fff73a9a310) malloc: * オブジェクト 0x100911608 のエラー: 解放されたオブジェクトのチェックサムが正しくありません - オブジェクトは解放後に変更された可能性があります。* malloc_error_break にブレークポイントを設定してデバッグする

私はポインターを (明示的に) 使用していません。データ コンテナーとして std::vectors を使用しています。コードは長すぎてここに投稿できませんが、https://github.com/BRabbit27/LigthField/blob/master/LightFieldRecovery/main.cppを見ることができます。

このエラーがどこにある可能性があるかを特定できる人はいますか? 私は一日中それを探していました。

私は OS X Mavericks、Xcode 5、および C++ で作業しています (Xcode の Build Settings の下で、C++ Language Dialect-std=gnu++11に設定されていると、OpenCV コードをコンパイルできません) 。

編集

Valgrind の助けを借りて、問題を次のコードに絞り込むことができましたが、エラーの内容がわかりません。データを a からポインターにコピーするときに何が欠けているのかわかりませcv::Matuchar*

エラー A

エラー B

どうやら私がふりをしている方法memsetは良いものではありません。

エラー C

同様にmemcpy、間違ったパラメーターを渡しているか、範囲外の領域にコピーしています

エラー D

0 投票する
1 に答える
1137 参照

database - SIFT の記述子データベースを作成する方法

(画像の) SIFT 記述子のデータベースを作成するにはどうすればよいですか? 私の意図は、サポート ベクター マシンに監視付きトレーニング セットを実装することです。

0 投票する
1 に答える
732 参照

opencv - gpuHog から記述子を取得するには?

以下のようにCPUバージョンを使用しました。

私の質問は、GPU を使用して「記述子」を取得する方法です。

次のコードを試しました。(動作しません)

「gpu_descriptors」から「記述子」を取得するにはどうすればよいですか?

これを解決するのを手伝ってくれる人はいますか?どうもありがとう!

0 投票する
1 に答える
1928 参照

opencv - マッチング アルゴリズムを使用して特徴記述子を評価する方法

このチュートリアルに基づいて、FLANN アルゴリズムを使用して特徴検出器と記述子を評価しようとしています。

評価部分のROC 曲線を作成したいので、TP、FN、FP、および TN を取得する必要があります。問題は、これらの値を取得する方法がわかりません! 私は多くの論文を読みましたが、どの論文も説明していません。与えられたチュートリアルでは、良い一致と悪い一致をカウントできるように特定のしきい値を設定できますが、それはすべてが正しく一致したことを正当化するものではありません. すべての画像ペアを手動で数えるべきか、それとも一般的な手法で自動的に解決する必要がありますか。

助けてくれてありがとう!

0 投票する
1 に答える
1301 参照

c++ - OpenCV で記述子マトリックスを作成する方法

次の方法で、OpenCV の DescriptorMatchers の 1 つと共に使用できる OpenCV の記述子を作成するにはどうすればよいですか。

私はすでに次の記述子クラスを持っています。DescriptorMatcher で使用できる新しいマトリックスを変換または作成するにはどうすればよいですか。できればBFMatcher。

0 投票する
1 に答える
1091 参照

opencv - 提供されたキーポイントでの orb 記述子の計算

私はopencv 2.4.8を使用しています。orb を次のように宣言します。

パッチ サイズは、キーポイントの周りに (patchsize-1)/2 のスペースが必要であることを意味していませんか?

縦横に 15 ピクセルのマージンを持つ座標でキーポイントを提供していますが、そのような位置では記述子を生成できません。

たとえば、240x320 の画像の場合、十分なピクセル (0,1,....14 -> 15 ピクセル) があるにもかかわらず、点 (15,15) を記述できません。

0 投票する
0 に答える
785 参照

opencv - 記述子を使用して画像内のデータテーブルを検出しますか?

記述子を使用して画像内の統計テーブルを検出する方法はありますか? すでにopencvを使用してhaar分類器をトレーニングしました。特定の画像にテーブルがあるかどうかを検出する他の方法や手法はありますか?

編集 1: 下の表に変換したハフ行を見つけます。 ここに画像の説明を入力

画像内のオブジェクトを検出する概念的な方法は何ですか?

0 投票する
1 に答える
8253 参照

opencv - OpenCV ORB記述子 - バイトセットに正確にどのように格納されていますか?

私は現在、OpenCV の ORB 機能エクストラクタを使用していますが、ORB 記述子が保存されている奇妙な (少なくとも私にとっては) 方法に気付きました (基本的に、私の質問に関係のない変更を加えた BRIEF-32 です)。ご存じの方もいらっしゃると思いますが、ORB は変更された FAST-9 (円の半径 = 9 ピクセル。キーポイントの方向も格納します) を使用して抽出されたキーポイントを取得し、変更された BRIEF-32 記述子を使用して、キーポイントが表す機能を格納します。

BRIEF (ORB バージョン) は次のように機能します。31x31 ピクセルのパッチ (フィーチャを表す) を取得し、ランダムな 5x5 ピクセルのテスト ポイントの束を作成します。次に、それらのポイントのペアを取得し、それらの強度を評価して、ペアの最初のポイントの強度が 2 番目のポイントの強度より大きいか小さいかに基づいてバイナリ決定 (0 または 1) を行います。次に、これらすべてのビットを取得し、基本的な合計式を使用して、長さ n のバイナリ文字列を作成します (BRIEFT-32 の場合、32 バイト * 8 = 256 ビット長のバイナリ文字列があります)。

SUM(2 (i-1) *bit_pair_test)

ここで、bit_pair_test は、テスト ポイントのペアのテストから計算したビット値です。最終結果は次のようになります (一連のバイナリ テスト (...,0,1,0,1,1) の場合):

(2 0 *1) + (2 1 *1) + (2 2 *0) + (2 3 *1) + (2 4 *0) + ...

OpenCV の ORB がこれらのビット文字列を格納する方法は、私にとって謎です。各行が 1 つのキーポイントの 1 つの記述子である画像全体の記述子を含むマトリックスを見ると、各記述子には 32 個の 8 ビットの数値が含まれていることがわかります。情報を保存します。256 ビットを 32 バイトに分割する理由がわかりません。公式ドキュメント ( http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_brief/py_brief.html ) は、OpenCV がそのような記述子をバイト単位で格納するとのみ述べていますが、なぜそれを行うのかについては説明していません。これらのいくつかの組み合わせが答えになる可能性を排除することなく、3 つの可能性を検討しました。

  • 見えない収納テクニック
  • その長さのバイナリ文字列 (この場合は 256 ビット) のハミング距離を計算する際のパフォーマンスの問題
  • マッチング プロセスの最適化 - マッチングは基本的に、1 つの画像のキーポイントの記述子を 2 番目の画像のキーポイントの記述子と比較します。バイナリ文字列があるため、ここではハミング距離が当然の選択です。どういうわけか、これらの 32 個の部分文字列のそれぞれが、2 番目の画像の他のキーポイントの記述子の対応する部分と比較される可能性があります (位置 0 の部分文字列 (キーポイント X、画像 1) と位置 0 の部分文字列 ( keypoint Y, image 2). 最後に、OpenCV は次のように言うかもしれません:「わかりました。すべての部分文字列の約 26 が両方の記述子で同じであるため、記述子の一致率は 80% であり、勝者がいます。」しかし、私はそれを確認する証拠を見つけることができませんでした.

PS: ORB に関する論文はこちらで、BRIEF に関する論文はこちらで読むことができます。