この記事では、PythonのライブラリであるNumpyを使用した基本的な画像処理について解説します。具体的なコード例も提供しますので、PythonとNumpyを使用した画像処理に興味がある方はぜひ参考にしてください。
目次
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を使用した基本的な画像処理の説明となります。これらの基本操作を組み合わせることで、さまざまな高度な画像処理が可能になります。