[scikit-image] 23. 画像の細線化(morphology.skeletonize)

python

はじめに

ここでは、skimage.morphologyskeletonizeを用いた画像の細線化について説明する。

コード

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

解説

モジュールのインポート

画像データの読み込み

サボテンのアイコンをplt.imread()で読み込む。PNG形式なのでRGBαの次元があるが、Rのみをスライスする。
image[image>0]=1により、0より大きいものを1として、0と1で構成されたデータとする。

スケルトン化による細線化

imageはバイナリイメージである必要がある。これにより、バイナリイメージ内の各連結成分は1ピクセル幅に縮小される。

結果の表示

図をImageGridにより表示する。ImageGridは下記で解説した。

[matplotlibの使い方] 19. mpl_toolkits.axes_grid1 の使い方(画像の表示)
axes_grid1のImageGridを用いて複数の画像を表示する方法

左のgrid[0]にオリジナル画像、右のgrid[1]にスケルトン化した画像を表示している。スケルトン化した画像は、その名の通りサボテンの骨格のような見た目となっている。

細線化の例

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

3次元オブジェクトの細線化

skimage.morphologyskeletonizeでは3次元オブジェクトの細線化もできる。詳細は下記記事を参照願います。

[scikit-image] 82. 3次元オブジェクトの細線化(skimage.morphology.skeletonize)
skimage.morphologyのskeletonizeで、ボクセルグラフで表示した3次元オブジェクトを細線化する方法について説明する。

参考

Skeletonize — skimage v0.17.2 docs
袋入りのあんこのイラスト(つぶあん)
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

コメント