Matlab 不同边缘检测器的阈值是否具有可比性?

Matlab 不同边缘检测器的阈值是否具有可比性?,matlab,edge-detection,threshold,canny-operator,sobel,Matlab,Edge Detection,Threshold,Canny Operator,Sobel,我正在分析不同边缘检测器(Canny、Sobel和Roberts)的性能。Matlab为我们提供了函数edge,该函数的输入之一是参数阈值。我给了他们相同的阈值(=0.1)(Matlab自动生成Canny探测器的低阈值)。根据我编写的代码,结果是: (忽略日志检测器,我想我可以解释这些结果) 之后,我测试了这些相同的过滤器,但使用了不同的阈值(=0.8,这为Canny的检测器提供了0.32的低阈值)。但是,现在只有Canny检测与更强边缘相关联的边界(与边界相关联的更强梯度,以更高的对比度分隔

我正在分析不同边缘检测器(Canny、Sobel和Roberts)的性能。Matlab为我们提供了函数
edge
,该函数的输入之一是参数阈值。我给了他们相同的阈值(=0.1)(Matlab自动生成Canny探测器的低阈值)。根据我编写的代码,结果是:

(忽略日志检测器,我想我可以解释这些结果)

之后,我测试了这些相同的过滤器,但使用了不同的阈值(=0.8,这为Canny的检测器提供了0.32的低阈值)。但是,现在只有Canny检测与更强边缘相关联的边界(与边界相关联的更强梯度,以更高的对比度分隔结构):

!

我无法理解这些结果,因为如果Canny检测到更强的边界,而Sobel对更强的边界更敏感(正如我们看到的阈值=0.1,它几乎只检测强度的突变),那么为什么Sobel似乎没有计算出与Canny给出的梯度相比较的梯度估计


由此产生了另一个问题:Canny、Sobel和Roberts的阈值到底意味着什么?我会说它们是梯度大小的一个值,某种程度上是标准化的,因为它必须属于[0,1](我也不理解,标准化相对于什么?

不同的边缘检测器没有理由要求相同的阈值,因为它们对不同类型的边缘做出不同的响应(在对比度、锐度、噪声方面),没有阈值将分割相同的边缘集


此外,公式可以有不同的“比例因子”,具体取决于实现。如果您在同一图像上选择适合不同方法的阈值,则阈值将在其他图像上按比例变化。

不同的边缘检测器没有理由要求相同的阈值,因为它们对不同类型的边缘作出不同的响应(在对比度、锐度、噪声方面),没有阈值将分割相同的边缘集


此外,公式可以有不同的“比例因子”,具体取决于实现。如果您在同一图像上为不同的方法选择适合您的阈值,则阈值将在其他图像上按比例变化。

为什么您希望阈值具有可比性?对于所有方法,阈值越高,意味着边缘越少。但您需要调整这些阈值是的,我知道较高的阈值意味着较少的边缘(和较强的边缘)。但我不理解方法之间的阈值差异:为什么canny给出的阈值=0.8的边界与sobel检测到的阈值=0.1的边界相似?为什么sobel方法的强边与阈值=0.1和canny阈值=0.8关联?记住canny使用不同的、较低的阈值来查找ed您可以看到。它只是根据每个边缘至少有一个像素高于高阈值来选择它们。对于Sobel,选择一个更大的阈值会导致没有边缘,而不是弱边缘。所有边缘都低于该阈值。键入
编辑边缘
查看这些算法的实现情况(10年前是一个M文件,现在还不确定)。根据灰度范围进行标准化。通常,0-255映射为0-1。为什么您希望阈值具有可比性?对于所有方法,较高的阈值意味着较少的边。但您需要为每个方法分别调整这些阈值。是的,我理解较高的阈值意味着较少的边(和较强的边)。但我不理解方法之间的阈值差异:为什么canny给出的阈值=0.8的边界与sobel检测到的阈值=0.1的边界相似?为什么sobel方法的强边与阈值=0.1和canny阈值=0.8关联?记住canny使用不同的、较低的阈值来查找ed您可以看到。它只是根据每个边缘至少有一个像素高于高阈值来选择它们。对于Sobel,选择一个更大的阈值会导致没有边缘,而不是弱边缘。所有边缘都低于该阈值。键入
编辑边缘
查看这些算法的实现情况(10年前是一个M文件,现在还不确定)。根据灰度范围进行标准化。通常,0-255映射为0-1。