Matplotlib を使った非均一画像の描画

PythonPythonBeginner
オンラインで実践に進む

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python の Matplotlib ライブラリの NonUniformImage クラスを使用する方法について、手順を追って説明します。NonUniformImage を使用することで、ユーザーは非一様な画素位置を持つ画像を描画できます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を開いて練習しましょう。

Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題が発生した場合は、Labby にお問い合わせください。セッション終了後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリのインポート

NonUniformImage を作成する前に、必要なライブラリをインポートする必要があります。この例では、numpy と matplotlib を使用します。

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cm
from matplotlib.image import NonUniformImage

線形と非線形の配列を作成する

線形の値を持つ配列と非線形の値を持つ配列の 2 つを作成する必要があります。これらの配列は、NonUniformImage を作成するために使用されます。

## セル中心の線形 x 配列:
x = np.linspace(-4, 4, 9)

## 高度に非線形な x 配列:
x2 = x**3

y = np.linspace(-4, 4, 9)

z = np.sqrt(x[np.newaxis, :]**2 + y[:, np.newaxis]**2)

サブプロットと NonUniformImage を作成する

ここでは、サブプロットを作成し、それぞれに NonUniformImage を追加します。4 つのサブプロットを作成し、2 つは「nearest」補間、2 つは「bilinear」補間を使用します。補間キーワード引数は、画像を表示するために使用される補間の種類を定義します。

## サブプロットを作成する
fig, axs = plt.subplots(nrows=2, ncols=2, layout='constrained')
fig.suptitle('NonUniformImage class', fontsize='large')

## Nearest 補間
ax = axs[0, 0]
im = NonUniformImage(ax, interpolation='nearest', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

ax = axs[0, 1]
im = NonUniformImage(ax, interpolation='nearest', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

## Bilinear 補間
ax = axs[1, 0]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

ax = axs[1, 1]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

plt.show()

結果の解釈

サブプロットは、「nearest」と「bilinear」の 2 種類の補間を表示します。「nearest」補間は最寄りの近傍の画素値を表示し、「bilinear」補間は 4 つの最寄りの近傍の加重平均を表示します。

まとめ

NonUniformImage は、画素位置が不均一な画像を描画するための便利なツールです。この実験では、Python の Matplotlib ライブラリで NonUniformImage を使用する方法について、必要なライブラリのインポート、線形および非線形の配列の作成、サブプロットと NonUniformImage の作成、結果の解釈を含む手順を示しました。