Canny Edge检测器阈值给出不同的结果

时间:2014-07-21 10:00:25

标签: opencv edge-detection

我正在尝试找到图像的轮廓,在此之前我正在使用Canny的边缘检测器。 它为不同的图像提供了不同的结果。对于一个图像,它在阈值处给出了完美的轮廓 - 最小-40 max-240,而对于其他图像则为30-120。 我想让它变得通用。

1 个答案:

答案 0 :(得分:8)

在外行人看来,边缘检测需要一个阈值来判断应将哪些差异/变化计算为边缘。有关详细信息,请阅读here

因此,边缘取决于图像的内容,即亮度/暗度/对比度。 我建议你简单地找到整个灰度图像的平均值,并采取如下阈值:

min_threshold = 0.66 * mean

max_threshold = 1.33 * mean

我测试了它,它给出了令人印象深刻的结果。您可以使用中位数而不是平均值,结果几乎相同。另一种方法是首先均衡图像,然后尝试选择/实验的阈值。

但再次强烈建议尝试卑鄙的方法。如有任何疑问,请写在这里。

快乐编码:)