以下の画像において、鋭いピークを持つ箇所を検出するためにソーベルフィルタを使用して画像を処理します。

import cv2
import numpy as np
def detect_peak(src: np.ndarray) -> np.ndarray:
g_x, g_y = cv2.Sobel(src, cv2.CV_64F, 1, 0, ksize=3), cv2.Sobel(src, cv2.CV_64F, 0, 1, ksize=3)
Nabla_2 = np.sqrt(g_x**2 + g_y**2)
Nabla_2_norm = cv2.normalize(Nabla_2, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
threshold = 60
Nabla_2_norm[Nabla_2_norm <= threshold] = 0
return Nabla_2_norm
image = cv2.imread('img_raw.png', cv2.IMREAD_GRAYSCALE)
cv2.imwrite("a.png",detect_peak(image))実行結果


