[scikit-image] 5. モルフォロジー再構成による背景の除去

python

はじめに

画像処理において、背景の除去は重要なタスクの一つです。scikit-imageライブラリのモルフォロジー再構成(morphological reconstruction)機能を使用することで、画像から効果的に背景を取り除くことができます。この記事では、モルフォロジー再構成の基本概念と、それを用いた背景除去の具体的な実装方法について解説します。

コード

解説

モジュールのインポート

画像の読み込み、float化、平滑化

img_as_float()により、データを[0-1]の範囲にします。

モルフォロジー再構成による背景の作成

seed = np.copy(image):元の画像のコピーを作成し、これをシード画像として使います。

seed[1:-1, 1:-1] = image.min():シード画像の外周部分を除く内側の領域を、画像中の最小強度値で初期化します。つまり画像の端(外周)だけを残して、内側を最小値(通常は黒)にします。

mask = image:元の画像をマスクとして使用します。

dilated = reconstruction(seed, mask, method=’dilation’):拡張(dilation)による再構成を実行します。これにより、シード画像(外周部分のみ残した画像)からマスク画像(元画像)の制約の下で再構成が行われます。結果として、画像の端から広がる背景部分が検出され、それを除去することができます。

この手法は、複雑な背景を持つ画像に対して特に効果的で、単純な閾値処理やフィルタリングでは対応が難しい場合に有用です。

画像の表示

もとのイメージから、再構成した背景画像を差し引くと、サボテンと黒い背景だけの画像が残ります。

画像とlineデータの表示

dilateでは、高輝度部分がマスクされているので、サボテンの部分で平坦となっています。

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

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

まとめ

scikit-imageのモルフォロジー再構成機能を使用することで、画像から効果的に背景を除去できることを示しました。この手法は、単純な閾値処理やフィルタリングでは対応が難しい複雑な背景を持つ画像に対して特に有効です。また、パラメータの調整によって様々な画像に対応できる柔軟性も持ち合わせています。画像処理の前処理として、この手法を活用することで、より精度の高い画像分析が可能になるでしょう。

参考

Filtering regional maxima — skimage 0.25.2 documentation
https://jp.mathworks.com/help/images/understanding-morphological-reconstruction.html
skimage.morphology — skimage 0.25.2 documentation

コメント