我正在分析不同边缘检测器(Canny,Sobel和Roberts)的性能。 Matlab为我们提供了函数edge
,该函数具有参数阈值作为其输入之一。我对所有这些对象都设置了相同的阈值(= 0.1)(Matlab自动为Canny探测器生成了低阈值)。根据我编写的代码,结果是:
(忽略了LoG检测器,我想我可以解释这些结果)。
在那之后,我测试了那些相同的滤波器,但是阈值不同(= 0.8,这为Canny的检测器提供了0.32的低阈值)。但是,现在只有Canny可以检测到与较强边缘相关的边界(与将具有较高对比度的结构分开的边界相关联的较强梯度):
!shows same results for higher threshold, some methods don’t find any edges
我无法理解这些结果,因为如果Canny检测到更强的边界,而Sobel对更强的边界更敏感(如我们所见,阈值= 0.1,它几乎只能检测到强度的突然变化),那么为什么Sobel似乎没有计算可与Canny给出的估计值相比的估计值?
随之而来的另一个问题是:Canny,Sobel和Roberts的阈值到底意味着什么?我会说它们是梯度大小的值,以某种方式归一化,因为它必须属于[0,1](我也不理解,相对于什么归一化?)
答案 0 :(得分:0)
不同的边缘检测器没有理由要求相等的阈值,因为它们对不同类型的边缘有不同的响应(就对比度,清晰度,噪声而言),并且没有阈值会分割相同的边缘集。
此外,取决于实现方式,公式可以具有不同的“缩放因子”。最好的希望是,如果您在同一张图像上选择适合不同方法的阈值,则这些阈值将在其他图像上成比例地变化。