检测指标
低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报。
高定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。
最小响应: 图像中的边缘只能标识一次。
提示:以下是本篇文章正文内容,下面案例可供参考
一、步骤
消除噪声。 使用高斯平滑滤波器卷积降噪。 下面显示了一个 的高斯内核示例:
计算梯度幅值和方向。 此处,按照Sobel滤波器的步骤:
运用一对卷积阵列计算x及y方向的梯度。
梯度方向近似到四个可能角度之一(一般 0, 45, 90, 135)
通过x及y方向的梯度值计算,可以解出梯度的角度。
对梯度结果进行非极大值抑制。 这一步排除非边缘像素, 仅仅保留了一些细线条(候选边缘)。
非极大值抑制,简称为NMS算法,英文为Non-Maximum Suppression。其思想是搜素局部最大值,抑制极大值。NMS算法在不同应用中的具体实现不太一样,但思想是一样的。非极大值抑制,在计算机视觉任务中得到了广泛的应用,例如边缘检测、人脸检测、目标检测(DPM,YOLO,SSD,Faster R-CNN)等。
IoU:intersection-over-union,即两个边界框的交集部分除以它们的并集。
非极大值抑制的流程如下:
根据置信度得分进行排序
选择置信度最高的比边界框添加到最终输出列表中,将其从边界框列表中删除
计算所有边界框的面积
计算置信度最高的边界框与其它候选框的IoU。
删除IoU大于阈值的边界框
重复上述过程,直至边界框列表为空。
滞后阈值: 最后一步,Canny 使用了滞后阈值,滞后阈值需要两个阈值(高阈值和低阈值):
如果某一像素位置的幅值超过 高 阈值, 该像素被保留为边缘像素。
如果某一像素位置的幅值小于 低 阈值, 该像素被排除。
如果某一像素位置的幅值在两个阈值之间,该像素仅仅在连接到一个高于高阈值的像素时被保留。
void cv::Canny(InputArrayimage,(输入图像:8-bit)OutputArrayedges,(输出边缘图像:单通道,8-bit,size与输入图像一致)doublethreshold1,(阈值1)doublethreshold2,(阈值2)intapertureSize=3,(Sober算子大小)boolL2gradient=false(是否采用更精确的方式计算图像梯度)