[英]Canny edge detector with a single threshold value
我正在尝试将一些Matlab代码移植到C ++。 我碰到过这条线:
edges = edge(gray,'canny',0.1);
样本图像的输出是全黑图像。 我想使用cv :: Canny重现相同的行为。 低阈值和高阈值应使用什么值?
样品:
输出:
在上面的行中,您尚未定义阈值,那么阈值可能为零,从而产生黑色图片。 另外,您使用的西格玛值为0.1,这意味着在Canny的第一步中几乎没有高斯模糊。 在Matlab中,您可以通过以下方式获得优化的阈值:
[~, th] = edge(gray,'canny');
然后应用优化的阈值th乘以某个因子f(根据我的经验f应该在1-3之间),您必须尝试一下:
edges=edge(gray,'canny',f*th,'both', sigma);
默认情况下,sigma是sqrt(2)(您使用的是上面的0.1)。 以下说明:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.