対象物の周囲長と面積の割合で形状判断
対象物の周囲長と面積の比率で形状を判断し、非対称物を削除
(2010/06/13)
最初に画像をラベリングし、その情報を基に大きさを測ります。対象物が内包物を持つ場合は、
事前に穴埋めと内包物のラベル番号を対象物のラベル番号に置き換えます。
エッジを抽出(輪郭抽出)を行った後、穴埋めを行った対象物の面積と、対象物の周囲長の比率
から、その対象物の形状の複雑さを知る事が出来ます。
応用例の一つとして、正常と異常で著しい形状差を生じる対象物の自動判断が考えられます。
正常な状態では比較的円形に近い形をしているが、異常化した場合は形態が変わってしまう、
例えは、触手を伸ばすように変形し海星の様に部分的に飛び出す部分が生じる例を考えます。
ここで、円の面積は S=πr**2、円周は L=2πr なので、 4π**2r**2=4πS=L**2 が成り立ち
ます。 4πS=L**2 の両辺を L**2 で割ると 1=4πS/L**2 が導き出されます。
形状の複雑さを判断する指針として、面積を4π倍した値を外周長の二乗で割った値が1から
どれくらい離れているか(小さくなるか)によって判断します。 Sが小さい場合、値は13近くに
になりますが精度的に問題外なので、100画素以下の対処物は事前に計測の対象から外します。
状態にもよりますが、値が 0.3 以下位になるとかなり複雑な形状になります。
はじめに
ここでは、処理の大枠を理解して頂く事を前提に、処理の流れに従って生成されるデータを画像として
確認しながら話を進めていきます。
数式やプログラムは用いませんので、処理結果だけを追いながら、最終的に、目的の対象物のみが
選別される一連の流れを確認してください。
画像に関して
説明で使用する画像は、"高速ラベリング処理 天体データ" で使用した画像を流用します。
この画像はこの例を説明するのに適切な画像とは言い難いのですが、趣旨を理解するには十分であると
考え使用する事にしました。
この様に大きな画像を使用すれば、簡単にデータの精度が上がりますので同使用方法を推奨します。
画像処理
ここでは、以下の画像処理技術を用いて処理を行っています。
1、高速ラベリング手法
2、高速輪郭線抽出手法
3、面積等の特徴量計測
4、画像内イメージ操作
処理のプロセス
1、対象画素の入力処理
2、背景と対象物の分離処理
3、ラベリングによる対象物毎の分離処理
4、対象物間の包括関連処理
(対象物中の穴(孔、ホール)の処理と対象物内の内包対象物処理)
穴や内包物を1つの対象物に統合する処理を行う
5、画像の輪郭線抽出処理
6、対象物の面積及び周囲長計測
7、特徴量を用いた対象物の選別
指定面積以上であって、複雑な形状をしているの対象物の抽出
8、該当対象物の抽出と、非該当対象物の除去処理
画像処理の手順毎の結果
● 検証処理に用いる元画像
|
|
NASAが公開しているアンドロメダ星雲の画像を加工して使用 PIA12832 (original)
画像の大きさは、12,000 x 12,000 画素
|
● 背景(輝度0)以外を対象物として認識し、各対象物毎に異なる擬似カラーを割り当て
|
|
識別した、画像中の対象物の個数は、483,195 個
|
● ラベリング後、擬似カラー化した画像の、部分を拡大した画像
|
|
1画素(孤立点)から数十画素の対象物が多く見受けられる。同時に複雑な形状をした比較的大きな
対象物も多数見受けられる。
同時に対象物の内部に、穴(孔、ホール)を持つ物も見受けられる。 この画像には該当しないが、
穴の中に別の内包物(対象物)を持つ場合もある。
|
● 対象物中の穴の部分を検知し、穴埋め処理を行った画像 (白い部分が穴埋めされた箇所)
|
|
画像中の白い部分が、穴埋め処理により塗りつぶされた部分
|
● 対象物中の穴埋め処理を行った画像の、部分拡大画像
|
|
画像中の白い部分が、穴埋め処理により塗りつぶした元画像中の穴の部分
|
● 穴と穴の内部に別の内包物(対象物)を持つ対象物を処理した画像
|
|
茶色の部分が対象物で、その内部に穴の部分が存在する。その穴の部分には、別の対象物が
多数存在している。内包物の中には、更に穴の領域を持つ物がある。
対象物の面積を考える場合、これらを一纏めにして一つの対象物として認識したい場合もある。
今回の、周囲長と対象物の面積比を考える場合は、まさにこのケースに該当する。
|
● 穴埋め処理を行い、対象物内の穴と内包物に対して、対象物のラベル値を割り当てた画像
|
|
ラベリングした結果を基に、対象物内の穴の部分と、穴の中にある対象物を識別します。
通常のラベリング処理では、包括関係は考慮せずに対象物にラベル番号(自然数)を割り当てる
ので、内包物に対しても、異なるラベル番号が与えられる事になります。(これは正しい処理です)
しかし、ケースによっては、1つの対象物として認識したほうが都合の良い場合もあります。
この様な場合は、穴と内包物を対象物に結合してしまう処理を行います。
|
● 穴と内包物を対象物に統合した画像 拡大図
|
|
穴の抽出処理で認識された部分(白く表示されたいた部分)と穴の内部にあった対象物を統合処理
して、一つの対象物に纏めた画像
|
● 穴と内包物を対象物に統合した画像 拡大図 2
|
|
穴の中に内包物(対象物)を持った画像を統合処理で、一つの対象物に纏めた画像
このケースでは、内包物の中にも穴が存在していた。 当然ではあるが、穴と内包物には、
ネスティング(nesting:入れ子)関係の存在する可能性がある事を考慮しなければならない。
|
● 対象物の輪郭部を抽出した画像
|
|
穴埋め処理後の画像の輪郭部を抽出した画像(全体)
|
● 対象物の輪郭部を抽出した画像の部分拡大画像
|
|
原画像中の全ての対象物に対して、穴埋め処理後、輪郭部の抽出を行った画像 (部分拡大画像)
|
● 穴埋め処理後の画像から、指定画素以下の対象物を除去した後、輪抽出した画像
|
|
先の全対象物を処理した場合と比較すると、100画素以下の対象物を除去した画像は、かなりスッキリ
して見える。 高解像度での処理は、計測精度を容易に上げることを期待できる。
|
● 指定画素以下の対象物を除去した画像中の対象物に、輪郭抽出処理を行った画像 (部分)
|
|
指定画素 (この例では、100画素) 以下の対象物を除去した画像中の対象物に、輪郭抽出処理を行った
画像の部分拡大した画像。 スッキリとし、処理対象物が識別しやすくなった。
|
● 指定画素以上で、特徴的形状を持つ対象物を抽出した画像 (全体画像)
|
|
指定画素以上で複雑な形状を持つ対象物を抽出した画像。
|
● 指定画素以上で、特徴的形状を持つ対象物を抽出した画像 (部分)
|
|
指定画素以上で複雑な形状を持つ対象物を抽出した画像。 部分拡大画像
|
● 【補足情報】 ラベリング処理後、各対象物毎に異なる擬似カラーを割り当てた画像
|
|
ラベリング処理後、擬似カラーを割り当てた画像
|
● 【補足情報】 ラベリングされた画像を計測処理し、指定画素以下の対象物を除去した画像
|
|
ラベリング処理により、対象物を構成する各画素には個別の番号が割り当てられているので、各番号毎に
割り当てられている画素の数をカウントする事で、面積を知る事が出来る。
計測処理後に、指定画素(面積)以下の対象物を構成する画素の割り当てを、背景に置き換える事で削除
処理が行える。
|
● 【補足情報】 指定画素以下の対象物を除去処理した画像 拡大図
|
|
|
実際の処理例
● 実際の処理例
|
|
面積に対して、周囲長が長い対象物を抽出した画像 パート1
|
● 実際の処理例
|
|
面積に対して、周囲長が長い対象物を抽出した画像 パート2
|
● 実際の処理例
|
|
面積に対して、周囲長が長い対象物を抽出した画像 パート3
|
● 実際の処理例
|
|
面積に対して、周囲長が長い対象物を抽出した画像 広域表示画像
|
最後に
ラベリング処理や、輪郭線抽出が高速で行える事は、非常に重要だと考えています。 形状による診断処理は
勿論の事、ステレオ画像からの3次元情報の取得、牽いては、完全独立自立歩行型ロボットの視覚への応用
など、幅広い分野への応用が期待できると考えます。
これを機会に、画像処理に興味関心を持って頂ければ幸いです。