OpenCVのSobelオペレータの使い方

OpenCVでは、cv2.Sobel()関数を用いて、ソベルオペレータを適用できます。この関数の構文は次のとおりです。

dst = cv2.Sobel(src, ddepth, dx, dy[, ksize[, scale[, delta[, borderType]]]])

パラメーターの詳細

  1. 入力イメージは、グレースケールまたはカラー画像(ただし、カラーの場合は単一チャネルのみ処理できます)。
  2. ddepth:出力画像の深度。一般的に-1で、入力画像の深度と同じことを意味する。
  3. dx: x 方向の差分階数
  4. dy:y方向の差分次数
  5. ksize: ソベル演算子のサイズ。3、5、7 などを選択可能。既定値は 3。
  6. スケール:倍率:もともと1に設定されている数値を制御するスケール係数。
  7. デルタ:結果画像のオプションのオフセット値、デフォルトは 0 です。
  8. borderType: ピクセル境界モード。 デフォルトは cv2.BORDER_DEFAULT.

ソベル演算子を用いたサンプルコードを以下に示す:

import cv2
 
img = cv2.imread('image.jpg', 0)
 
# 在x方向上应用Sobel算子
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
 
# 在y方向上应用Sobel算子
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
 
# 计算梯度幅值和角度
gradient_magnitude = cv2.magnitude(sobelx, sobely)
gradient_angle = cv2.phase(sobelx, sobely, angleInDegrees=True)

この例では、まずcv2.imread()関数で入力画像(グレースケール画像を想定)を読み込みます。次にcv2.Sobel()関数を呼び出して、x方向とy方向にそれぞれSobel演算子を適用します。最後にcv2.magnitude()関数で勾配の大きさを、cv2.phase()関数で勾配の方向を計算します。

bannerAds