2012-02-07 8 views
3

ここにシナリオがあります:
.NET Framework 3.5でVisual Studio 2008を使用しています。私はC#を使用しています。データベースの場合はMySQLを使用しています。私はformと10-12 buttonsにそれぞれpictureboxを持っています(それぞれ画像処理機能を持っています)。 openfiledialogボタンの1つをクリックすると、ユーザがプログラムに提供する特定のファイルを選択できる場所が表示されます。別のボタンをクリックすると、プログラムは以下のようなアクションを実行します。

私は回路のイメージを持っています。これがプログラムに提供される画像であるとします。例えば
Circuit image
私は何をするつもりがあることである - 次のようにプログラムが仮想的に回路にラベルを付ける必要があります。
Labeling of the circuit
し、それは画像を分離し、データベースに情報を格納する必要があります。

これを行う方法はありますか。とにかくそれを行う方法を教えてもらえますか?助けや提案をお願いします。イメージの分離と解析

ありがとうございました。

+0

画像は常にきれいで鮮明な1ビットの黒/白の画像で、すべての端末にあなたの例のような穴がありますか? (もし我々が実際の回路基板を話しているのであれば、銅に穴がないSMD部品もあるかもしれません) –

+0

最初は簡単な回路だけを考えています。そして私はまた、画像の明瞭さを保証しています。それが良いと働いて、いくらか満足できる結果が得られれば、私は複雑な回路板や画像に関連する他の複雑さに行くかもしれません。 – OutOfBoundsException

+0

私は昨日の夜、これを楽しむためにショットを撮った:http://virkkunen.net/js/circuit-labeler.html準最適アルゴリズムを使って複数のパスを実行するのでかなり遅いです(http:// enから盗まれました) .wikipedia.org/wiki/Connected-component_labeling)がありますが、それは作品の種類です。適切な精度でスルーホール銅層からトレースと端子を抽出することは間違いありません! –

答えて

0

少なくともあなたの例では、非常に簡単なアルゴリズムが動作します。

  1. 、フラッドフィルアルゴリズムを用いて画像
  2. から黒画素を見つけ、それに接続された全ての画素を見つけ、それを分離します。それはあなたの痕跡の一つです。
  3. 分離されたトレースを使用して、白いピクセルを見つけて、フラッドフィルアルゴリズムを使用して、それに接続されているすべてのピクセルを検索します。イメージの端まで走っていると、穴ではありません。そうしないと、穴やトレースのループになる可能性があります。ホールの大きさにスレッショルドを使用して、ターミナルホールかループかを判断します。
  4. 穴にラベルを付け、考慮から除外します。未処理の白い画素がなくなるまで繰り返す。
  5. トレース全体を削除して1にジャンプします。
  6. 手順1で考慮する黒いピクセルがなくなると、完了です。あなたはおそらく、(最後の二つは自明です塗りつぶし機能を持つライブラリを編集する基本的な画像、新しいイメージに特定の色を分離する機能、および色を交換するための機能で、かなり遠くを取得する必要

実装するには、オンラインで利用可能なフラッドフィルアルゴリズムがたくさんあります)。異なる色を使用して、異なるものに印を付けることができます。たとえば、「考慮しない」すべての色を赤色にすることができます。リアルタイムで見ると面白いビジュアライゼーションにもなります!

+0

助けてくれてありがとう。 :)これをコードフォームに入れることができるかどうかを見てみましょう。 – OutOfBoundsException

+2

@OutOfBoundsException:私はちょうどそれが動作するかどうかを見るために自分自身を試してみたいです。 –

3

画像処理では、回路の「部品」を見つける問題はconnected component labelingとして知られています。 C#を使用している場合は、問題の最初の部分を解決するためにEmguCV(OpenCVライブラリへのラッパー)を使用できると思います。これを行うには、白のピクセルが背景であり、黒のピクセルがオブジェクトであると考える必要があります。

これで、トレースが分離されたので、問題は白い点を見つけてラベル付けすることに軽減されます。繰り返しになりますが、接続されたコンポーネントのラベル付けで解決できますが、オブジェクトは白いピクセルで表され、背景は黒のピクセルです。

+0

「接続コンポーネントラベリング」アルゴリズムは、私が提案したものよりもはるかに素朴ではありません。 –

+0

おそらく、アルゴリズムはあなたが提案したものと非常に似ています。 –

関連する問題