メニュー

Pythonと機械学習であそぼう(scikit-image+matplotolibで画像表示 +Numpyで画像操作)

2020-05-04 - Pythonと機械学習, プログラミング - programming -

前回は、グレースケール画像の表示でちょっと躓きました。

今回はカラー画像を表示します。

1. scikit-imageとmatplotlibでカラー画像の表示

こちらの画像をscikit-imageとmatplotlibで表示してみます。

垂直240,水平320のQVGAのカラーチャート 各色水平64画素ずつ

前回同様にimread関数で画像ファイルを読み込んで、matplotlibのimshow関数で表示してみます。今回はノーマルなカラー画像なので、RGB形式でnumpy配列に格納され、問題なく表示されました。

あっさり表示されたのでnumpyの復習を兼ねて、numpyで画像データを変更してみます。

2. numpyで画像切り出し・縦横回転・透過してみる

切り出し  :
  ndarrayの範囲指定を使う。
縦横回転  :
  行列の転置。
  transposeで軸を入れ替えることで回転可能。
  回転方向によってプラスαの操作が必要ですが。
透過    :
  RGBに対し、透過度を示すαチャネルを追加して画像を透過させてみる。

それぞれ、結果は下記Jupyter Notebookの結果を確認して下さい。

3. 自動正規化に注意

過程で一つ問題にぶち当たりました。透過度を示すαチャネルを0~255の幅のグレースケールで表示しようと思ったのですが、単なる白黒データになってしまいます。

公式サイトでAPI仕様を調べてみました。

Xarray-like or PIL image
The image data. Supported array shapes are:
(M, N): an image with scalar data. The values are mapped to colors using normalization and a colormap. See parameters normcmapvminvmax.
(M, N, 3): an image with RGB values (0-1 float or 0-255 int).
(M, N, 4): an image with RGBA values (0-1 float or 0-255 int), i.e. including transparency.
The first two dimensions (M, N) define the rows and columns of the image.
Out-of-range RGB(A) values are clipped.

vmin, vmaxscalar, optional
When using scalar data and no explicit normvmin and vmax define the data range that the colormap covers. By default, the colormap covers the complete value range of the supplied data. vminvmax are ignored if the norm parameter is used.

どうやら、自動で正規化されてしまい、2値化されてしまったようです。
スカラーデータの表示は少し注意が必要そうです。

Numpyの使い方に関するお勧め書籍ですが、『Pythonによるデータ分析入門』と『現場で使える!NumPyデータ処理入門』がお勧めです。
前者はNumpyに閉じず、Pandasも使ったデータ分析全般について勉強になります。後者はNumpyのハンドブック的に使うのにお勧めです。

次回は機械学習に関する学習について少し紹介したいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です