円形度

輪郭追跡を行うと周囲長を求めることができますが、この周囲長を用いた代表的な特徴量の円形度を紹介します。

 

円形度とは円らしさを表す値で値が1となる時、もっとも円に近くなります。
定義は面積(画素数)をS周囲長Lとすると、

 

円形度 = 4πS/L2

 

となります。

 

【円形度の例】

面積S = 96
周囲長L = 34.627円形度 = 1.006
面積S = 87
周囲長L = 33.456円形度 = 0.977

なぜそうなるのか?理屈は簡単で、
円の半径とすると、円の面積Sπr周囲長L2πrより、

 

円形度 = 4πS / L2 = 4π(πr2) / (2πr)2 = 1

 

となり、円形度4πS/L2に近いときもっとも円らしいということになります。

 

画像処理アルゴリズムへ戻る

関連記事

【OpenCV-Python】円形度

膨張・収縮・オープニング・クロージング

膨張・収縮処理では一般的に二値化された白黒の画像に対して処理が行われ、

注目画素の周辺に1画素でも白い画素があれば白に置き換える処理を膨張(Dilation)
逆に周辺に1画素でも黒い画素があれば黒に置き換える処理を収縮(Erosion)といいます。

 

【元画像】

 

【膨張処理】

 

【収縮処理】

二値化された画像ではなく、グレー画像に対して処理を行う場合は、膨張の場合、注目画素の近傍の最大輝度値を注目画素の輝度値に置き換えます。
収縮の場合は最小輝度値に置き換えることでグレー画像に対して処理を行います。
この処理を二値化画像と区別するために、それぞれ最大値フィルタ最小値フィルタと呼ぶ場合もあります。

 

【処理例】

元画像 膨張 膨張
膨張 収縮 収縮
収縮 収縮 収縮
収縮 膨張 膨張
膨張 連続処理

膨張・収縮処理は単独で処理を行う事はまれで、膨張・収縮を繰り返し処理を行う場合が多くあります。
とくに、同じ回数分だけ膨張して収縮する処理をクロージング(Closing)

同じ回数分だけ収縮して膨張する処理をオープニング(Opening)とよびます。

 

元画像 クロージング
元画像 オープニング

 

この処理例を見てもわかるように、オープニング、クロージング処理では小さいパターン細いパターンの除去を行います。

 

さらに、クロージングした画像から元画像を差し引いた処理をブラックハット(Black-Hat)
元画像からオープニングした画像を差し引いた処理をトップハット(Top-Hat)といいます。

 

元画像 ブラックハット
元画像 トップハット

 

これらの処理を見ても分かるように、膨張・収縮処理を用いることで、欠け、断線、ホコリやゴミといった欠陥の検査や、細い線状のパターンの文字や線などの抽出への応用が考えられます。

 

画像処理アルゴリズムへ戻る