投稿日:2025年3月4日

Pythonによる画像処理の基礎と機械学習への応用

Pythonによる画像処理の基礎

Pythonは、多くのライブラリを用いて画像処理を行うことができるプログラミング言語です。
その中でも特に人気のあるライブラリが、OpenCVやPillow(PIL)です。
これらのライブラリを利用することで、画像の読み込みや変換、フィルタリングなどを手軽に実施することができます。

画像の読み込みと表示

画像処理の第一歩は、画像をプログラムに取り込むことです。
Pythonでは、Pillowを使用することで画像ファイルを簡単に読み込み、表示することができます。

例として、Pillowを使った画像の読み込みと表示方法を紹介します。

“`python
from PIL import Image

# 画像の読み込み
image_path = ‘path/to/your/image.jpg’
img = Image.open(image_path)

# 画像の表示
img.show()
“`

このように簡単な数行のコードで、画像をプログラムに取り込み、表示することができます。
OpenCVを使用する場合も似たような手順を踏みます。

画像の変換と保存

画像を読み込んだ後は、その画像を様々な形式に変換したり、加工したりすることが可能です。
例えば、画像のフォーマット変更やサイズ変更が考えられます。

“`python
# 画像のサイズを変更
img_resized = img.resize((100, 100))

# PNG形式で保存
img_resized.save(‘resized_image.png’)
“`

このように、変換した画像データは別形式や異なるサイズで保存することができます。

画像処理の基本操作

画像処理の基本操作には、フィルタリングやエッジ検出、カラースペースの変換などがあります。

フィルタリング

フィルタリングにより、画像の特徴を強調したり、ノイズを除去したりすることができます。
OpenCVには、様々なフィルタリング技術が組み込まれています。

例えば、画像をぼかす操作は以下のように実施できます。

“`python
import cv2

# 画像の読み込み
img = cv2.imread(‘path/to/your/image.jpg’)

# ぼかし処理
blurred_img = cv2.GaussianBlur(img, (5, 5), 0)

# 画像の保存
cv2.imwrite(‘blurred_image.jpg’, blurred_img)
“`

エッジ検出

エッジ検出は、画像内の構造を捉えるために重要な技術です。
これにより、物体の輪郭を理解することができます。

Cannyアルゴリズムは、エッジ検出に広く利用されている方法の一つです。

“`python
# Cannyエッジ検出
edges = cv2.Canny(img, 100, 200)

# エッジ検出された画像の保存
cv2.imwrite(‘edges.jpg’, edges)
“`

機械学習への応用

画像処理技術は、単体でも価値がありますが、機械学習と組み合わせることでその可能性を大きく広げることができます。

画像分類

画像分類は、画像の内容をカテゴリに分類するタスクです。
色や形状、テクスチャなどの特徴量を抽出し、機械学習モデルで処理することで、画像が持つ情報を確率論的に分類することができます。

深層学習フレームワークのTensorFlowやPyTorchを用いることで、簡単に画像分類モデルを構築することができます。

“`python
import tensorflow as tf

# モデルの構築
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation=’relu’, input_shape=(100, 100, 3)),
tf.keras.layers.MaxPooling2D((2, 2)),
# …
tf.keras.layers.Dense(10, activation=’softmax’)
])

# コンパイル
model.compile(optimizer=’adam’,
loss=’sparse_categorical_crossentropy’,
metrics=[‘accuracy’])

# トレーニング
# model.fit(train_images, train_labels, epochs=10)
“`

物体検出

物体検出は、画像内にどんな物体があるかだけでなく、それがどこにあるかを特定するタスクです。
物体検出モデルとしては、YOLOやSSD、Faster R-CNNなどが有名です。

物体検出においては、各物体の位置を示すためにバウンディングボックスを利用します。
これらのモデルは通常、大量のデータを必要としますが、その分非常に高精度な結果を出力します。

まとめ

Pythonによる画像処理は、OpenCVやPillowといったライブラリを使うことで、基本的な画像の読み込みや変換、フィルタリングを簡単に実施できます。
さらに、これらのテクノロジーは機械学習と組み合わせることで、画像分類や物体検出といった高度なタスクにも応用されます。

これにより、製造業における品質検査や自動化において、これまで手作業で行っていたプロセスを効率化し、高精度かつ迅速に実行することが可能です。
現場のニーズに応じて、適切な場面で適切な技術を選択し、効果的に活用することが重要です。

You cannot copy content of this page