案例 ©Fu Xianjun. All Rights Reserved.
一、读取图像
知识储备:Sobel算子
计算x方向边缘(梯度):dx=1,dy=0
计算y方向边缘(梯度):dx=0,dy=1
参数dx与参数dy的值均为1:dx=1,dy=1
计算x方向和y方向的边缘叠加:通过组合方式实现
dst=cv2.Sobel(src,ddepth,dx,dy[,ksize[,scale[,delta[,borderType]]]])
dx代表x方向上的求导阶数 dy代表y方向上的求导阶数
ksize代表Sobel核的大小。该值为-1时,则会使用Scharr算子进行运算。
delta代表加在目标图像dst上的值,该值是可选的,默认为0
知识储备:Laplacian算子
Laplacian(拉普拉斯)算子是一种二阶导数算子,其具有旋转不变性,可以满足不同方向的图像边缘锐化(边缘检测)的要求。通常情况下,其算子的系数之和需要为零。
图像梯度-Scharr算子
知识储备:Canny边缘检测
由于图像边缘非常容易受到噪声的干扰,通常需要对图像进行滤波以去除噪声。滤波的目的是平滑一些纹理较弱的非边缘区域,以便得到更准确的边缘。
计算图像x方向边缘
计算图像y方向边缘
编程实现计算peppa的sobel边缘
Canny边缘检测
1) 使用高斯滤波器,以平滑图像,滤除噪声。
2) 计算图像中每个像素点的梯度强度和方向。
3) 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。
4) 应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。
5) 通过抑制孤立的弱边缘最终完成边缘检测。
Canny实战:车道检测