Canny边缘检测算法(python 实现)

1. 应用高斯滤波来平滑(模糊)图像,目的是去除噪声

2. 计算梯度强度和方向,寻找边缘,即灰度强度变化最强的位置

Canny边缘检测算法(python 实现)_第1张图片

3应用非最大抑制技术NMS来消除边误检模糊(blurred)的边界变得清晰(sharp)。保留了每个像素点上梯度强度的极大值,而删掉其他的值。对于每个像素点,进行如下操作:

Canny边缘检测算法(python 实现)_第2张图片Canny边缘检测算法(python 实现)_第3张图片

4应用双阈值的方法来决定可能的(潜在的)边界。(去除噪点)

设定一个阈值上界maxVal和阈值下界minVal,图像中的像素点如果大于阈值上界则认为必然是边界(称为强边界,strong edge),小于阈值下界则认为必然不是边界,两者之间的则认为是候选项(称为弱边界,weak edge),需进行进一步处理——如果与确定为边缘的像素点邻接,则判定为边缘;否则为非边缘。

5. 利用滞后技术来跟踪边界。和强边界相连的弱边界认为是边界,其他的弱边界则被抑制。
由真实边缘引起的弱边缘像素将连接到强边缘像素,而噪声响应未连接。为了跟踪边缘连接,通过查看弱边缘像素及其8个邻域像素,只要其中一个为强边缘像素,则该弱边缘点就可以保留为真实的边缘。

edge = cv2.Canny(image, threshold1, threshold2
                [, edges[, apertureSize[, L2gradient ]]])
方括号表示参数是可选的,你可以选择性地提供该参数。

你可能感兴趣的:(算法)