2011-09-16 11 views
1

まず、私の問題がパターン認識の問題か機能の識別であるかどうかは確かではありません。画像処理の専門家ではありませんが、私の問題です。パターン認識?

一連の画像で稲妻の種類を特定する必要があるアプリケーションを作成しています。画像処理にOpenCVでC++を使用しています。画像を閾値処理することにより、画像の稲妻部分を得ることができる。私は次に何をする必要があることは

http://i.stack.imgur.com/OaWe1.png

または

http://i.stack.imgur.com/6sYcd.png

下記のリンクに示すように、そのが下向きに分岐するかどうか、下のリンクのように雷が上向きに分岐されているかどうかを特定することですこれらは、アプリケーションが一連の画像から識別しなければならない分岐の基本的な形状です。今私の問題は、画像からの分岐の方向を特定するこの機能をどのように実装するのか分からないことです。私が必要とするのは、これを実現するためにどのようなアプローチが取れるかについて、正しい方向に向かわせることだけです。よろしくお願いします。

答えて

1

私はOpenCVを使用して以来、長い時間を要していましたので、私は直ちに考えたアプローチを概説します。

  1. すべての線分を検索します。
  2. 各線分について、その方向を見つけます(上がっているか下がっていますか?)。開始点と終了点を決めるのは賢明でなければならないかもしれませんが、かなり簡単に考えるべきです。分岐点に基づくヒューリスティックを見つけることができます。
  3. セグメントの大部分が下向きか上向きかを調べるために結果を平均します。
  4. 完了。

EDIT:点2 上の更新は、各セグメントは、分岐のない連続線である線分のリストを持っていると仮定する。つまり、I字型のセグメントのみを持つことはできません。

  1. 各セグメントについて、pX =(x、y)の端点(p1、p2)を見つけます。
  2. x = [1,2]の場合、pXが分岐点(別の線分と共有される点)か実際の終点かを決定します。分岐点pBおよび終点pEを呼び出します。
  3. ポイント間のベクトルをd = pE-pBとして計算します。 dのy値が正の場合、上向きの分岐があります。必要ならば、dを使って2つの点の間の線の偏角を計算し、それを上または下のバイナリオプションの代わりに測定値として使用します。

エンドポイント(および分岐点!)を見つけることは、さまざまな形態学的操作を使用するとかなり簡単になるはずです。

+0

ガイドラインはご迷惑ありがとうございます。ステップ2では、どのように線分の方向を見つけることになるでしょうか? – user854576

+0

私の編集を見て、それがあなたの質問に答えるかどうかを見てください。 –

+0

もう一度感謝しますが、形態学的操作を実行すると、これに適切なリンクはありませんか? – user854576

1

私はより直感的な方法で行きます。

0)あなたの写真を見ている時に、私は枝の間で鋭角(角度< 90) 'のあなたの「上向きに」/「下向き」方向

1)と関連付けることができることがわかります最初に枝間のすべての鋭角を見つけ、それらが1-180であるか(あなた次第、または0-180の間の任意の値にこれを細分することができます)

2) 「下」の画像では、枝間のすべての鋭角を見つけることができ、それらが181〜360であるかどうかを見ることができます。 (あなたまで、またはあなたが180から360の間の任意の値にこれを絞り込むことができます)

HTH

+0

ガイドのおかげで、私の進捗状況を教えてくれるでしょう – user854576

0

また、(クラウドからクラウドへ)水平な雷があるかもしれないことを考慮に入れる必要があります。あなたが確かに知っている場合を除いて、これはあなたのデータセットに存在しないでしょう。

もしそうなら、おそらく、kiguraiの回答で言及されている偏りの閾値を使用したいと思うかもしれません。

あなたの画像セットには、広い昼間の稲妻の写真がある場合があります。画像の露出過多部分は、おそらく稲妻そのものほど明るく、最初のしきい値処理ステップでノイズが発生します。

1

簡単に実装できるアルゴリズムは、すべての分岐点とエンドポイント(形態)を取得することです。ここで、分岐点を削除すると、画像に円がないので、(トポロジカルな)線が得られます。一方の端は端点で、もう一方は分岐点です。線分を分割し、分岐点を戻します。これで、すべての線分の分岐点から端点までのベクトルを計算できます。内積(0,1)は、指定された線分が上向きまたは下向きを示していることを示します。

+0

OpenCVの新機能ですが、私はどのようにモルフォロジー操作を行うのか分かりません。良いチュートリアルへのリンクを知っていますか? – user854576

関連する問題