数字图像处理 MATLAB 中的图像边缘检测算子

2025年3月17日 | 阅读13分钟

引言

边缘检测是数字图像处理中一个重要的步骤,它旨在定位图像中对象的边界或边缘。它是许多计算机视觉和图像分析任务(包括对象识别、分割和特征提取)中的重要步骤。为了实现这一目标,随着时间的推移,人们开发了多种边缘检测算子或算法,每种算法都有其优点和缺点。在这篇文章中,我们将介绍一些在数字图像处理中常用的边缘检测技术。

  • 数字图像必须具有边缘,因为它们代表了强度方面重要的局部变化。
  • 它们充当图像不同区域之间的边界,并为多种图像处理和计算机视觉任务提供关键数据。

让我们探讨三种主要的边缘类别

  • 水平
  • 垂直
  • 对角线

水平边缘: 在图像中,当色调或强度突然变化时会创建水平边缘。这些边缘通常表示区域或主要是水平物体之间的过渡或边界。

水平边缘示例

  • 线条将风景图像中的天空和地球分开。
  • 建筑物屋顶线与背景的对比。
  • 图片中宁静的湖水线。

Sobel 或 Prewitt 算子等边缘检测算法旨在突出水平方向的变化,常用于识别水平边缘。

垂直边缘: 相反,垂直边缘是图像中色调或强度的突然变化。这些边缘经常表示具有主要垂直属性的区域或对象之间的边界或过渡。

垂直边缘示例

  • 房间图片中门框的边界。
  • 城市天际线中高大建筑物的限制。
  • 与对比背景相对的树干。

检测垂直方向变化的边缘检测算法,类似于水平边缘,可用于识别垂直边缘。

对角线边缘: 对角线边缘显示色调或强度不是严格水平或垂直的变化。虽然不太常见,但这些边缘在某些情况下可能很重要,例如具有倾斜物体或复杂纹理的照片。

对角线边缘示例

  • 风景图片中山脉的倾斜边缘。
  • 带有对角线条纹的斑马皮毛。
  • 倾斜路标的角落。

找到对角线边缘可能比水平或垂直边缘更棘手。它可能需要更先进的边缘检测方法,例如 Canny 边缘检测器或应用 Gabor 滤波器,考虑不同的方向或方向。

边缘检测

边缘检测使数字图像处理系统能够突出显示感兴趣区域,从而促进图像内容的分析和理解。通过突出显示灰度或强度的主要变化,边缘检测有助于识别对象边界、纹理和特征。此技术使各种应用程序能够有效地从照片中提取重要数据。

  • 模式识别、图像形态学和特征提取都严重依赖边缘检测,这是数字图像处理中的一项关键技术。
  • 它通常用于识别图像中不同对象或区域之间的边界和过渡,并将图像分割成不连续区域。

其意义和用途简要说明如下

模式识别: 图像中物体或模式的识别和分类是模式识别的目标。由于边缘检测,找到物体的边缘使其更容易区分一个物体与另一个物体。

图像形态学: 使用腐蚀和膨胀等技术操纵图像的形状和结构被称为图像形态学。

特征提取: 对于图像分析任务,包括对象跟踪、人脸识别和基于内容的图像检索,必须从图像中提取相关特征。

分割: 图像分割涉及将其分割成有用的区域或项目。此过程从边缘检测开始,它定位对象或位置之间可能的边界。

数据缩减: 边缘检测有可能在保持重要结构信息的同时,最大限度地减少图像中的数据量。这是它的优点之一。后续过程可以专注于由发现的边缘识别的感兴趣区域,而不是处理整个图像。这提高了图像传输和存储的效率并加快了处理速度。

Image Edge Detection Operators in Digital Image Processing MATLAB

根据其基本思想和方法,边缘检测算子大致可分为两类

基于梯度的边缘检测算子

Sobel 算子: 计算图像强度函数的梯度近似值以进行边缘检测。垂直和水平导数近似值通过与两个核进行卷积来计算,一个用于检测垂直边缘,另一个用于检测水平边缘。

Prewitt 算子: Prewitt 算子与 Sobel 算子一样,使用与特定核的卷积来识别图像的垂直和水平边缘。

Robert 算子: Robert 算子是另一个使用梯度确定边缘梯度的算子,它将图像中对角相邻像素之间的差值平方相加。

基于高斯的边缘检测算子

Canny 边缘检测器: 这种流行的边缘检测方法结合了基于梯度的边缘检测和高斯平滑。

