私はOpenCVが初めてで、回路図などの図面からコンポーネントを検索するための最良の方法を見つけようとしています。コンポーネントは常に白の背景に黒ですが、コンポーネントは回転およびスケーリングできます。
コンポーネントを含む簡単な図の例。ダイアグラムは常にこれよりも解像度が高くなります。
すべてのコンポーネントに対して Haar トレーニングを行う必要がありますか? それともテンプレートマッチング?
ありがとう!
私はOpenCVが初めてで、回路図などの図面からコンポーネントを検索するための最良の方法を見つけようとしています。コンポーネントは常に白の背景に黒ですが、コンポーネントは回転およびスケーリングできます。
コンポーネントを含む簡単な図の例。ダイアグラムは常にこれよりも解像度が高くなります。
すべてのコンポーネントに対して Haar トレーニングを行う必要がありますか? それともテンプレートマッチング?
ありがとう!
このステートメントにより、おそらくテンプレート マッチングの使用を除外できます。
コンポーネントは回転およびスケーリングできます
コンポーネントの種類ごとに多数のテンプレート (つまり、多数の回転とスケール) を作成する予定がない限り、このような状況ではテンプレート マッチングはうまく機能しません。
Haar カスケードは機能する可能性がありますが、少なくとも顔検出では、処理できる回転量が +/- 20 度程度に制限されます。ただし、これは主に使用されているトレーニング セットによるものだと思います。Haar カスケードでは、ポジティブ セットとネガティブ セットの両方のトレーニング イメージを大量に (良いものを取得するには数千単位) 必要とします。そのため、データ収集には時間がかかる場合があります。
squares.cppサンプルから始めて、基本的な形状検出のダイアグラムで四角形のブロックを検出するためにそれがどのように機能するかを確認してください。次に、正方形の検出に満足している場合は、三角形などを検出するように拡張します。
次に、機能ベースのアプローチ (SURF、SIFT、MSER など) があります。これらのサンプルのいくつかが役立つ場合があります。
matcher_simple.cpp
matching_to_many_images.cpp
descriptor_extractor_matcher.cpp
bagofwords_classification.cpp
それが役に立てば幸いです!