边缘检测一般步骤
- 滤波。 边缘检测算法主要基于图像强度的一阶和二阶导数,但噪声会很大程度地影响导数,故采用滤波器降噪。
- 增强。
- 检测。
边缘检测的主要评价标准
- 低错误率。 标识出尽可能多的实际边缘。
- 高定位性。 标识出的边缘要与图像的实际边缘尽可能近。
- 最小响应。 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识成边缘。
Canny算子
具体步骤:
-
消除噪声。 使用高斯平滑滤波器卷积降噪。
-
计算梯度幅值和方向。
梯度幅值
方向
-
非极大值抑制。 排除非边缘像素,仅保留细线条。
-
滞后阈值。
(1)若某一像素位置的幅值超过高阈值,该像素被保留为边缘像素。
(2)若某一像素位置的幅值小于低阈值,该像素被排除。
(3)若某一像素位置的幅值在两个阈值之间,该像素被排除。
void Canny(InputArray image,
OutputArray edges,
double threshold1,
double threshold2,
int apertureSize = 3,
bool L2gradient = false)
参数详解:
- 第一个参数:输入图像。单通道8位图像。
- 第二个参数:输出的边缘图。和输入图像有一样的尺寸和类型。
- 第三个参数:第一个滞后性阈值。
- 第四个参数:第二个滞后性阈值。
程序实例
# include<>