[scikit-image] 52. 適応的しきい値処理による画像のバイナリ変換(skimage.filters threshold_niblack, threshold_sauvola)

python

はじめに

skimage.filtersのhreshold_niblack, threshold_sauvolaによって、適応的しきい値処理でバイナリ画像を生成する方法について説明する。

コード

解説

モジュールのインポート

画像データの読み込み

Epithelantha属の月世界の種子を用いる。rgb2grayによりグレースケール画像とする。

大津の2値化

大津の2値化により単一のしきい値を求め、しきい値処理を行うことでバイナリ画像を生成する。

Niblack, Sauvolaローカルしきい値による2値化

これらのしきい値処理は単一のしきい値を用いるのではなく、平均と標準偏差を用いた式をつかって各ピクセルでしきい値を設定する手法となる。SauvolaはNiblackの改良版である。詳細は下記が詳しい。
window_sizeは、どの程度の大きさの領域で計算するかを決めるパラメータであり、奇数整数で指定する。

skimage.filters — skimage 0.24.0 documentation
skimage.filters — skimage 0.24.0 documentation

画像の表示

左上にオリジナル、右上に大津の2値化によるバイナリ画像、左下にNiblackしきい値処理を適用したバイナリ画像、右下にSauvolaしきい値処理を適用したバイナリ画像となっている。Sauvolaのバイナリ画像はそれらしい部分をそれらしく分離できているように見える。

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

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

参考

Niblack and Sauvola Thresholding — skimage 0.24.0 documentation
skimage.filters — skimage 0.24.0 documentation
skimage.filters — skimage 0.24.0 documentation

コメント