Menu
CoddyTech

配列としての画像

CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 29/60。

白黒写真は数値のグリッドで、各ピクセルに明るさの値が1つずつあります。つまり、2次元配列は画像であり、ax.imshowで描画できます。

plus = np.array([[0, 0, 1, 0, 0],
                 [0, 0, 1, 0, 0],
                 [1, 1, 1, 1, 1],
                 [0, 0, 1, 0, 0],
                 [0, 0, 1, 0, 0]])
fig, ax = plt.subplots()
ax.imshow(plus, cmap="gray")
plt.show()

黒地に白いプラス記号を描いた5×5の画像。各ピクセルに値が表示されている。白い十字は1、黒い四隅は0

cmap="gray" はグレーのカラーマップを選択します。最小値は黒、最大値は白です。配列に書かれているとおり、行 0 が上に描画されます。

写真は通常、0(黒)から255(白)までの値で保存されます。この学習の後半では、モデルがこのように保存された手書きの数字を読み取ります。

challenge icon

チャレンジ

中級

スキャナーは印刷された文字を読み取りましたが、反転した状態で保存しました。暗い紙に明るいインクです。入れ子のリストscanには、各ピクセルの明るさが0から255の範囲で格納されています。

  1. scanを配列に変換して反転させます。各ピクセルを255からその値を引いた値にします。
  2. グレーのカラーマップを使って描画し、タイトルをLetter Eにして、表示します。

修正後のスキャン画像であるLの文字は、次のようになります。

白い背景にある小さな黒いLの文字。高さ7ピクセル、幅5ピクセルで、タイトルはLetter L

プログラムは何も出力しません。Coddyが画像を行ごとに説明します。

自分で試してみよう

import numpy as np
import matplotlib.pyplot as plt

scan = [[255, 255, 255, 255, 255],
        [255, 30, 0, 0, 0],
        [255, 0, 0, 0, 0],
        [255, 255, 255, 200, 0],
        [255, 0, 0, 0, 0],
        [255, 0, 0, 0, 15],
        [255, 255, 255, 255, 255]]

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

データとプロットのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