Open CV系列学习笔记(十五)图像梯度 2021-02-10

Open CV系列学习笔记(十五)图像梯度

图像梯度

图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导。
图像梯度: G(x,y) = dx(i,j) + dy(i,j);
dx(i,j) = I(i+1,j) - I(i,j);
dy(i,j) = I(i,j+1) - I(i,j);
其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。
图像梯度一般也可以用中值差分:
dx(i,j) = [I(i+1,j) - I(i-1,j)]/2;
dy(i,j) = [I(i,j+1) - I(i,j-1)]/2;
图像边缘一般都是通过对图像进行梯度运算来实现的。

一阶导数与Soble算子

在这里插入图片描述
在这里插入图片描述
代码:

def sobel_demo(image):#索贝尔算子(加强版)
    grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)
    grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)
    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",gradxy)

结果:
在这里插入图片描述
在这里插入图片描述

二阶导数与拉普拉斯算子

在这里插入图片描述
在这里插入图片描述
代码:

def lapalian_demo(image):#拉普拉斯算子
    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("lapalian_demo",lpls)

结果:
在这里插入图片描述

完整代码:

import cv2 as cv
import numpy as np


def lapalian_demo(image):#拉普拉斯算子
    #dst = cv.Laplacian(image,cv.CV_32F)
    #lpls = cv.convertScaleAbs(dst)
    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("lapalian_demo",lpls)


def sobel_demo(image):#索贝尔算子(加强版)
    grad_x = cv.Scharr(image, cv.CV_32F, 1, 0)
    grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)
    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",gradxy)


print("--------HEllow Python-------")
src = cv.imread("E:/picture/30.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
sobel_demo(src)
cv.waitKey(0)


cv.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值