この特定のシフト/スケール不変テンプレートマッチングに最適な画像処理技術は何ですか?


17

ここで最初に説明した問題は進化しており、さらに詳しく調べて新しい情報を得たため、少し簡単になったかもしれません。

結論として、コンピュータービジョン/画像処理技術を使用して、ここに示されているこのパターンを検出できるようにしたいと思います。ご覧のとおり、理想的なパターンは4つの「ping」で構成されています。オブジェクト認識は次のようになります。

  • 不変シフト
    • 水平方向では、画像は周期的になります。(つまり、右に押す、左に出る、およびその逆)。
    • (幸いなことに)垂直的には、周期的ではありません。(つまり、上または下に押すと停止します)。
  • スケール不変(表示されるように、pingの「厚さ」は異なる場合があります。)

私はそれについて続けることができますが、私が意味することをカバーする画像を添付しています、以下をご覧ください:

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

もちろん、このファミリーからわかるように、それらは異なる「スケール」でもあります。

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

そして最後に、実際に受信する可能性のある「現実的な」シナリオをいくつか示します。ノイズがあり、行が下に行くにつれて「フェード」する可能性があり、もちろん、画像にはたくさんの偽の線、アーチファクトがありますなど

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

そしてもちろん、グランドフィナーレとして、この「極端な」シナリオの明確な可能性があります。

ここに画像の説明を入力してください

そこで、もう一度、最高の検出のためにここでどのコンピューターマシンビジョンテクニックを利用すべきかについてのガイダンスをお願いしたいと思います。パターンの発生ます。また、現実的なシナリオで適切な結果を得ることができます。(良いニュースは、回転不変である必要はないということです)。これまでに思いついたのは、2次元相関だけです。

現実には、色付きの画像がないことを付け加えます-数字の大群を取得するだけなので、「グレースケール」について話していると思います。

前もって感謝します!

PSその価値のために、おそらくオープンC Vを使用します。

編集#1:

コメントに基づいて、あなたがリクエストした詳細をここに追加しました:

データを定義する特性については、次のことを想定できます。

  • 各pingの水平方向の長さはさまざまですが、上限と下限はわかっています。この範囲内のすべての場合はYES、外部の場合はNO。(たとえば、pingの長さは1〜3秒の範囲であることがわかっています)。

  • すべてのpingは、YESの場合は「可視」である必要がありますが、最後の行が欠落している可能性があり、それでも「YES」と言いたい場合があります。そうでなければNO。

  • 各pingの垂直方向の長さ(「厚さ」)は異なる場合がありますが、ここでも上限と下限を知っています。(これらの画像に表示されるものと同様)。その範囲内のすべてに対してはい。外のものは一切ありません。

  • YESの場合、各ping間の高さは常に同じである必要があります。そうでない場合、NO。(例、すべてのpingが互いに相対的に同じ高さであることがわかります(垂直軸で〜110))。したがって、110 +/- 5はYESになりますが、それ以外はNOでなければなりません。

私はそれについてだと思います-しかし、私が追加できるものを教えてください...(また、ここに示されているものはすべて、YESとして登録する必要があります)


あなたが言うとき、あなたはどういう意味detect this pattern shown hereですか?赤/黄色の線を分離することに興味がありますか、または実際にそのような線間の関係を計算する式が必要ですか。線を見つけるだけで、いくつかのしきい値処理またはセグメンテーションのみが必要になります。何が本当に欲しいですか?
ディパンMehta

@DipanMehta混乱してごめんなさい。私がやりたいのはこれです:まず、色に注意してはいけません(プロットされたと言うだけです)、私が持っているのは数字のマトリックスですので、グレースケールです。2番目に、色がないため、繰り返し表示される4つのpingを使用して、そこに表示される「パターン」だけを気にします。そのため、上記の画像に示されているように、検出器はその画像テンプレートの変形を見て、「はい、このパターンが存在します」と言います。混乱して申し訳ありませんが、他に何か明確にできるかどうか教えてください。ありがとう!
スペイシー

わかりましたので、もし私が正しく理解すれば、一番上に最初の行があるので、バランスも同じ場所にあるかどうかを知りたいです。もしそうなら、あなたはパターンが存在すると結論付けるでしょう!正しい?
ディパンメタ

@DipanMehtaはい、基本的に、上記のパターンが存在するかどうかを検出でき、スケール不変性に対処するのに十分堅牢で、シフト不変性に対処するのに十分堅牢です。それは理にかなっていますか?ありがとう、
スペイシー

1
私が得ているのは、あなたが取り組んでいる実際のシステムのソースデータにアクセスできるかどうかです。そうした場合、ゼロにした中間スペクトログラム形式ではなく、元のデータを直接操作するより良いアプローチがあるかもしれません。
ジェイソンR

回答:


6

