16、图像梯度

2019-01-06  本文已影响0人  BigBigGuy

一阶导数与Soble算子

image.png image.png
def sobel_function(image):
    grad_x = cv.Sobel(image, cv.CV_32F, dx=1, dy=0)
    grad_y = cv.Sobel(image, cv.CV_32F, dx=0, dy=1)

    '''
        cv.convertScaleAbs:
            先绝对值,然后转为单通道 8 位的范围
    '''
    gradx = cv.convertScaleAbs(grad_x)
    grady = cv.convertScaleAbs(grad_y)
    cv.imshow("gradient-x", gradx)
    cv.imshow("gradient-y", grady)
    gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0)
    cv.imshow("gradient-xy", gradxy)
Sobel算子
grad_x = cv.Scharr(image, cv.CV_32F, dx=1, dy=0)
grad_y = cv.Scharr(image, cv.CV_32F, dx=0, dy=1)
Scharr算子:Sobel算子的增强版

二阶导数与拉普拉斯算子

image.png image.png
def laplacian_function(image):
    '''
        默认拉普拉斯算子是第一个矩阵
    '''
    dst = cv.Laplacian(image, cv.CV_32F)
    lpls = cv.convertScaleAbs(dst)
    cv.imshow("Laplacian", lpls)

默认拉普拉斯算子
def laplacian_function(image):
    # dst = cv.Laplacian(image, cv.CV_32F)

    kernel = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
    dst = cv.filter2D(image, cv.CV_32F, kernel=kernel)
    lpls = cv.convertScaleAbs(dst)
    cv.imshow("Laplacian", lpls)
自定义拉普拉斯算子
上一篇 下一篇

猜你喜欢

热点阅读