Python×MatplotlibでPNG画像を自在に操作する方法|擬似カラー・カラーバー・補間処理のコード例
Matplotlibは、Pythonで配列の2Dプロットを行うための強力な可視化ライブラリです。NumPy配列を基盤として構築されたマルチプラットフォーム対応のデータ可視化ライブラリであり、より広範なSciPyスタックとの連携を想定して設計されています。
本記事では、MatplotlibとPIL(Pillow)を組み合わせてPNG画像を操作する具体的な手法を、擬似カラーの適用、カラーバーの表示、画像のリサイズ、補間処理の4つのステップに分けて解説します。
1. 擬似カラー(Pseudocolor)の適用
グレースケール画像や単一チャンネルのデータに対してカラーマップを適用すると、値の違いを色の変化として直感的に把握できます。まずはデフォルトのカラーマップを使用した基本例です。
# pyplotとimageをmatplotlibからインポート
import matplotlib.pyplot as plt
import matplotlib.image as img
# PNG画像を読み込む
im = img.imread('imR.png')
# 擬似カラーを適用(デフォルトのカラーマップを使用)
lum = im[:, :, 0]
# 画像を表示
plt.imshow(lum)ここでは im[:, :, 0] によって画像の最初のチャンネル(赤成分)のみを抽出し、輝度データとして扱っています。
2. カラーバーの表示
次に、カラーマップを「hot」に変更し、colorbar() を使ってカラーバーを追加します。これにより、色と数値の対応関係が一目でわかるようになります。
# pyplotとimageをmatplotlibからインポート
import matplotlib.pyplot as plt
import matplotlib.image as img
# PNG画像を読み込む
im = img.imread('imR.png')
lum = im[:, :, 0]
# カラーマップをhotに設定して表示
plt.imshow(lum, cmap='hot')
plt.colorbar()3. 画像のリサイズ(サムネイル化)
PILの Image.open() で画像を読み込み、thumbnail() メソッドを使えば、指定したサイズ以内に簡単に縮小できます。以下は50×50ピクセルに収める例です。
# PILとmatplotlibをインポート
from PIL import Image
import matplotlib.pyplot as plt
# PNG画像ファイルを読み込む
img = Image.open('imR.png')
# 画像をリサイズ(サムネイル化)
img.thumbnail((50, 50), Image.ANTIALIAS)
imgplot = plt.imshow(img)※ 新しいバージョンのPillowでは Image.ANTIALIAS は非推奨となっており、代わりに Image.LANCZOS または Image.Resampling.LANCZOS の使用が推奨されています。
4. 補間処理:bicubic
画像を拡大・縮小して表示する際、補間方式を指定することで表示品質を調整できます。bicubic(バイキュービック法)は、周辺16ピクセルの情報から滑らかに補間する方式で、自然な仕上がりが得られます。
# matplotlibからpyplotをインポート
import matplotlib.pyplot as plt
# PILからImageをインポート
from PIL import Image
# 画像を読み込む
img = Image.open('imR.png')
img.thumbnail((30, 30), Image.ANTIALIAS)
# bicubicを補間に使用
imgplot = plt.imshow(img, interpolation='bicubic')5. 補間処理:sinc
sinc 補間はSinc関数に基づく高品質な補間方式です。縮小画像を拡大表示する際に、エッジのなめらかさとディテールの再現性で優れた結果をもたらします。
# PILとmatplotlibをインポート
from PIL import Image
import matplotlib.pyplot as plt
# 画像を読み込む
img = Image.open('imR.png')
img.thumbnail((30, 30), Image.ANTIALIAS)
# sincを補間に使用
imgplot = plt.imshow(img, interpolation='sinc')まとめ
MatplotlibとPILを組み合わせることで、PNG画像の読み込みから擬似カラー化、カラーバー追加、リサイズ、補間処理までを短いコードで実現できます。科学技術計算の結果を視覚的に表現したい場合や、画像データの前処理・確認を行いたい場合に、ぜひ活用してみてください。
-
Pythonで画像を読み込む方法:OpenCVとPILを使った基本操作を解説
OpenCVによる画像処理OpenCV(Open Source Computer Vision)は、機械学習とコンピュータビジョンのために開発されたオープンソースのプログラミングライブラリです。コンピュータビジョンアプリケーション開発のための共通基盤を提供し、商用製品への機械学習の導入を迅速化します。OpenCVには、2,500以上の最適化されたアルゴリズムが含まれており、古典的な手法から最先端の手法まで、コンピュータビジョンと機械学習の両分野をカバーしています。これらの豊富なアルゴリズムにより、顔検出・認識、物体识别、動画内の人間の動作の分類、カメラの動きの追跡、複数画像の結合による高解像度
-
【Python×OpenCV】画像の収縮(エロージョン)と膨張(ダイレーション)の基本を解説
本記事では、PythonのOpenCVモジュールを使って、エロージョン(収縮)やダイレーション(膨張)といったモルフォロジー演算(形態学的処理)を実行する方法を解説します。 OpenCVはコンピュータビジョン向けに設計されたオープンソースのライブラリで、もともとはIntelによって開発されました。BSDライセンスのもとで誰でも無料で利用できます。 OpenCVの機能を使うには、まずpipでインストールしておきましょう。 sudo pip3 install opencv-python エロージョン(収縮)とは?仕組みを解説 エロージョンは、前景オブジェクトの境界を削り取っていく処理です。画像内の