大まかに言えば、この問題を解決するための2つの主要なアプローチがあります。

a。テンプレートマッチングまたは
b。パラメータ化されたモデルとのマッチング。

個人的には、モデルの単純さを考えると、この問題には2番目のアプローチを好むでしょう。

ステップ1:ping blobを識別する

最初のステップとして、「ボックス」を抽出します-基本的には黄色/青の正方形です。ここで最も簡単な方法は、画像をしきい値処理することです。ノイズが増加するにつれて、pingと非常によく似ている傾向があることを除いて、バックグラウンドに大きな変動はないようです。したがって、しきい値はイメージ全体でグローバルにすることができます。イメージ全体で機能する適切なしきい値を取得できると思います。ただし、大津の方法のようなものを使用できるように、しきい値はスマートでなければなりません。詳細については、これこれを参照してください。

ブロックの改善

pingの内側の一部のピクセルも青色であるpingの前景に似ている偽のポイントを削除するためにできることの1つです。ここでは、「開く」という形態学的操作が必要です。HIPRからの参照の1つです。これらのタイプの操作には、類似の形状を保持し、他の形状を削除するのに役立つスマートな形状が必要です。あなたの場合、水平線を選択できます。これが完了すると、背景と前景のピクセルが互いに触れずにpingをきれいに分離します。

ステップ2:ブロックのマーク/登録

これで可能限りクリーンなBLOB が得られたので、1、2、3、4、またはA、B、C、Dなどとしてマークします。これは通常、いわゆる単純なアルゴリズムによって達成されます。各ピクセルを実行し、マークされた領域に触れており、前景でもある場合は、そのセグメントに割り当てます。そうでない場合は、新しいセグメントを作成します。4つ以上の重要なセグメントを見つけた場合は、最も関連性の高いセグメントを選択する必要があります。理論的なアルゴリズムではなく、ここでいくつかのヒューリスティックを適用します。

ステップ3:パラメーターのモデリング

これで、対応する4つのpingの上位4つの候補を取得すると、境界ボックスを特定できます-本質的に左上と右下の角(または左と右のほとんどのピクセル、ブロブの上下の行) 。境界ボックスを見つけて、各pingボックスの重心に罰金を科すことができます。

C どこ {1234}C1C1、他の重心は特定の範囲内にある必要があり、

したがって、重心間距離を計算できるようになりました。

C1[バツy]={C1[バツ]C[バツ]C1[y]C[y]}

L どこ {1234}

基本的に、8つのパラメーターベクトルがあります。

1。{C1[バツ]C1[y]}2..4C1[バツy]5..8L

ステップ4:分類
最後のステップでは、pingパターンがyesまたはnoであるかどうかを分類する必要があります。

このようなもののために、あなたは素敵なベイジアン分類器フレームワークを持つことができます。

あなたが持っている2つの仮説があります

H0:pingパターンが存在します。
H1:pingパターンが存在しません

C1[バツ]

最初に、画像に属していることがわかっている多くの画像を調べます。これで、さまざまなヒストグラムをプロットしたり、密度推定法のいくつかの方法を適用したりできます。Duda Hartによるパターン分類を読んでください。

C1[バツ]μ=20σ=.1

C1H0P[C1[バツ]|H0]

さて、テストデータから

P[H0|C1[バツ]=バツ1]C1[バツ]バツ1H0

したがって、計算することができます

P[H0 |C1[バツ]]=P[C1[バツ]|H0]P[H0]P[C1[バツ]]

この式をベクトル式に組み合わせる必要があり、パラメータ推定を正確に行うために多くの労力を費やす必要があります。しかし、ここで基本的なアプローチを残しています。

独自の計算を行ってください。これは時間がかかりますが、まだ非常に直感的です。

P[H0|すべてのパラメーター]>1/2

編集
110 +/- 5ピクセルの特定の基準を既に定義しているので、最後のステップはより簡単にできます。分類基準が固定されている場合、これらの確率をすべて計算する必要はおそらくないでしょう。


どうもありがとうございました!私はこれを消化してあなたに戻らなければなりません。
スペイシー

3

この問題、パルス繰り返し間隔の検出と推定の問題のように思えます。時間の経過とともにこの答えを開発する必要がありますが、その問題でうまく機能するアルゴリズムの種類は、格子上の最尤法です。


ありがとう、はい、これに関するあなたの考えを聞いてうれしいです。それまでの間、私はあなたのリンクを見ます。
スペイシー

ピーター、あなたが言ったようにこれについて考える時間はありましたか?この問題に関するあなたの考えを聞いてみたいと思います。
スペイシー

ちょうどいじくり始めました(4月は償却でした)。誤解される可能性があります。クラークソンの論文が問題を定式化する方法は異なります...もう少し掘り下げてみましょう。
ピーターK。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.