エッジ検出は、画像処理における重要なステップの一つで、画像の特徴を抽出するために広く使用されます。PythonとOpenCVを用いて、エッジ検出を行う方法を紹介します。
OpenCVとエッジ検出
OpenCVは、画像処理やコンピュータビジョンの分野で広く活用されているオープンソースライブラリです。エッジ検出は、画像の明暗が急激に変わる境目(エッジ)を検出する処理を指します。
Canny法によるエッジ検出
Canny法は、エッジ検出の一つで、以下のようにPythonとOpenCVを用いて実装できます。
import cv2
# 画像をグレースケールで読み込む
img = cv2.imread("image_data.jpg", 0)
# Canny法でエッジ検出を行う
canny_img = cv2.Canny(img, 10, 180)
# エッジ検出した画像を表示
cv2.imshow("canny_img", canny_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
このコードでは、cv2.Canny()
関数を用いてエッジ検出を行っています。この関数は2つの閾値を用いて、エッジを正確に区別できるようにします。
Sobelフィルタによるエッジ検出
Sobelフィルタは、エッジ検出の一つで、以下のようにPythonとOpenCVを用いて実装できます。
import cv2
# 画像をグレースケールで読み込む
img = cv2.imread("image_data.jpg", 0)
# Sobelフィルタでエッジ検出を行う
sobel_img = cv2.Sobel(img, cv2.CV_32F, 1, 0, ksize=3)
# エッジ検出した画像を表示
cv2.imshow("sobel_img", sobel_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
このコードでは、cv2.Sobel()
関数を用いてエッジ検出を行っています。この関数はx方向、y方向の微分の次数を指定し、エッジ検出を行います。
以上、PythonとOpenCVを用いたエッジ検出の基本的な方法を紹介しました。これらの方法を活用することで、画像から有用な情報を抽出することが可能となります。.