Numpy入門: 画像処理

この記事では、PythonのライブラリであるNumpyを使用した基本的な画像処理について解説します。具体的なコード例も提供しますので、PythonとNumpyを使用した画像処理に興味がある方はぜひ参考にしてください。

目次

  1. Numpyとは
  2. 画像データとNumpy配列
  3. 基本的な画像操作
  4. 色空間の変換
  5. フィルタリング

Numpyとは

NumPy(Numerical Python)は、Python数値計算を効率的に行うための拡張モジュールです。多次元配列や行列の演算、さらにそれらを扱うための便利な関数が用意されています。


画像データとNumpy配列

一般的に、カラー画像は高さ・幅・色チャンネル(RGB)の3次元データ構造で表現されます。これら各ピクセル情報が通常0から255まで整数値(8bit)で表現されます。

import numpy as np
from PIL import Image

img = Image.open('image.png')
np_img = np.array(img)

print(np_img.shape)  # 出力:(height, width, channel)

基本的な画像操作

1. クロッピング

cropped_img = np_img[50:200, 50:200]
Image.fromarray(cropped_img).show()

2. リサイズ

resized_img = np.resize(np_img, (100,100))
Image.fromarray(resized_img).show()

3. 回転

rotated_image = np.rot90(np_img)
Image.fromarray(rotated_image).show()

色空間の変換

RGBからグレースケールへ変換する方法です:

gray_scale_image = np.dot(np_img[...,:3], [0.2989, 0.5870, 0.1140])
Image.fromarray(gray_scale_image).show()

フィルタリング

フィルタリングは画像処理でよく用いられます。ここでは平滑化(スムージング)フィルタを例に紹介します:

filter = np.ones((3,3)) / 9
filtered_image = cv2.filter2D(np_img,-1,filter)
Image.fromarray(filtered_image).show()

以上がNumpyを使用した基本的な画像処理の説明となります。これらの基本操作を組み合わせることで、さまざまな高度な画像処理が可能になります。