11

2 つの画像を比較して、2 つの画像に大きな違いがあるかどうかを判断するために使用できるアルゴリズムを探しています。「重要」とは、部屋の写真を 2 枚撮り、そのうちの 1 枚の壁に大きなクモがはっきりと写っていれば、それを検出できるということです。私は、何が検出されたのか、どこで検出されたのかにはあまり興味がありません。何か違うものがあるというだけです。アルゴリズムは明るさを無視する必要があります。日中に部屋が明るくなったり暗くなったりしても、アルゴリズムはそれを無視する必要があります。

アルゴリズムを知らなくても、正しい方向へのヒントがあれば役に立ちます。

ありがとう!

4

4 に答える 4

4

2D データのハイパス フィルタリングを実行してみます。

フーリエによると、どの周波数が信号に含まれているかを分析することで、すべての信号を「周波数空間」に変換できます。これは、画像などの 2 次元信号にも当てはまります。

「ハイパス フィルター」を使用して、一定のオフセットや緩やかな勾配など、すべての低周波部分を取り除きます。画像に適用すると、単純な「エッジ検出」アルゴリズムとして機能します。サンプルを見ると理解しやすいかもしれません。

画像のハイパス フィルタリング

Web 上のどこかから壁にクモの画像を撮りました (左上)。次に、この画像の明るさを下げました (左下)。どちらのバージョンでも、GIMP (This plugin)を使用してハイパス フィルターを適用しました。両方の入力画像の出力は非常によく似ています。

私の推奨事項: 最初にハイパス フィルターを適用してから、違いを確認します。

考えられる問題

リクエストに応じて、ここに私が想像できるいくつかの問題があります。

  • シャープなエッジがない: 検出したいオブジェクトにシャープなエッジがない場合は、HF パス フィルタリングを使用して除外します。しかし、それはどのようなオブジェクトでしょうか? それらは大きく、平らで (影を生成しないように)、構造化されていない必要があります。

  • 明るさではなく色のみが異なる: オブジェクトの色のみが異なり、明るさが背景と同じである場合、グレースケール変換に問題がある可能性があります。しかし、この問題に遭遇した場合は、R、G、B データを個別に分析するだけで、少なくとも 1 つのチャネルがオブジェクトの検出に役立つはずです。

編集 ???への返信として、ハイパスフィルター処理された画像のレベルも調整すると(もちろん、すべて約0.5 * 256です)、範囲0、256に正規化するだけで、再び得られます

レベル調整あり

これはおそらくあなたの結果より悪くはありません。しかし、HP フィルターはシンプルで、FFT を使用すると非常に高速です。

于 2013-01-21T09:02:36.170 に答える
0

カメラが完全に静的で、すべての違いが周囲の照明やカメラの露出設定に起因する場合、2 つの画像を正規化することで明るさ (およびコントラスト) を無視できます。

各画像のすべてのピクセルからそれぞれの画像平均 (平均ピクセル値) を引き、差をとります。それは明るさの世話をします。

コントラストも処理したい場合は、各画像の分散を計算し (平均を 0 にした後)、ピクセル値に係数を掛けて両方の分散を同じにします。違いは、コントラストに対しても不変になります (露光過多/過少領域がないことを前提としています)。

于 2013-01-21T08:58:23.283 に答える
0

このような問題に対する一般的なアプローチは、カメラで撮影した画像を時間の経過とともに平均化し、特定のしきい値を超える差を検出することです。

平均化された画像となる画像をメモリに保持する必要があります。それを「平均」と呼びましょう。

カメラが写真 (「写真」と呼ばれる) を撮るたびに、次のことを行います。

  • 「avg」と「pic」の絶対ピクセル値の差を合計します。
    • しきい値を超える場合は、カメラの前で何かが動いています。
    • それ以外の場合は、"avg" を変更して、"pic" にわずかに収束するようにします。avg = avg * 0.95 + pic * 0.05たとえば、適切な式を見つけるのはあなた次第です。

ここでは、太陽と影の変化に適応するために、参照画像が 1 日に変化します。

于 2013-01-21T09:10:50.227 に答える