【发布时间】:2013-06-18 09:24:14
【问题描述】:
是否可以让Canny 忽略短边缘或忽略低梯度边缘?就我而言,我的卡片放在木头上,经过精明后看到许多木结构边缘
canny 函数中有哪两个阈值?
【问题讨论】:
标签: opencv computer-vision edge-detection
是否可以让Canny 忽略短边缘或忽略低梯度边缘?就我而言,我的卡片放在木头上,经过精明后看到许多木结构边缘
canny 函数中有哪两个阈值?
【问题讨论】:
标签: opencv computer-vision edge-detection
大的强度梯度更可能对应于边缘而不是 小的强度梯度。在大多数情况下,无法指定 给定强度梯度切换的阈值 对应一个边缘不这样做。因此 Canny 使用 带有滞后的阈值。
带有滞后的阈值需要两个阈值——高和低。 假设重要边应该是连续的 图像中的曲线使我们能够跟随给定的微弱部分 线并丢弃一些不构成线的噪声像素 但产生了很大的梯度。因此,我们首先应用一个 高门槛。这标志着我们可以相当肯定的边缘 真的。从这些开始,使用方向信息 较早推导出来,可以通过图像追踪边缘。追踪时 边缘,我们应用较低的阈值,允许我们追踪微弱 只要我们找到一个起点,就可以找到边缘的部分。
一旦这个过程完成,我们就有了一个二进制图像,其中每个像素 被标记为边缘像素或非边缘像素。从 边缘跟踪步骤的互补输出,二进制边缘图 这样得到的也可以看作是一组边曲线, 在进一步处理后可以表示为多边形 图像域。
另见:
阈值:使用具有滞后的两个阈值允许更多 比单阈值方法更灵活,但普遍存在问题 的阈值方法仍然适用。阈值设置太高可能 错过重要信息。另一方面,阈值设置过低 会错误地将不相关的信息(例如噪音)识别为 重要的。很难给出一个行之有效的通用阈值 在所有图像上。还没有经过试验和测试的方法来解决这个问题 存在。
在您的情况下,您可能可以稍微增加阈值,看看它是否会进一步减少短线。
更新:
对于这张图片,我可能会通过对其应用较低的对比度来对其进行预处理。这有助于在通过模糊和线检测器运行图像之前稍微减少图像背景中的细节。
【讨论】:
在Canny 之前使用GaussianBlur() 将有助于删除许多不需要的细节。并且可能像@Ken 建议的那样增加低阈值
【讨论】:
blur()。即高斯会有所帮助吗?我还注意到,模糊不仅可以消除噪点,而且还可以模糊边缘以进行精确检测。
GaussianBlurr() 是更适合使用的过滤器。 blur() 只是一个盒子过滤器,可以引入工件。尝试一下不会有任何损失。