Pythonで機械学習を行うには、いろんなライブラリを使いこなす必要があります。
今回は、画像を扱うライブラリの一つであるscikit-imageとグラフ化ツールのmatplotlibを使って、画像を表示してみます。
1.scikit-image(imread)とmatplotlib(imshow)
この画像をscikit-imageで読み込んで、matplotlibでJupyter Labで表示してみます。読み込んだのはこちらのグレースケールの画像です。
読み込んで表示するだけなら、特に難しいことはないかな?と思いましたが、表示される色がおかしくなりました。
公式サイトで調べてみると二次元のスカラーデータは正規化され、colormapにマッピングされるそうです。
(M, N): an image with scalar data. The values are mapped to colors using normalization and a colormap. See parameters norm, cmap, vmin, vmax.
2. colormapの設定
グレースケール画像の場合、単なる0~255の数値の二次元配列となるため、各数値をどういう色にマッピングさせるかの指定が必要になります。初期値はviridisになっているようです。なので、黒(0)に相当する部分の紫と255(255)に相当する黄色の2色で表示されていました。
※この画像は0(最小値)と255(最大値)の2値なので、vmin,vmaxの指定をしてもしなくても変わらないようです。
こちらのサイトを参照して、colormapを’gray’にしてあげることで、グレースケール画像が正しく表示されるようになりました。https://matplotlib.org/3.2.1/_images/sphx_glr_colormaps_001.png
2. RGB形式への変換
scikit-imageのAPIを使って、RGB形式に変換することでも、正しい色で表示可能になりました。
https://scikit-image.org/docs/dev/api/skimage.color.html#skimage.color.gray2rgb
細かい部分は公式サイトを調べる必要はありますが、こういうことをしたい。とか、ちょっと表示をこう変えたい。等はこちらがあると便利かもしれません。
次回はカラー画像を表示して、Numpyを使って、ちょっとした画像データ操作をしてみたいと思います。
「Pythonと機械学習であそぼう(scikit-image+matplotolibで画像表示)」への1件のフィードバック
ピンバック: Pythonと機械学習であそぼう(機械学習関連ライブラリ) | ぼちぼちいこらい