うまい寿司が食いたい。

うまい寿司が遠慮なく食べれるようになるまで,進捗とか垂れ流すブログ

画像の読み込みライブラリ

動機

先日までkaggleのTGS Salt Identification Challengeに参加していました。
あまりよろしくない結果だったので,内容については割愛します。
人のコードのコピペばかりだったので,そもそも画像をどのように読み込むのかよくわかっていませんでした。
さしあたっていろんなライブラリがある中で,どれか一つを使ってみようと思ったのが今回の記事を書くにあたる動機です。

pythonの画像読み込みのライブラリ

見つけたものは以下のものがあります。

  • pillow
  • imageIO
  • OpenCV
  • scikit-image

とりあえずすべてインストールしました,がOpenCVだけひどくインストールに時間がかかりました。
すべてインストールしたのですが,pathを通すことができずにしばらく放置していましたが記事を見て,解決しました。

参考にした記事

qiita.com

pillow

これだけ使ってみました。
importするのはPILで,これは,Python Image Libraryの略だそうです。

filepathさえ渡せば画像を読み込んでくれます。

例えば,TGS Salt Identification ChallengeのOpen solution journalでは,

from PIL import image

image = Image.open(img_filepath, 'r')

これで画像を読み込んでくれます。numpyへの変換も簡単で

import numpy as np

np.array(image)

でnumpyへと変換してくれます。PILの中でカラースケールの変換はについてはこちらの記事

qiita.com

にわかりやすく記載していました。

グレイスケールで,numpyに読み込ませるのであれば,

np.array(image.convert("L"))

で解決です。
マスクデータを作るために,バイナリ画像にしたいのであれば,

np.array(image.convert("L")).point(lambda x: 0 if x < 128 else 255, '1')

で変換ができます。この128の部分を適当な数値に変えることで,バイナリのしきい値をいじることができることがわかりました。

まとめと展望

pythonの画像読み込みライブラリをいくつかに並べました。
そして,pillowを使った画像の読み出し方について簡単に記載しました。
今後はscikit-imageやopenCV,pytorchやkerasの組み込みの画像読み込みも試してみたいと思っています。