是否可以让Canny忽略短边缘或忽略低梯度边缘?就我而言,我的卡片放在木头上,经过精明后看到许多木结构边缘
canny 函数中的两个阈值是什么?
与小强度梯度相比,大强度梯度更可能对应于边缘。在大多数情况下,不可能指定给定强度梯度从对应于边缘切换到不这样做的阈值。因此 Canny 使用带有滞后的阈值。
带有滞后的阈值需要两个阈值——高和低。假设重要的边缘应该沿着图像中的连续曲线,我们可以跟踪给定线的微弱部分,并丢弃一些不构成线但产生大梯度的噪声像素。因此,我们首先应用一个高阈值。这标志着我们可以相当肯定是真实的边缘。从这些开始,使用先前导出的方向信息,可以通过图像追踪边缘。在追踪边缘时,我们应用较低的阈值,只要我们找到起点,就可以追踪边缘的微弱部分。
一旦这个过程完成,我们就有了一个二进制图像,其中每个像素都被标记为边缘像素或非边缘像素。从边缘追踪步骤的互补输出中,以这种方式获得的二进制边缘图也可以被视为一组边缘曲线,经过进一步处理可以表示为图像域中的多边形。
也可以看看:
阈值:使用具有滞后的两个阈值比单阈值方法具有更大的灵活性,但阈值方法的一般问题仍然适用。阈值设置得太高可能会错过重要信息。另一方面,阈值设置过低会错误地将不相关的信息(如噪声)识别为重要信息。很难给出一个适用于所有图像的通用阈值。尚不存在解决此问题的久经考验的方法。
在您的情况下,您可能可以稍微增加阈值以查看它是否会进一步减少短线。
更新:
对于这张图片,我可能会通过对其应用较低的对比度来对其进行预处理。这有助于在通过模糊和线检测器运行图像之前稍微减少图像背景中的细节。
之前使用GaussianBlur()Canny
将有助于删除许多不需要的细节。并且可能像@Ken 建议的那样增加低阈值