• 締切済み

ラベリングした画像を抜き出す

ラベリングした画像を抜き出すプログラムを作りたいのですが、画像でのプログラムがよくわからないため、教えてほしいのです。 添付してあるnumber.pgmの画像でラベリングを行い、0や1などの数字のみを抜き出したいのですがその方法がわかりません。 http://cis.k.hosei.ac.jp/~wakahara/labeling.c のプログラムを使って、画像をラベリングすることはできたのですが、そのラベリングした画像を抜き出すことがわからないんです。 mainのプログラムの中で何か作成すればいいだろうと思って作ったり、インターネットで調べてみましたが、全然できませんでした。 どなたか教えていただけませんか。お願いします。

みんなの回答

  • hegemon
  • ベストアンサー率72% (21/29)
回答No.2

>その黒い部分を1つずつ抽出してそれを画像として表示させたい それなら、x,y座標の2重ループをつくり、その中でimage2の値がラベル値かどうかをチェックすればいいでしょう。ラベルであれば、ラベル値ごとにx,yの最大と最小を記録します。 あとは、記録されたラベル値ごとのx,y座標のペアを使い、イメージを切り出せばよいわけです。

  • hegemon
  • ベストアンサー率72% (21/29)
回答No.1

まず、「ラベリング」とはどんな処理を指しているんでしょう? リンク先のソースで、image1が元画像で、image2がラベリング後の画像のようですが、これらの2次元配列にピクセル単位で格納されていると言うことでよろしいですか? で、どうやらimage2に画像データをコピーした後で、image2をピクセル単位でスキャンし、周囲の8ピクセルが黒ならラベルを入れているようですが。 おそらく、画像の中で黒い部分を抽出し、その塊ごとに番号をつけていく処理だとは思うのですが、x_size1、y_size1といった変数の宣言などが省かれているので、確証が持てません。

amoyan
質問者

補足

ラベリングは、画像の中の数字をそれぞれラベル化しているんだと思います。画像処理の勉強不足でうまく説明できなくてすみません。 hegemonさんのいうとおりです。黒い部分を抽出してその塊ごとに番号を付けていく処理です。 その黒い部分を1つずつ抽出してそれを画像として表示させたいんですが、そのプログラムがわからないんです。

関連するQ&A

専門家に質問してみよう