はじめに
skimage.filtersのthreshold_otsuによるしきい値処理について説明する。
コード
![](https://sabopy.com/wp/wp-content/uploads/2019/09/Eseeds_otsu-800x300.jpg)
解説
モジュールのインポート
画像データの読み込み
Epithelantha属の月世界の種子を用いる。rgb2grayによりグレースケール画像とする。
![](https://sabopy.com/wp/wp-content/uploads/2019/09/Epithelantha_seed-800x800.jpg)
大津の2値化によるしきい値処理
threshold_otsu(image)でimageに大津の2値化を適用したときのしきい値を得ることができる。
そのしきい値でimage > threshのようにすればTrueとFalseのバイナリ画像が得られる。不等号を>から<にすれば、TrueとFalseが入れ替わるので、画像は白黒が反転する。
大津の2値化については下記が詳しい。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMjY0MjU0JTJGcHJvZmlsZS1pbWFnZXMlMkYxNTU1NzUyNTk4P2l4bGliPXJiLTQuMC4wJmFyPTElM0ExJmZpdD1jcm9wJm1hc2s9ZWxsaXBzZSZmbT1wbmczMiZzPTIyZjI2YTk1MDcxYTZhOTBkYTZiOTcyZDE5N2ZjMmJh%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3Dd010d09f9217eb82b2f51ccf60b91834?ixlib=rb-4.0.0&w=1200&fm=jpg&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUU1JUE0JUE3JUU2JUI0JUE1JUUzJTgxJUFFJUU0JUJBJThDJUU1JTgwJUE0JUU1JThDJTk2JUUzJTgxJUEzJUUzJTgxJUE2JUUzJTgxJUFBJUUzJTgyJTkzJUUzJTgxJUEwJUUyJTgwJUE2JUUzJTgxJUEzJUUzJTgxJUE2JUUzJTgxJUFBJUUzJTgxJUEzJUUzJTgxJTlGLiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1wYWQ9MCZzPTZiMzRhMzI3OTEwMWRkNDM2ZmQ4M2Q2ODY0MDc4Yzdh&mark-x=120&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBoYXJ1MTg0MyZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTQ3NDdjZmM1MjYxNDdkNDg4NTc5ZGVmZjFhODNhNTY4&blend-x=242&blend-y=480&blend-w=838&blend-h=46&blend-fit=crop&blend-crop=left%2Cbottom&blend-mode=normal&s=c3708dd97b3d068da2a7eb941fefd216)
大津の二値化ってなんだ…ってなった. - Qiita
はじめにOpenCVを利用して二値化を行う際, 「とりあえずcv2.THRESH_OTSUやっとけばええやろ, ぽいー」って感じでテキトーに二値化してました.「とりあえずいい感じに動く」って認識…
ヒストグラムと画像の表示
左にオリジナル画像、中央にヒストグラム、右にしきい値処理した画像を示す。
ヒストグラムについては下記で説明した。
![](https://sabopy.com/wp/wp-content/uploads/2019/02/hist-160x90.png)
[matplotlib] 6.ヒストグラム
matplotlibでヒストグラムを作成することのできるplt.hist()について説明する。
異なるしきい値処理を一度に試す
try_all_thresholdで下記の方法でしきい値処理した結果を表示することができる。
skimage.filters.thresholding.threshold_isodata skimage.filters.thresholding.threshold_li skimage.filters.thresholding.threshold_mean skimage.filters.thresholding.threshold_minimum skimage.filters.thresholding.threshold_otsu skimage.filters.thresholding.threshold_triangle skimage.filters.thresholding.threshold_yen
![](https://sabopy.com/wp/wp-content/uploads/2019/09/Eseeds_threth_tryall.jpg)
参考
Thresholding — skimage 0.25.0 documentation
skimage.filters — skimage 0.25.1 documentation
skimage.filters — skimage 0.25.0 documentation
コメント