边缘检测算法中为什么阈值影响检测效果
发布网友
发布时间:2022-03-30 04:52
我来回答
共1个回答
热心网友
时间:2022-03-30 06:22
canny边缘检测的实现大致有4步:1.高斯滤波对图像去噪。2.由原始灰度图求出纵横2个梯度图,以及综合梯度图(求梯度的算子很多)。3.结合3个 梯度图来进行非极大抑制(此步一过,检测的图像边缘已经很细了)4.进行边缘连接(个人感觉这一步虽叫连接,算法也确实体现了连接的行为,但那是强边缘到 弱边缘的连接,所有可能连接的点都出不了非极大抑制后的范围,所以这一步更准确的目的应该是在非极大抑制的结果中去除假边缘保留真边缘,同时又能让保留的 边缘尽量连贯真实)5.对边缘进行细化(这步在matlab的canny算法中有,但是考虑到通过以上4步尤其是第3步得到的边缘已经很细,一般没有再对 边缘进行细化的必要,因此,此步可以省略)
上述4步中,前两步比较简单,实现的关键在于后两步。这里对第二步也概括的说一下,求纵横梯度的算子是很多的,像3×3的sobel算子,其卷积核是 [1,0,-1;1,0,-1;1,0,-1]和[1,1,1;0,0,0;-1,-1,-1];2×2的robert算子,其卷积核是 [1,-1;1,-1]和[1,1;-1,-1]。而我们学习matlab中canny检测的算法,在第一步滤波和第二步求纵横梯度时用的都是高斯模版。 注意,滤波的模版系数之和为1,求梯度的模版系数之和为0,这是卷积模版的一个规律。我们滤波和求梯度的模版都是二维的高斯模版,但是用纵横2次两个一维 的高斯卷积模版进行卷积可以达到和一个二维模版一样的效果,同时减小了总计算量,所以,在第一步滤波的时候我们用两个一维高斯模版代替一个二维高斯模版, 但是第二步的高斯模版牵扯到梯度方向,所以还是用一个二维的高斯模版来直接卷积。