import cv2
import numpy as np
# 加载灰度图像
img_gray = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
# 定义Susan算子的卷积核
susan_kernel = np.array([ [-1, -1, -1, -1, -1], [-1, 1, 1, 1, -1], [-1, 1, 8, 1, -1], [-1, 1, 1, 1, -1], [-1, -1, -1, -1, -1]
], dtype=np.float32)
# 缩放卷积核,使其权重之和为0
susan_kernel = susan_kernel - np.mean(susan_kernel)
# 对图像进行Susan算子处理
susan_img = cv2.filter2D(img_gray, -1, susan_kernel)
# 使用阈值二值化处理结果图像,得到二值图像
threshold = 20
susan_img_binary = cv2.threshold(susan_img, threshold, 255, cv2.THRESH_BINARY)[1]
# 显示原始图像、Susan算子处理后的图像以及二值化后的图像
cv2.imshow("Original Image", img_gray)
cv2.imshow("Susan Filtered Image", susan_img)
cv2.imshow("Susan Binary Image", susan_img_binary)
cv2.waitKey(0)