3

C++ で画像検出をしようとしています。私は2つの画像を持っています:

イメージシーン: 1024x786 人物: 36x49

現場からこの特定の人物を特定する必要があります。相関を使用しようとしましたが、画像にノイズが多いため、正しい/正確な結果が得られません。

私はこのタスクを最もよく解決する方法を考えたり研究したりしてきましたが、これらは最も論理的だと思われます:

  • ガウス フィルター
  • 畳み込み
  • FFT

基本的には、ノイズを画像の周りに移動させたいので、相関を使用して人物をより効果的に見つけることができます。

特に私が使用している画像のサイズでは、FFT の実装が難しい、および/または遅くなる可能性があることを理解しています。

誰かがこれを解決するための指針を提供できますか? 最良の技術/アルゴリズムは何でしょうか?

4

3 に答える 3

2

Andrew Ng のMachine Learning クラスでは、ニューラル ネットワークとスライディング ウィンドウを使用して、まさにこの問題を解決しました。

  1. ニューラル ネットワークをトレーニングして、36x49 ウィンドウ (または他の必要なサイズ) を使用して、画像が何であるかを示すタグ付きのデータを使用して、探している特定の機能を認識します。
  2. 新しい画像を認識するために、36x49 の長方形を取り、画像上でスライドさせ、各位置でテストします。新しい場所に移動するときは、ウィンドウを特定のピクセル数だけ右に移動しますjump_size(たとえば、5 ピクセル)。画像の右側に到達したら、0 に戻りy、ウィンドウの をだけ増やしますjump_size

ノイズは大きな問題ではないため、ニューラル ネットワークはこれに適しています。ノイズを除去する必要はありません。また、以前に見たものと似ているが、少し異なる画像 (顔の角度が異なる、照明がわずかに異なるなど) を認識できるため、優れています。

もちろん、欠点は、そのためにトレーニング データが必要なことです。事前にタグ付けされた画像のセットがない場合は、運が悪いかもしれませんが、Facebook アカウントを持っている場合は、スクリプトを記述して、自分と友人のタグ付けされたすべての写真を取得して使用することができます。

于 2012-04-17T12:49:17.497 に答える
0

FFT は、kd ツリーまたは階層ツリーを使用して画像を既に並べ替えている場合にのみ意味があります。画像の 2d RGB 値を 1d 曲線にマッピングし、周波数分析の前に複雑さを軽減することをお勧めします。

于 2012-04-17T12:47:46.883 に答える