問題タブ [template-matching]
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.
c++ - CUDA GPU のパフォーマンスを判断する方法は?
解像度〜180X180の各入力画像と、解像度〜128 * 128の約10,000個のテンプレート画像を一致させるためのcudaプログラムを作成しています。目標は、リアルタイム パフォーマンスを達成することです。つまり、1 秒で 25 ~ 30 の入力画像 (それぞれに 10,000 個のテンプレートすべて) のテンプレート マッチングが行われます。
現在、私は次のアプローチを使用しています
- 実行時の I/O 操作を節約するために、すべてのテンプレートを GPU グローバル メモリにプリロードしました。
- 1 つのソース イメージとすべてのテンプレート イメージを一致させる単一のカーネルを作成し、すべての肯定的な一致の配列を返します。
- すべての操作を時間領域で実行します (FFT を使用しません)。その理由は、私は Radix-4 fft の実装を試みましたが、多くの中間グローバル読み取りと書き込みが必要であり、最終的に時間がかかります。
これまでのところ、1 つの入力画像から 10,000 のテンプレートに約 2 秒かかります。
私の質問は次のとおりです。
- このタスクがリアルタイムで達成可能かどうかを判断する方法はありますか? つまり、最大 FLOPS や I/O 帯域幅の制限などの助けを借りて
- GPU が最大限に活用されているかどうかを計算する方法は?
- パフォーマンスを改善する方法はありますか?
マシンスペック:[i7-4770、8GB、GTX-680]
現在のカーネル コードの説明:
- すべてのテンプレート イメージ [サイズは RGB で約 128X128] は、GPU メモリに個別に読み込まれます。アイデアは、実行時の操作中に I/O を節約することです。
- すべての入力画像はテクスチャ メモリにロードされます。その理由は、テクスチャが 2D アドレッシングに適したオプションであるためです。
- すべての「ブロック」には 1024 のスレッドがあります。
- 各スレッドは各出力ピクセルの値を計算します。出力のサイズは [31X31 = 961 ピクセル] です。
- 起動されるブロックの数は、一致するテンプレート イメージの数と同じです。
カーネル コード:
image - javacv を使用して別の画像内の画像を検索
別の画像で画像を検索したい。「テンプレート マッチング」アプローチは既に試しましたが、スケール、回転、遠近法などの変更に対して不変にする方法がわかりませんでした。
機能検出について読んだことがありますが、sift-features の使用が最良のアプローチであると思われます。それに加えて、opencv ではなく javacv を使用して機能検出を使用する実装が必要です。
私の問題に対する機能検出またはその他の提案を使用した実装はありますか?
matlab - この strfind ループをベクトル化します
このループをベクトル化しようとしています:
indices
needle
次に、の各行の開始位置が含まれますhaystack
(行ごとに異なる回数になる可能性があります):
strfind
ベクトル化されている限り、任意のコマンドで実行できますが、そうである必要はありません。
c++ - 画像Opencvでの回転不変の複数テンプレートの出現
さまざまなテンプレート画像と、各テンプレートが複数出現する 1 つの大きな画像がありますが、回転しています。
私は SIFT と SURF を試しましたが、各テンプレートの 1 つのオカレンスでのみ動作し、matchTemplate は回転不変ではありません。私はC++でプログラミングしています。
何か提案をお願いできますか?ありがとう。
java - JavaCV 画像処理エラー
画像に一致テンプレートを含む Java プロジェクトに取り組んでいます。私はいくつかのソースコードを見てきましたが、どちらもインポートに関するエラーはありません(私はすでにjavaCVライブラリを持っています)。しかし、実行すると、このエラーが発生します。
ここに私が試した2つのソースコードがあります。
GitHub Stackoverflow Questionの MatchTemplate.java
ここで明確にする必要があります。
OpenCV エラー: cvInitImageHeader、ファイル /build/buildd/opencv-2.4.2+dfsg/modules/core/src/array.cpp、行 2918 の不明なエラー コード -25 (Bad input roi)
スレッド「メイン」での例外 java.lang.RuntimeException: /build/buildd/opencv-2.4.2+dfsg/modules/core/src/array.cpp:2918: エラー: (-25) 関数 cvInitImageHeader の不正な入力 ROI
Java 結果: 1
ありがとう!
opencv - OPENCVで画像から特定の番号を検出するには?
私はトルコに住んでいますが、トルコでは、テレビ コマーシャルがテレビ番組や映画の開始まであと何分かを示すカウントダウンを行っています。
私がやろうとしているのは、カウンターの 00:59 秒または 2 番目の「0」だけをキャッチすることです。アルゴリズムは、「0」が他の数値ではなく「0」であることを理解する必要があります。
その後、テンプレート画像でテンプレートマッチングを試みましたが、間違った番号も検出されます。
そのため、どの方法が最適かを判断できませんでした...
これらのフレームから検出しようとしています:
ご覧のとおり、「0」ではなく「1」を検出します。
以下は、テンプレート マッチングを使用した私のコードです。