はじめに
ここでは、skimage morphology reconstructionにより画像中の白い部分と黒い部分をそれぞれ分離して表示する例について説明する。
コード
解説
モジュールのインポート
画像データの読み込み
Epithelantha属の月世界の種子を用いる。袋に入っている。
これをrgb2grayによりグレースケール画像にする。
穴埋め
モルフォロジー再構成を使用して、画像中の穴(孤立した暗い点=種)を埋める。
seedは、エッジがimageと同じでエッジ以外はimage.max≒1(白)の画像となる。
maskは元の画像とおなじものを用いる。
reconstruction(seed, mask, method=’erosion’)で、seedによって種の黒い部分が膨張(白い部分が収縮)する。マスクを元画像に設定することでerosionの挙動を制御している。
元画像からerrosion画像をひくことで、黒い領域を分離できる。
ピーク検出
erosionの場合とは異なり、seedはエッジ以外がimage.min≒0(黒)の画像となる。
reconstruction(seed, mask, method=’dilation’)により、seedによって白い部分が収縮(黒い部分が膨張)することになり、黒目の部分だけが残る。
元画像からdilation画像をひくことで、白い領域を分離できる。
画像の表示
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
参考
Filling holes and finding peaks — skimage 0.24.0 documentation
コメント
0は光のない状態(黒)、1は光が最大限出ている状態(白)かと思われます。。
文章中で逆に使われていた気がしたので、もう一度確認してみてください。
指摘ありがとうございます。修正しました。