Main Content

边缘检测

在图像中,边缘是一条曲线,其走势与图像中强度快速变化的路径一致。边缘通常与场景中目标的边界相关联。边缘检测用于确定图像中的边缘。

要寻找边缘,您可以使用 edge 函数。此函数使用以下两个标准之一来寻找图像中强度迅速变化的位置:

  • 强度的一阶导数的模大于某个阈值的位置

  • 强度的二阶导数有过零点的位置

edge 提供几个导数估算器,其中每个都实现以下定义之一。对于其中一些估算器,您可以指定运算是否应对水平边缘、垂直边缘敏感或对两者都敏感。edge 返回二值图像,其中包含的 1 对应于找到边的位置,0 对应于其他位置。

edge 提供的最强大的边缘检测方法是坎尼方法。坎尼方法与其他边缘检测方法的不同之处在于,它使用两种不同阈值(用于检测强边缘和弱边缘),并且仅当弱边缘连通到强边缘时才在输出中包括弱边缘。因此,这种方法不太可能受到噪声的影响,更可能检测到真正的弱边缘。

检测图像中的边缘

此示例说明如何同时使用坎尼边缘检测器和索贝尔边缘检测器来检测图像中的边缘。

将图像读入工作区中并显示它。

I = imread('coins.png');
imshow(I)

将索贝尔边缘检测器应用于未滤波的输入图像。然后,将坎尼边缘检测器应用于未滤波的输入图像。

BW1 = edge(I,'sobel');
BW2 = edge(I,'canny');

将滤波后的图像并排显示,以进行比较。

tiledlayout(1,2)

nexttile
imshow(BW1)
title('Sobel Filter')

nexttile
imshow(BW2)
title('Canny Filter')