OpenCV——图像梯度与边缘检测(python实现)

OpenCV——图像梯度与边缘检测

6.1 简介

严格的说,梯度计算需要求导数。但是图像梯度的计算,是通过计算像素值的差得到梯度的近似值。图像梯度表示的是图像变化的速度,反映了图像的边缘信息。

边缘是像素值快速变化的地方。所以对于图像的边缘部分,其灰度值变化较大,梯度值也较大;对于图像中较平滑的部分,其灰度值变化较小,梯度值也较小。

为了检测边缘,我们需要检测图像中的不连续性,可以使用图像梯度来检测不连续性。

但是,图像梯度也会受到噪声的影响,因此建议先对图像进行平滑处理。

6.2 学习目标

  • 掌握图像梯度与几种算子的原理
  • 掌握Canny边缘检测的原理

6.3 内容介绍

  1. 图像梯度与Sobel算子
  2. Canny边缘检测介绍
  3. OpenCV代码实践

6.4 算法理论介绍与推荐

6.4.1 图像梯度与几种算子

“滤波器”也可以称为“卷积核”,“掩膜”,“算子”等。

1、Sobel算子

Sobel算子是一个 3 × 3 3×3 3×3的卷积核,利用局部差分寻找边缘,计算得到梯度的近似值。
x和y方向的Sobel算子分别为:
G x = [ − 1 0 1 − 2 0 2 − 1 0 1 ]   G y = [ − 1 − 2 − 1 0 0 0 1 2 1 ] Gx=\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2\\ -1 & 0 & 1 \end{bmatrix}\\ \ \\ Gy=\begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0\\ 1 & 2 & 1 \end{bmatrix} Gx=121000121 Gy=101202101

梯度有方向,对于一个图像,可以通过Sobel算子分别计算水平方向垂直方向的偏导数的近似值。

计算水平方向偏导数的近似值

设原图像大小为 3 × 3 3×3 3×3,水平方向偏导数 G x Gx Gx为:
在这里插入图片描述

计算像素点P5的梯度,需要利用邻域内的像素点,公式为:
P 5 x = ( P 3 − P 1 ) + 2 ( P 6 − P 4 ) + ( P 9 − P 7 ) P5x=(P3-P1)+2(P6-P4)+(P9-P7) P5x=(P3P1)+2(P6P4)+(P9P7)
即用像素点P5右侧像素值减去左侧像素值,距离P5近的点权重较大,为2;距离P5远的点权重较小,为1。

计算垂直方向偏导数的近似值

设原图像大小为 3 × 3 3×3 3×3,垂直方向偏导数 G y Gy Gy为:
在这里插入图片描述

计算像素点P5的梯度,需要利用邻域内的像素点,公式为:
P 5 y = ( P 7 − P 1 ) + 2 ( P 8 − P 2 ) + ( P 9 − P 3 ) P5y=(P7-P1)+2(P8-P2)+(P9-P3) P5y=(P7P1)+2(P8P2)+(P9P3)
即用像素点P5下一行的像素值减去上一行的像素值,距离P5近的点权重较大,为2;距离P5远的点权重较小,为1。

2、Scharr算子

x和y方向的Scharr算子分别为:
G x = [ − 3 0 3 − 10 0 10 − 3 0 3 ]   G y = [ − 3 − 10 − 3 0 0 0 3 10 3 ] Gx=\begin{bmatrix} -3 & 0 & 3 \\ -10 & 0 & 10\\ -3 & 0 & 3 \end{bmatrix}\\ \ \\ Gy=\begin{bmatrix} -3 & -10 & -3 \\ 0 & 0 & 0\\ 3 & 10 & 3 \end{bmatrix} Gx=3<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值