[scikit-image] 47. Region Adjacency Graph(RAG)を構築した後にcut_threshold(skimage.future graph)

python

はじめに

ここでは、skimage segmentation, colorとfeature graphにより画像に対してk-meansクラスタリングを使用してセグメントした後に、隣接領域グラフを適用してさらにセグメント化した例について説明する。

コード

コードをダウンロード

解説

モジュールのインポート

画像データの読み込み

コリファンタ属の象牙丸を用いる。

k平均法によるセグメント化

segmentation.slic()により、k平均法による画像のセグメント化ができる。
imgはセグメント化する画像で、
compactnessは色の近接性と空間の近接性のバランスのパラメータであり、値を大きくするとスペースの近接度が高くなりセグメント化された形状が正方形に近い形となる。値の調整は、ログスケール(0.01から100)で行うことが推奨されている。
n_segmentsは概算のセグメント数となり、多くするほどより細かくセグメント化される。

セグメント化された画像の色の設定

label2rgbにより画像のラベル化されている部分に対して、色の設定を行う。kind=’avg’とすることで、元画像のラベル化されている部分の色の平均をとって色を決めることになる。

領域隣接グラフを計算

rag_mean_color()で画像とそのセグメント化された情報から、領域隣接グラフ(RAG)を構築する。色の近傍度を調整するにはoptionのsigmaを用いる。

領域隣接グラフでセグメンテーション

graph.cut_threshold(labels1, g, 29)により、領域隣接グラフの結果をラベルに適用し、新しいラベルを生成する。指定されたしきい値(29)よりも小さい重みでつながっている領域を結合し、新しいラベルを出力する。

画像の表示

タイトルには各画像のラベル数(領域の数)を表示した。

しきい値を変化させたときの画像の変化

コードをダウンロード

参考

RAG Thresholding — skimage v0.16.1 docs
Module: segmentation — skimage v0.15.0 docs
Module: color — skimage v0.16.1 docs
Module: future.graph — skimage v0.16.1 docs
Module: future.graph — skimage v0.16.1 docs
にほんブログ村 IT技術ブログ Pythonへ
にほんブログ村 IT技術ブログへ

コメント