高斯拉普拉斯算子 (LoG): 这是一种基于高斯的算子,它使用高斯函数平滑图像,然后计算拉普拉斯算子以寻找边缘。它可以在不同尺度上检测边缘,并且对快速的强度变化敏感。

  • 这两种边缘检测算子适用于各种图像处理设置,因为每种都有优点和缺点。

Sobel算子

Sobel 算子是数字图像处理中一种流行的基于梯度的边缘检测方法。它用于通过强调强度快速变化的区域来定位图像内的边缘。它以其创建者 Irwin Sobel 的名字命名。Sobel 算子主要关注沿垂直(沿 y 轴)和水平(沿 x 轴)方向查找边缘。这是通过计算图像强度函数的梯度近似值来实现的。

下面详细解释 Sobel 算子

数学表示

Sobel 算子将图像与两个 3x3 卷积核或掩码进行卷积:Sobel Y 用于水平边缘,Sobel X 用于垂直边缘。

以下描述了这些核

垂直边缘检测 Sobel X

M_x = -1 0 1

-2 0 2

-1 0 1

Sobel Y(水平边缘检测)

M_y = -1 -2 -1

  • 0 0
  • 2 1

操作

卷积: Sobel 算子在这些核和输入图片之间进行卷积。此卷积操作应用于每个图像像素以计算近似的垂直和水平导数。

计算梯度大小 涉及在卷积后创建两个梯度图片,一个用于垂直变化(Sobel Y),一个用于水平变化(Sobel X)。这些图片显示了强度在每个方向上变化的快慢。

组合大小: Sobel 算子通常组合垂直和水平梯度的幅值数据以生成单个梯度图像

优点

简单性: Sobel 算子相当容易理解和使用。

计算效率: 它在计算上是有效的,只需要简单的算术计算。

Sobel 提供有关边缘的方向信息,使得识别具有特定方向的边缘变得实用。

它擅长识别连续、平滑的边缘。

局限性

  • Sobel 算子可能对图像噪声敏感,这可能导致错误的检测。
  • 它在识别对角线边缘或具有更复杂方向的边缘时可能效率较低。
  • Sobel 可以检测粗而粗糙的边缘,这可能只适用于某些应用。

Sobel 算子是边缘检测的基本且流行技术。它通过计算梯度近似值提供了一种定位数字图像中边缘的简单方法。在为特定任务选择边缘检测技术时,重要的是要考虑其对噪声的敏感性以及在检测对角线边缘方面的局限性,尽管它对许多应用很有用。

Prewitt算子

Prewitt 算子是数字图像处理中另一种基于梯度的边缘检测方法,用于在图像中查找边缘。Prewitt 算子与 Sobel 算子一样,关注强度或颜色急剧变化的区域,这表明存在边缘。它在区分照片中的垂直和水平边界方面非常出色,并以其创建者 Judith M. S. Prewitt 的名字命名。

下面详细解释 Prewitt 算子

数学表示

使用 Prewitt 算子,图像使用两个 3x3 卷积核或掩码进行卷积,一个用于识别水平边缘(Prewitt X),另一个用于识别垂直边缘(Prewitt Y)。以下描述了这些核

使用 Prewitt X 进行水平边缘检测

M_x = [-1 0 1

-1 0 1

-1 0 1]

Prewitt Y(垂直边缘检测)

M_y = [-1 -1 -1

  • 0 0

1 1 1]

操作

卷积: Prewitt 算子将输入图像和这些核进行卷积。此卷积过程计算每个图像像素的垂直和水平导数近似值。

梯度幅值计算: 卷积过程中会创建两个梯度图片,一个用于识别垂直变化(Prewitt Y),另一个用于识别水平变化(Prewitt X)。这些图片显示了强度在每个方向上变化的快慢。

组合幅值: 为了生成单个梯度幅值图像,Prewitt 算子通常组合垂直和水平梯度的幅值数据。与 Sobel 算子一样,通过计算垂直和水平方向上平方梯度值的总和的平方根来计算每个像素的梯度幅值。

优点

  • Prewitt 算子非常擅长发现垂直和水平边缘,使其适用于边缘方向很重要的场景。
  • 图像内部的边缘方向可以使用方向检测来确定。
  • 与 Sobel 算子一样,Prewitt 算子易于理解和使用。

局限性

固定系数: 与其他几种边缘检测方法相比,Prewitt 算子的系数是固定的,不能根据图像的独特属性进行修改。

对角线边缘: 它在识别对角线或其他类型的边缘时可能效率较低。Prewitt 算子可能对图像噪声敏感,导致错误的边缘检测。

