0%

011-特征提取算法-边缘检测

摘要:011-特征提取算法-边缘检测

边缘定义及类型

边缘类型:简单分为4中类型,阶跃型、屋脊型、斜坡型、脉冲型,其中阶跃型和斜坡型是类似的,只是变化的快慢不同。

边缘检测算子类别

边缘检测算子:

1
2
3
4
5
6
7
8
9
10
算子        优缺点比较
Roberts 对具有陡峭的低噪声的图像处理效果好,但利用Roberts算子提取边缘的结果是边缘比较粗,因此边缘定位不是很准确
Sobel 对灰度渐变和噪声较多的图像处理效果比较好,Sobel算子对边缘定位比较准确
Kirsch 对灰度渐变和噪声较多的图像处理效果较好。
Prewitt 对灰度渐变和噪声较多的图像处理效果较好。
Laplacian 对图像中的阶跃性边缘点定位准确,对噪声非常敏感,丢失一部分边缘的方向信息,造成一些不连续的检测边缘
LoG LoG算子经常出现双边缘像素边界,而且该检测方法对噪声比较敏感,所以很少用LoG算子检测边缘,而是用来判断边缘像素是位于图像的明区还是暗区
Canny 此方法不易受噪声的干扰,能够检测到真正的弱边缘。在edge函数中,最有效的边缘检测方法是Canny方法。
该方法的优点在于使用两种不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘与强边缘相连时,才将弱边缘包含在输出图像中。。
因此,这种方法不容易被噪声”填充“,更容易检测出真正的弱边缘

OpenCV-Python 中 Canny()

步骤:

  • 彩色图像转换为灰度图像(以灰度图或者单通道图读入)
  • 对图像进行高斯模糊(去噪)
  • 计算图像梯度,根据梯度计算图像边缘幅值与角度
  • 沿梯度方向进行非极大值抑制(边缘细化)
  • 双阈值边缘连接处理
  • 二值化图像输出结果

“””
cv2.Canny(image, # 输入原图(必须为单通道图)
threshold1,
threshold2, # 较大的阈值2用于检测图像中明显的边缘
[, edges[,
apertureSize[, # apertureSize:Sobel算子的大小
L2gradient ]]]) # 参数(布尔值):
true: 使用更精确的L2范数进行计算(即两个方向的倒数的平方和再开放),
false:使用L1范数(直接将两个方向导数的绝对值相加)。
“””

一分也是爱,两分情更浓【还没有人赞赏,支持一下呗】