Sobel算子是像素图像边缘检测中最重要的算子之一,在机器学习、数字媒体、计算机视觉等信息科技领域起着举足轻重的作用。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量
代码及效果:
import cv2 as cv
src = cv.imread("img/brain.jpg", cv.IMREAD_GRAYSCALE)
# sobel算子 参数1:图像, 参数2:图像的深度 -1表示和原图相同, 参数3: x方向求导的阶数 参数4: y方向求导的阶数
sobel_x = cv.Sobel(src, -1, 1, 0)
cv.imshow("x", sobel_x)
sobel_y = cv.Sobel(src, -1, 0, 1)
cv.imshow("y", sobel_y)
sobel_xy = sobel_x + sobel_y
cv.imshow("xy", sobel_xy)
cv.imshow("src", src)
cv.waitKey()
原图
Y方向
X方向
XY合成
Scharr算法:
import cv2 as cv
src = cv.imread("img/brain.jpg",cv.IMREAD_GRAYSCALE)
sx = cv.Scharr(src,-1,1,0)
scharr_x = cv.Scharr(src, -1, 1, 0)
cv.imshow("x", scharr_x)
scharr_y = cv.Scharr(src, -1, 0, 1)
cv.imshow("y", scharr_y)
xy = scharr_x + scharr_y
cv.imshow("xy", xy)
cv.waitKey();
对比: