Numpy入門: コンピュータビジョン

NumpyはPython数値計算を行うためのライブラリです。この記事では、Numpyを用いてコンピュータビジョンに関する基本的な操作を実行する方法について解説します。

目次

  1. はじめに
  2. 画像の読み込みと表示
  3. 色空間の変換
  4. 画像フィルタリング
  5. エッジ検出
  6. まとめ

1. はじめに

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

まず、必要なモジュールをインポートします。

2. 画像の読み込みと表示

img = Image.open('example.jpg')
plt.imshow(img)
plt.show()

ここでは、PILライブラリを使って画像ファイルを読み込んでいます。そして、matplotlibライブラリのimshow関数でその画像を表示しています。

3. 色空間の変換

img_gray = img.convert('L')
plt.imshow(img_gray, cmap='gray')
plt.show()

この例では、PILライブラリのconvertメソッドで色空間を変換し、RGBカラー画像からグレースケール(白黒)画像へと変換しています。

4. 画像フィルタリング

from scipy.ndimage import gaussian_filter

img_np = np.array(img_gray)
img_filtered = gaussian_filter(img_np, sigma=1)

plt.imshow(img_filtered, cmap='gray')
plt.show()

ここではscipy.ndimageモジュール内部のgaussian_filter関数を用いてガウシアンフィルタ(平滑化フィルタ)を適用しました。これはノイズ除去やエッジ検出前処理などに使用されます。

5. エッジ検出

from scipy.ndimage import sobel

img_sobel_x = sobel(img_filtered, axis=0) # x方向のエッジ検出
img_sobel_y = sobel(img_filtered, axis=1) # y方向のエッジ検出

plt.imshow(np.hypot(img_sobel_x, img_sobel_y), cmap='gray') # エッジ強度
plt.show()

この例では、sobelフィルタを用いてエッジ(境界線)を検出しています。

6. まとめ

NumpyはPythonで高性能な数値計算を行うためのライブラリです。この記事では、Numpyを用いて画像の読み込み、色空間の変換、画像フィルタリング、エッジ検出といった基本的なコンピュータビジョンに関する操作を実行する方法について説明しました。これらの基本的な操作は画像処理やコンピュータビジョンにおける多くのアプリケーションで使用されます。