用于 Open CV 中轮廓估计的 Canny Edge 与阈值

roh*_*was 2 opencv image-processing contour computer-vision canny-operator

我正在将 Open CV 用于涉及图像轮廓估计的图像处理应用程序。我想知道的是对图像进行阈值处理(就像他们在此处所做的那样)或使用 Canny Edge 算法(此处)是否会产生更好的结果。这是否涉及算法分析还是我遗漏了什么?

ray*_*ica 5

显然是 Canny 边缘检测。它做了很多事情来确保只有强大的边缘才能从结果中出来。阈值只是看强度,看看每个值是更小还是更大,我们分别得到“边缘”点。 然而,取决于场景的复杂性,阈值和边缘检测会产生同样的结果。例如,如果您有一个干净的图像,其中包含多个清晰的对象,并且前景和背景之间的强度差异明显,那么边缘检测或阈值处理都可以使用。如果您有一个更复杂的图像,其中不同区域的对比度不同,或者如果您有多个强度不同的对象,那么阈值将不会给您带来好的结果,因为您将不可避免地包含不属于任何适当的像素对象。这就是边缘检测更好的原因,因为它是一个本地操作符,并且阈值是全局的。阈值化对每个像素应用一套原则在图像中。边缘检测将您的图像分解为补丁,并确定每个补丁中是否发生了某些事情。


如果要从中取出一些东西,它们之间的区别在于阈值化更多地用于对象提取,而边缘检测是处理管道中的预处理步骤,例如轮廓估计,对象检测和识别以及特征分析。阈值是一种相当快速和肮脏的方式来查看是否正在发生某些事情,或者提取“活动”事物,而边缘检测更多地用于计算机视觉相关任务。


我将向您介绍一些文献,而不是解释 Canny 边缘检测如何更好。


希望这可以帮助!