2値画像の基本処理と計測

2値画像における白と黒

2値画像は前の項で上げたように黒と白の画素のみで構成される画像の事でした。
2値画像においては、白が背景であり、黒が何か情報をもっている画素であると考えます。

また、周りが黒に囲まれているような白の画素はという風に呼ばれています。
具体的な図はまた下の項で示しましょう。

連結性とは

2値画像の中の図形を塊として見ることを考えます。
例えば「い」という文字は2つのカタマリによって構成されていますね。このようなまとまりの領域を連結という概念の元考えてみます。

上左図を見てください。
真ん中の青色でマークしてある注目画素にたいして、その4近傍は青枠の画素で示されています。
「上」「右」「左」「下」ですね。

こんどは右の図です。
8近傍は注目画素に対して周囲8画素のことをいいます。
将棋で言えば王将の動ける範囲ですね。

この近傍同士が黒画素であるような塊というのを連結と言います。
したがって近傍の定義により4連結8連結の二種類があるわけですね。

上の画像を例にして4連結を考えましょう。
まず、1は2と4近傍にあるので1-2は4連結できます。
また2-3は4近傍にあるので1-2-3は連結できます。
同じ要領で4-5-6も連結することができます。

対して8連結の場合、3と4は近傍の関係にあるので
1-2-3-4-5-6という連結が行われます。

また黒画素だけでなく穴についても連結を考えることができます。
上の画像の穴は4連結なら連結されませんが、8連結なら1つの穴となります。


輪郭追跡

では2値画像の輪郭を調べる方法について検討してみます。

まず画像左の上から右へ調べていき、終わったら次の段の左から右へ・・・といったラスタスキャンをします。
そこで黒画素を発見したとき、まあ背景から黒画素に侵入したのですからその点が輪郭をなす一つの点になるはずですね。
一つ輪郭の点を見つけたのでそこから順繰りに輪郭の点を手繰っていくことを考えます。

上の図の向きで侵入したとすれば、その侵入方向ベクトルから時計周りに調べていきます。
そこで一番早く見つけた黒画素がその輪郭の点であるといえます。
そんな感じで追跡して行って最終的に最初に侵入した点に付いたら追跡が終了になります。

文字だけでは分かりにくいと思うので次のように図で説明しましょう。

1つ目の図、一番左上の画素に⇒向きに侵入しました。この方向ベクトルから開始して、時計回りに回るようならせんを設置します。
このらせんがベクトルからスタートして一番最初にぶつかる画素が次の輪郭の画素です。
つまり、⇒方向ですね。

この場合も同じです。右に進みます。


この場合、やっぱり⇒向きのベクトルから出発するらせんを考えて一番初めにぶつかる画素を考えます。
この場合は右下方向ですね。

今度は右下方向のベクトルから出発するらせんを考えます。右側は背景でがら空きなので一番初めにぶつかる画素は下ですね。


と、まあこのような感じで進んで行ってここまで来ました。
←方向から侵入してきてますのでここから時計回りですね。
時計回りなのでまず「右下」⇒「下」⇒「左下」と捜索して次に来るのは左です。
ここでようやく黒画素が出てきたのでこっち方向に進みます。

ちゃんと外側の輪郭を通っていることが確認できましたでしょうか。
結果的には次のような捜索結果になります。

さて、上の場合は背景から侵入しましたが、穴から侵入すると内輪郭を追跡することができます。

収縮と膨張

背景または穴に接する画素をひとまわり白に買えてしまうような処理を収縮といいます。
逆に、背景または穴に接する画素に画素を一回り加えるような処理を膨張といいます。

紙をスキャンして文字を読み取ろうとした時、なんらかのゴミが付いていてぽつんと黒い点が変なところについてしまっていたとします。
これを除去するには一回収縮を行えばいいですね。一個の点は周りに背景が接していますので、収縮によって消されます。
ただしこの収縮をしたまま放置してしまうと他のところまで変わってしまいますので、今度は膨張処理をして元に戻します。
他のところは元に戻りますが、消えてしまった点は「膨張するための点」が残されていないため、消えたままさようならです。
このようにまず収縮して同じ回数だけ膨張させるような処理をオープニングといいます。

対して、膨張を行った後に収縮を同じ回数だけ行うような処理をクロージングといいます。
これは少し考えればわかりますが、小さな穴をふさぐために使うことができます。

javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。
最終更新:2012年11月15日 22:52
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。