画像処理に特化したscikit-imageのライブラリについて紹介します。

scikit-image

scikit-image は画像処理に特化した Python 画像ライブラリです。
NumPy 配列を画像オブジェクトをネイティブに扱います。 scikit-image を多様な画像処理タスクにどう利用するかや NumPy や Scipy などの他の Python の科学技術モジュールとの連携についても扱います。

Numpyのデータを作成し表示

20 X 20 のマトリックスを作成して、市松模様を描いています。
グレースケール(白と黒)のデータを考えます。
各行で白(1)と黒(0)のデータを交互に指定します。
numpyのスライシングを使って上手く作ってあげましょう。

画像の読み込み

サンプル画像データがあるので、それを読み込み関数があります。

サンプル画像は、猫の画像や、馬などの動物や、書類、コイン、月面、などが用意されています。
詳細はAPIドキュメントを参照してください。

png

猫のchelesa

png

画像処理のサンプル

上から200ピクセル分を黒が塗りつぶしています。

png

次はマスクです。値が87未満(黒っぽい)部分を白(255)でマスクしてみます。
カメラマンの部分が白く浮かびかがってきます。

png

円で切り取ってみます。numpyを使って円の外側に部分を
黒でマスクしています。

png

下半分の半円で切り取ってみます。numpyを使って円の外側に部分を
黒でマスクしています。

png

縦横のサイズが異なる画像は、円ではなく楕円になります。
こちらもnumpyを使って楕円の外側に部分を
黒でマスクしています。

png

画像の2値化

画像の2値化を行う関数も用意されています。大津の手法(判別分析法)は、自動的に閾値を決定して二値化処理を行う手法の1つです。
skimageには大津の手法を行う関数が threshold_otsu 用意されています。

大津の手法については、以下を参考にしてください
大津の手法(ウィキペディア)

png

以上です。

ライトハウスラボ