はじめに
skimage.segmentation.slic()は画像をセグメント化するための関数であり、k平均法に基づいてカラー画像をクラスタリングします。この関数を使用する際、compactnessとn_segmentsという2つの重要なパラメータがあります。この記事ではこれらのパラメータ値を変化させた時のセグメント化結果の違いをmatplotlibアニメーションで視覚的に示しています。
compactness
compactnessはコンパクトさの指標であり、色の近接性と空間の近接性のバランスを調整するパラメータです。値を大きくすると、空間的な近接性が重視され、スーパーピクセルの形状がより正方形に近くなります。このパラメータは画像のコントラストや対象物の形状に依存するため、0.01、0.1、1、10、100などのログスケールで変化させながら適切な値を探すことが推奨されます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)n_segments
n_segmentsはセグメント化された出力画像の総ラベル数の概算値を設定するパラメータです。このn_segmentsの値を増加させると、画像はより細かなセグメントに分割されます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)まとめ
skimage.segmentation.slic()のcompactnessパラメータはセグメントの形状に影響を与え、値が大きいほど正方形に近い形状となる。一方、n_segmentsパラメータはセグメント分割数を制御し、値が大きいほど細かく分割される。これらのパラメータを適切に調整することで、目的に合ったセグメント化結果を得ることができる。
参考
skimage.segmentation — skimage 0.25.2 documentation
matplotlib.animation.FuncAnimation — Matplotlib 3.1.2 documentation
matplotlib.animation.Animation — Matplotlib 3.1.2 documentation
コメント