Pythonのプログラムで画質を変化させよう①

Pythonで画像データの情報を変えて確認してみよう。

アクティビティの準備

アクティビティを始める前に次の準備を行いましょう。

  • 1. Google Colabを開きましょう。

    次の「Google Colab」ボタンを押して「Google Colab」にアクセスしましょう。

  • 2. 新しいノートブックを作成し、名前を「IP01-06」と付けましょう。

  • 3. 以下のリンクから、画像ファイルをダウンロードしましょう。

    以下のリンクを右クリックし、「リンク先を別名で保存」(またはそれに近い表現)を選択してください。

    名前は元のままでダウンロードをしてください。

    画像データ(ip01-06-01.png)をダウンロード


    ・ダウンロードした画像

準備ができたらアクティビティに進みましょう。

画像ファイルをプログラムに読み込もう

先ほどダウンロードしたデータを、Google Colabで使用できるようにアップロードします。

次のプログラムをGoogle Colabに貼り付けて実行してください。

from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import io

# 画像をアップロードする場合
from google.colab import files
uploaded = files.upload()

以下のように表示されたら成功です。

「ファイルを選択」をクリックして、先ほどダウンロードしたデータをアップロードしましょう。

アップロードに成功したら、下のように表示されます。

※ファイル名の後ろについている(3)は、アップロード回数です。無視して構いません。

解像度を変えてみよう

アップロードしたデータを読み込み、加工します。

Google Colabの新しいプログラム記入部分を作成し、次のプログラムを貼り付けて実行してください。

# 画像読み込み(アップロードされた1枚目を使う)
filename = next(iter(uploaded))
img = Image.open(filename).convert("RGB")
original_size = img.size

# 標本化(低解像度に縮小 → 元サイズに戻す)
sample_sizes = [1000, 100, 10]
resampled_imgs = [
    img.resize((s, s), Image.BICUBIC).resize(original_size, Image.NEAREST)
    for s in sample_sizes
]

# 表示
plt.figure(figsize=(12, 4))
plt.subplot(1, len(sample_sizes) + 1, 1)
plt.imshow(img)
plt.title("Original")
plt.axis("off")

for i, (size, simg) in enumerate(zip(sample_sizes, resampled_imgs), start=2):
    plt.subplot(1, len(sample_sizes) + 1, i)
    plt.imshow(simg)
    plt.title(f"{size}")
    plt.axis("off")

plt.tight_layout()
plt.show()

実行結果

あ、解像度が変わるって、こういうことなんだね。

一番左が元の画像か。解像度が1000だと全く一緒だね。10だとなんの画像か全くわからなくなるね。

これは「猫」と判別ができないよね。

プログラムの7行目が、変更後の3つの画像の、解像度の数値です。

ここの数値を変えて、どのように変わるか試してみましょう。

大きさの数値は自由です。大きい順にする必要もありません。

① プログラムの7行目に、変更後の解像度の数値が、3つ並んでいます。それぞれの数値を自由に変更して、ここまでなら「猫」と判別できる最も低い解像度を探し、その数値を答えてください。

② 以下のプログラムを実行し、入力欄に先ほど求めた解像度の数値を入れると、画像ファイルがダウンロードされます。

その画像ファイルを提出してください。

from PIL import Image
import matplotlib.pyplot as plt
from google.colab import files

# 任意のサイズをユーザー入力
custom_size = int(input("標本化する解像度を入力してください(例:32 など): "))

# 標本化処理(縮小→元サイズに拡大)
resampled_img = img.resize((custom_size, custom_size), Image.BICUBIC)
resampled_img_large = resampled_img.resize(img.size, Image.NEAREST)

# 保存とダウンロード
filename = f"resampled_{custom_size}.png"
resampled_img_large.save(filename)
files.download(filename)
選択されていません

対応形式:.png

次のスライドでも、Google Colabを使用します。

閉じないでおきましょう。

※この再現版では提出は行いません(送信先は未接続です)

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる