Matlab:canny边缘检测器

Matlab:canny边缘检测器,matlab,edge-detection,Matlab,Edge Detection,Matlab版本:7.8.0(R2009a) 我使用Canny边缘检测器和标准的“边缘”功能从图像中获取边缘。但对于我的项目,我需要得到中间梯度幅值矩阵。即每个像素的梯度幅值 我知道我们可以使用imgradientxy()来实现,但我需要canny给出的精确结果,我不知道Matlab用于canny的实现。有没有办法做到这一点,或者我必须从头开始实施canny 背景:我基本上是在更改canny检测到的边缘上某些像素的强度值。我需要知道,更改后,当使用新值计算梯度时,它们是否仍在阈值之下?要在Mat

Matlab版本:7.8.0(R2009a)

我使用Canny边缘检测器和标准的“边缘”功能从图像中获取边缘。但对于我的项目,我需要得到中间梯度幅值矩阵。即每个像素的梯度幅值

我知道我们可以使用imgradientxy()来实现,但我需要canny给出的精确结果,我不知道Matlab用于canny的实现。有没有办法做到这一点,或者我必须从头开始实施canny


背景:我基本上是在更改canny检测到的边缘上某些像素的强度值。我需要知道,更改后,当使用新值计算梯度时,它们是否仍在阈值之下?

要在Matlab中找到Canny边缘检测器的实现,您只需打开文件(
编辑边缘
),因为该函数不是内置的。这样,您就可以检查Matlab版本中使用的过滤和梯度方案。

@Andrey:谢谢。我忘了我在路径上有自己的函数
canny
。)那太好了。它解决了我的问题。我认为边函数是用C语言编写的,作为matlab的库。谢谢lot@MangatRai:这种情况可能会在将来发生,但是旧版本的Matlab仍然有很多函数是用Matlab编写的。这意味着不是内置的
canny
?如果不对matlab路径或文件进行任何操作,
edge(图像“canny”)
似乎是有效的(使用matlab R2012b)。@solvingPuzzles:matlab speak中的“内置”表示函数已编译,这意味着您无法再看到源代码。您可以调用内置函数作为
builtin('fcnName')
,这在重载时很有用。