Robert 算子

在数字图像处理中,Robert 算子,即 Roberts 交叉算子,是一种简单的基于梯度的边缘检测方法,用于定位图像中的边缘。

  • 它特别有助于看到对角线边缘,并以其创建者 Lawrence Roberts 的名字命名。
  • Robert 算子通过将图像中对角相邻像素之间的差值的平方相加来确定边缘梯度。

Robert 算子下面详细解释

数学表示

Robert 算子采用两个 2x2 卷积核或掩码,Robert X 和 Robert Y,分别用于检测从左上到右下和从右上到左上的对角线边缘

Robert X(左上到右下对角线边缘检测)

M_x = [1 0

0 -1]

Robert Y(对角线边缘检测 - 右上到左下)

M_y = [0 1

-1 0]

操作

卷积: Robert 算子对输入图片和这些核应用卷积。此卷积过程计算每个图像像素的对角线导数估计值。

梯度幅值计算: 卷积后,创建两个梯度图片,一个用于识别从左上到右下的对角线边缘(Robert X),另一个用于识别从右上到左下的对角线边缘(Robert Y)。

组合幅值: 通常,Robert 算子通过组合两个对角线梯度的幅值数据来创建单个梯度幅值图像。

优点

Robert 算子在对角线特征占主导地位的应用中效率很高,因为它专门用于检测对角线边缘。

简单性: Robert 算子易于使用,就像其他基本的基于梯度的算子一样。

对角线边缘的保留: 由于其设计,它有效地保留了对角线边缘。

局限性

Robert 算子可能对图像噪声敏感,导致错误的边缘检测。

仅限于对角线边缘: 它可能不如其他边缘检测技术灵活,并且在检测垂直或水平边缘时可能效率较低。

  • Robert 算子是一种基于梯度的边缘检测技术,专注于发现数字图像中的对角线边缘。
  • 虽然它是一种非常简单的方法,但当对角线边缘特征有趣时,它可能会很有用。
  • 应根据特定图像和应用要求评估任何边缘检测方法的性能。

高斯拉普拉斯 (LoG)

高斯拉普拉斯 (LoG) 算子,有时也称为 Marr-Hildreth 算子,是数字图像处理中一种常见的边缘检测方法。它结合了拉普拉斯算子和高斯平滑,这是图像处理中的两个关键思想。LoG 算子突出显示强度或颜色突然变化的区域以检测图片中的边缘。

  • Marr-Hildreth 算子,也称为高斯拉普拉斯 (LoG),结合了高斯平滑和拉普拉斯算子来检测数字图像中的边缘。
  • 由于其多尺度功能和旋转不变性,它是许多图像处理应用程序的有用工具。同时,它可能需要仔细的参数优化才能解决对噪声的敏感性和定位问题。

下面详细解释 Marr-Hildreth 算子 (LoG)

数学表示

Marr-Hildreth 算子的两个主要阶段如下

高斯平滑: 第一步,输入图像必须进行高斯平滑。图像噪声通过高斯平滑减少,但保留了重要的边缘。图像与高斯核进行卷积。平滑量受核大小选择(由标准差定义)的影响。此过程会产生模糊且噪声较少的图像。

拉普拉斯运算: 图像使用高斯核进行平滑,然后使用拉普拉斯算子确定图像的拉普拉斯。关于图片空间坐标(x 和 y)的二阶导数之和用于确定其拉普拉斯。

第一阶段平滑的图像是 G(x,y)。

操作

输入图像使用具有指定值的高斯核进行卷积,以生成平滑、降噪的图像。

拉普拉斯运算: 对平滑后的图像应用拉普拉斯算子,以生成高斯拉普拉斯 (LoG) 图像。

优点

  • LoG 算子可以在多个尺度上进行边缘检测,从而可以找到具有一系列厚度和强度的边缘。
  • 各个方向上的固定属性:由于其属性在各个方向上都是固定的,因此它具有旋转不变性。

局限性

对噪声的敏感性: LoG 算子与其他边缘检测技术一样,对噪声敏感,这可能导致错误的检测或噪声响应。

LoG 算子可能会沿着弯曲边缘出现定位错误,这可能会损害边缘检测的精度。

复杂计算: 与其他边缘检测技术相比,LoG 算子需要更多的计算机工作,因为它需要与高斯核进行卷积和随后的拉普拉斯运算。

Canny 算子

Canny 边缘检测器,通常称为 Canny 算子,是数字图像处理中备受推崇的边缘检测方法。它由 John F. Canny 于 1986 年创建,由于其在检测边缘、减少噪声和生成细而清晰的边缘轮廓方面的精确性,它仍然是首选。Canny 算子使用多步过程精确检测边缘。

  • Canny 边缘检测器是一种强大的边缘检测方法,以准确识别数字图像中的边缘而闻名。
  • 作为众多图像处理应用程序的有用工具,其多阶段过程有助于消除噪声、生成细边缘轮廓和连接边缘片段。

Canny 算子下面详细解释

检测 Canny 边缘的方法

Canny 边缘检测器有多个阶段,包括

高斯平滑: 在第一步中,输入图像必须进行高斯平滑。图像噪声通过高斯平滑减少,但保留了重要的边缘。图像与高斯核进行卷积。平滑量受核大小选择(由标准差定义)的影响。此过程会产生模糊且噪声较少的图像。

计算梯度: 在此阶段,确定平滑图像的梯度以评估强度变化的大小和方向。图像在 x 和 y 方向上的梯度通常使用 Sobel 算子确定。

通过组合 x 和 y 梯度并应用勾股定理来计算每个像素的梯度幅值。

抑制不足

非极大值抑制用于生成狭窄且清晰的边缘。

  • 非极大值抑制将每个像素的梯度幅值与梯度方向上其邻居的梯度进行比较。
  • 梯度的最大像素(称为局部最大值)被保留,而其余的则被抑制。这确保只保留最明显的边缘。

基于滞后的边缘跟踪

基于滞后的边缘跟踪使连接边缘片段和消除弱的、错误的边缘变得更容易。

  • 双阈值技术定义了一个高阈值 (T_high) 和一个低阈值 (T_low)。
  • 强边缘被视为梯度幅值大于 T_high 的像素,并且无疑存在于边缘图中。潜在的弱边缘是梯度幅值介于 T_low 和 T_high 之间的像素。

边缘跟踪用于跟踪潜在的弱边缘,如果它们连接到强边缘,则将其包含在边缘图中。

优点

  • Canny 算子以其精确的边缘检测而闻名,从而在图像中产生清晰的边缘。
  • 高斯平滑步骤的图像噪声减少使边缘检测更加准确。
  • 算子生成狭窄的边缘轮廓,使其非常适合各种图像处理任务。

局限性

复杂计算: Canny 算子比简单的边缘检测方法需要更多的计算,因为它经过多个阶段。

参数调整: 为了获得最佳结果,可能需要尝试高低阈值和高斯核大小的不同值。

对阈值敏感: Canny 算子的性能在很大程度上取决于选择适当的阈值,这可能很困难。

图像边缘检测在现实世界中的应用

边缘检测是数字图像处理中的基本方法,在各个行业中都有许多实际用途。

以下是一些详细的边缘检测应用示例

  • 解剖结构检测: 在医学成像中,边缘检测对于定位和突出显示 X 射线、CT 和 MRI 图像中的解剖结构至关重要。它有助于规划有效的诊断和治疗。
  • 物体识别和检测

边缘检测是一种卫星和航空成像技术,用于发现和识别物体或结构。这对于城市规划、灾害救援和环境监测等工作至关重要。

  • 商业检测: 边缘检测是一种质量控制技术,用于制造中检查产品是否有缺陷或异常。它可以发现制造商品上的表面缺陷、裂缝和缺失部件。
  • 机器人技术: 机器人采用边缘检测来在其环境中寻找物体和障碍物。物体定位。这有助于自动化组装、物体操作和导航。
  • 车道检测: 自动驾驶汽车采用边缘检测来定位道路上的车道标记。此信息对于安全导航和车辆控制至关重要。
  • 生物识别: 边缘检测在人脸识别系统中用作预处理步骤。它有助于分离个人面部特征并提高人脸识别算法的精度。
  • JPEG 压缩: 使用 JPEG 格式压缩图像时,会保留边缘信息。通过保留重要特征,这有助于保持图像质量。
  • 指纹识别: 指纹分析:边缘检测用于恢复每个人的指纹特有的脊线和细微点,并用于生物识别。
  • 文档评估文本提取: OCR(光学字符识别)系统中的边缘检测有助于将扫描文档中的文本与背景区分开来,从而更容易识别和数字化文本。
  • 作物健康监测: 边缘检测在遥感应用中用于跟踪作物健康并发现植被变化,这支持精准农业。
  • 法医学: 边缘检测算法在法医调查中检查照片并发现可能的篡改或修改。