[matplotlib animation] 103.計算範囲を変えたときの大津の適応的2値化像変化アニメーション

matplotlib Animation

はじめに

scikit-imageライブラリのskimage.filters.rank.otsuを使用して大津の方法による適応的しきい値処理を行う方法を紹介します。特に、計算範囲(ディスク半径)を変化させたときの2値化像の変化をMatplotlibのアニメーション機能を使って可視化します。大津の方法は画像の2値化において広く使われるアルゴリズムで、局所的な領域ごとに最適なしきい値を自動的に計算できるのが特徴です。

なお、大津の適応的2値化については下記記事で解説しました。

[scikit-image] 96. 大津の適応的しきい値処理による画像の2値化(skimage.filters rank.otsu)
scikit-imageライブラリのrank.otsu関数を使った大津の適応的しきい値処理について解説。局所領域ごとに最適なしきい値を自動計算し、照明条件が不均一な画像でも効果的に2値化できる手法を実装例とともに紹介します。

解説

モジュールのインポートなど

バージョン

画像の読み込み

下記サイトの画像を使用します。color.rgba2rgbでPNG形式からRGB画像に変換し、color.rgb2grayでグレースケール形式に変換します。最後にimg_as_ubyteでubyte形式に変換します。

マリトッツォのキャラクター
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

計算範囲を変化させて適応的しきい値処理

適応型閾値処理の計算範囲をrange(3,101,2)で変化させます。計算範囲の形状としてはdiskを使用します。処理によって得られた閾値処理画像はlocal_otsusリストに順次追加していきます。

2値化像の変化アニメーション

オリジナル、しきい値、2値化像のアニメーション

計算範囲形状としてDiamondを用いた場合

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

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

まとめ

大津の適応的2値化処理において、計算範囲(ディスク半径)の変化が2値化結果にどのように影響するかをアニメーションで視覚的に確認しました。計算範囲が小さいと局所的な特徴を捉えやすく、大きいと全体的な特徴を捉える傾向があります。適切なパラメータ選択は画像の性質や目的に応じて行うことが重要です。Matplotlibのアニメーション機能を活用することで、パラメータ変化による結果の違いを直感的に理解することができます。

参考

Local Otsu Threshold — skimage v0.12.2 docs
skimage.color — skimage 0.26.0rc0.dev0 documentation
マリトッツォのキャラクター
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

コメント