[scikit-image] 96. 大津の適応的しきい値処理による画像の2値化(skimage.filters rank.otsu)

matplotlib

はじめに

skimage.filters の rank.otsuで大津の方法で適応的しきい値処理を行う方法について説明する。

解説

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

バージョン

画像の読み込み

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

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

計算範囲の設定

適応型閾値処理を行う範囲を設定する。ここでは、半径12のdiskを用いる。selemの大きさは(25, 25)となる。

適応的大津の方法と大域的大津の方法によるしきい値の計算

適応型閾値処理は、rank.otsu(img, selem)でできる。それぞれの画素でしきい値が求まるのでしきい値像が出力される。

大域的大津の方法によるしきい値はthreshold_otsuで計算できる。

結果の表示

subplotsでオリジナル画像としきい値像、適応的大津の方法による2値化像と大域的大津の方法による2値化像を表示すると以下のようになる。

計算範囲を変化させた時の変化

計算範囲のradiusを10から60まで変化させた時の適応的大津の方法による2値化像は以下のようになる。

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

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

参考

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

コメント