↑↑↑关注后"星标"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算子分别为: