常用的图像边缘提取算子有以下几种:


Roberts算子 是一种最简单的算子,是一种利用局部差分算子寻找边缘的算子,他采用对角线方向相邻两像素之差近似梯度幅值检测边缘。




Laplacian 算子 是n维欧几里德空间中的一个二阶微分算子。




Canny  算子 的目标是找到一个最优的 边缘检测 算法 ,Canny 使用了 变分法。 先平滑再求导的方法。


第一步:

高斯滤波器进行平滑处理。

高斯滤波用于对图像进行减噪,采用邻域加权平均的方法计算每一个像素点的值。

第二步:



利用一阶差分计算边缘的方向与幅值。



第三步:

非极大值抑制。



对一些梯度值不是最大的点进行抑制,突出真正的边缘。




Sobel 算子 有两个,一个是检测水平边缘的 ;另一个是检测垂直边缘的 。






根据图像边缘提取算子的计算求导阶数,又可以分为:


一阶微分边缘算子


图片的边缘提取python代码 图像边缘提取算法_卷积核




Roberts算子


图片的边缘提取python代码 图像边缘提取算法_卷积核_02


水平与竖直边缘检测卷积核为:


图片的边缘提取python代码 图像边缘提取算法_图片的边缘提取python代码_03




Sobel 算子


利用周围邻域8个点的灰度值来估计中心的梯度


图片的边缘提取python代码 图像边缘提取算法_卷积_04


Sobel算子认为靠近中心像素的点应该给予更高的权重,所以Sobel算子把与中心像素4邻接的像素的权重设置为2或-2。



卷积核为:



图片的边缘提取python代码 图像边缘提取算法_高斯滤波_05






二阶微分算子



边缘即是图像的一阶导数局部最大值的地方,那么也意味着该点的二阶导数为零。



图片的边缘提取python代码 图像边缘提取算法_卷积核_06



Laplacian 算子


图片的边缘提取python代码 图像边缘提取算法_卷积_07


二阶微分卷积核为:


图片的边缘提取python代码 图像边缘提取算法_卷积_08


两步:1)用上面的Laplace核与图像进行卷积;2)对卷积后的图像,取得那些卷积结果为0的点。



缺点是对噪声十分敏感。




Canny 算子


主要分四步进行:

  1. 去噪声;
  2. 计算梯度与方向角;
  3. 非最大值抑制;
  4. 滞后阈值化;

其中前两步很简单,先用一个高斯滤波器对图像进行滤波,然后用Sobel水平和竖直检测子与图像卷积,来计算梯度和方向角。