画像の読み込みライブラリ
動機
先日までkaggleのTGS Salt Identification Challengeに参加していました。
あまりよろしくない結果だったので,内容については割愛します。
人のコードのコピペばかりだったので,そもそも画像をどのように読み込むのかよくわかっていませんでした。
さしあたっていろんなライブラリがある中で,どれか一つを使ってみようと思ったのが今回の記事を書くにあたる動機です。
pythonの画像読み込みのライブラリ
見つけたものは以下のものがあります。
- pillow
- imageIO
- OpenCV
- scikit-image
とりあえずすべてインストールしました,がOpenCVだけひどくインストールに時間がかかりました。
すべてインストールしたのですが,pathを通すことができずにしばらく放置していましたが記事を見て,解決しました。
参考にした記事
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の中でカラースケールの変換はについてはこちらの記事
にわかりやすく記載していました。
グレイスケールで,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の組み込みの画像読み込みも試してみたいと思っています。