Canny边缘检测算法:这是一种经典的图像处理算法,用于检测图像中的边缘;主要原理是找到图像中灰度变化显著的区域,这些区域通常表示物体的边缘。
Canny边缘检测算法的步骤包括:
-
高斯滤波:对输入的图像进行平滑处理(平滑处理用到的是图像卷积和高斯核,高斯核是二维矩阵,卷积过程是将高斯核放在图像的每个像素点上,用高斯核中的值与对应像素点的值相乘,然后将所有这些乘积相加得到了新的像素值,新的像素值相对于原始的像素值变化会更小。),以减少噪声的影响。
-
计算梯度和方向:使用算子计算图像中的每个像素点的梯度。梯度的方向指示着最大灰度变化的方向,梯度的幅度表示变化的强度。得到的梯度图像包含了图像中灰度变化最剧烈的地方。(梯度是一个矢量,是有方向和幅度,梯度一般用来表示图像强度变化的快慢和方向,因为梯度是由图像的导数计算得来,而导数表示函数在某一点的变化率。)
-
非极大值抑制:对梯度图进行处理,保留局部梯度最大的像素,同时抑制非极大值。实现的效果是细化边缘,将边缘变得更窄,就可以得到更精确的边缘位置。(非极大值抑制的过程是:对梯度图上的每个像素,根据其梯度方向,确定在该方向上的两个相邻像素,然后检查当前像素的梯度幅度与其相邻像素的梯度比较,如果当前像素的梯度幅度大于两个相邻像素的梯度幅度,说明当前像素是局部梯度的最大值,需要保留该像素;反之,则将其值设为零,也就是抑制非极大值。)
-
滞后阈值:设定两个阈值,高阈值和低阈值。像素点的梯度值大于高阈值的被标记为强边缘,小于低阈值的被标记为非边缘,介于两者之间的被标记为弱边缘。(高阈值和低阈值一般是选择一个相对较高的值和相对较低的值,比较常见的比例是2:1或者3:1;也是可以根据具体实际情况进行调整。)
-
边缘跟踪和连接:通过连接强边缘像素,形成初始的边缘,然后,跟踪与强边缘像素直接相邻的弱边缘像素,将其标记为边缘。这样就可以延申强边缘,形成连续的边缘链。
这仅仅是我个人在学习过程中的一点理解,如果有任何错误,欢迎纠正。
暂无评论内容