基于OpenCV的图像梯度与边缘检测!

本文详细介绍了图像梯度及其在边缘检测中的应用,包括Sobel、Scharr、Roberts算子以及Laplacian算子。通过OpenCV库,展示了各算子在图像边缘检测中的实现过程,提供了代码示例和结果展示,帮助理解如何使用这些算子进行图像边缘检测。同时,文章还探讨了Canny边缘检测算法,包括高斯滤波、梯度计算、非极大值抑制和双阈值算法等步骤,以及在OpenCV中实现Canny边缘检测的方法。
摘要由CSDN通过智能技术生成

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:姚童,Datawhale优秀学习者,华北电力大学

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

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

为了检测边缘,我们需要检测图像中的不连续性,可以使用图像梯度来检测不连续性。但是,图像梯度也会受到噪声的影响,因此建议先对图像进行平滑处理。

本文目录:   

    1. 图像梯度与几种算子

    • Sobel算子

    • Scharr算子

    • Roberts算子

    • Laplacian算子

    2. Canny边缘检测

    • 高斯滤波

    • 计算梯度强度和方向

    • 非极大值抑制(NMS)

    • 用双阈值算法检测和连接边缘

    3. 基于OpenCV的实现

    • Sobel算子函数

    • Scharr算子

    • Laplacian算子

一、图像梯度与几种算子

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

1.1 Sobel算子

Sobel算子是一个3×3的卷积核,利用局部差分寻找边缘,计算得到梯度的近似值。x和y方向的Sobel算子分别为: 

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

计算水平方向偏导数的近似值
设原图像大小为 ,水平方向偏导数 为:

计算像素点P5的梯度,需要利用邻域内的像素点,公式为:

即用像素点P5右侧像素值减去左侧像素值,距离P5近的点权重较大,为2;距离P5远的点权重较小,为1。

计算垂直方向偏导数的近似值
设原图像大小为 ,垂直方向偏导数 为:

计算像素点P5的梯度,需要利用邻域内的像素点,公式为:

即用像素点P5下一行的像素值减去上一行的像素值,距离P5近的点权重较大,为2;距离P5远的点权重较小,为1。

1.2 Scharr算子

x和y方向的Scharr算子分别为: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值