数字图像处理(7):图像分割

Last updated on December 11, 2025 pm

这是SJTU-CS3324《数字图像处理》课程的知识点整理系列。本文整理部分为“第 7 章:图像分割”。

边缘检测 (Edge Detection)

1. 边缘检测的基本概念

  • 定义与目的: 边缘检测是检测图像中有意义的不连续性最常用、最基本的方法
    • 这些不连续性通常指示了图像中重要的结构信息
    • 精确的边缘检测依赖于以一种有意义的方式来衡量灰度级的不连续性
  • 边缘 (Edge) vs. 边界 (Boundary):
    • 边界 (Boundary): 是一个全局 (global) 概念;它是一个有限区域的外围,形成一条闭合的路径
    • 边缘 (Edge): 是一个局部 (local) 概念;它基于某一个点的灰度级不连续性的度量
    • 关系: 一组从区域周围提取出的边缘,可以构成该区域的边界
  • 边缘的物理成因: 图像中的边缘或不连续性通常由以下物理因素引起:
    • 物体深度的变化(如物体与背景的交界)
    • 物体表面方向的变化(如立方体的棱)
    • 物体材质的变化
    • 光照的变化(如阴影的边缘)
  • Marr 的视觉模型: David Marr的计算视觉模型中,初始简图 (Primal Sketch) 这一步就对应于从图像中提取边缘、斑点、条纹等基本几何结构

2. 边缘的数学模型与检测原理

  • 边缘模型:
    • 理想边缘 (Ideal Edge): 灰度值发生阶跃式突变。
    • 斜坡边缘 (Ramp Edge): 由于模糊等因素,实际图像中的边缘更像是灰度值在一定距离内平滑过渡的斜坡;斜坡的斜率反映了边缘的模糊程度
  • 基于微分的检测原理: 边缘对应于灰度函数变化剧烈的地方,这在数学上可以通过导数来描述
    • 一阶导数 (First Derivative):
      • 在边缘的斜坡区域,一阶导数的值为非零常数,其幅值 (Magnitude) 可以用来检测边缘的存在
      • 一阶导数的峰值或平台区域的中心,对应于边缘的中心
    • 二阶导数 (Second Derivative):
      • 在边缘的斜坡区域,二阶导数会产生一对正负脉冲,并在边缘中心点处穿过零点(零交叉, zero-crossing)
      • 零交叉的属性可以用来精确定位边缘的中心位置
      • 二阶导数的符号可以用来判断边缘像素是位于边缘的暗侧还是亮侧

  • 图像中的导数算子:
    • 一阶导数通过梯度 (Gradient) 算子来计算
    • 二阶导数通过拉普拉斯 (Laplacian) 算子来计算

A. 基于微分算子的边缘检测 (Edge Detection Based on Differential Operators)

这部分内容是边缘检测最经典和基础的方法,其核心是利用一阶和二阶微分来定位图像灰度值的不连续性。

1. 梯度算子 (Gradient Operators) - 基于一阶导数

  • 连续域下的定义:

    • 梯度向量: 图像 f(x,y)f(x,y) 在位置 (x,y)(x,y) 的梯度 f\nabla f 是一个向量,包含了图像在该点沿 x 和 y 方向的偏导数

      f=[GxGy]=[fxfy]\nabla f=\left[\begin{array}{l} G_x \\ G_y \end{array}\right]=\left[\begin{array}{l} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{array}\right]

    • 梯度向量的性质与计算:
      • 方向: 梯度向量指向图像灰度值变化率最大的方向

      α(x,y)=tan1(fy/fx)\alpha(x, y)=\tan ^{-1}\left(\frac{\partial f}{\partial y} / \frac{\partial f}{\partial x}\right)

      • 幅值: 梯度向量的幅值 f|\nabla f| 给出了这个最大变化率的大小

      f=(fx)2+(fy)2|\nabla f|=\sqrt{\left(\frac{\partial f}{\partial x}\right)^2+\left(\frac{\partial f}{\partial y}\right)^2}

      • 与边缘的关系: 梯度向量的方向垂直于边缘的方向
  • 离散域下的实现: 在数字图像中,偏导数被差分近似所取代

    • 基本梯度近似:
      • x 方向梯度: xf=f(m,n)f(m1,n)\nabla_x f=f(m, n)-f(m-1, n) (当前像素 - 左侧像素)
      • y 方向梯度: yf=f(m,n)f(m,n1)\nabla_y f=f(m, n)-f(m, n-1) (当前像素 - 上方像素)
      • 对应的掩模 (Mask)

      [0011][0101]\left[\begin{array}{cc} 0 & 0 \\ -1 & 1 \end{array}\right]\left[\begin{array}{cc} 0 & -1 \\ 0 & 1 \end{array}\right]

    • 离散梯度幅值:

      f=(xf)2+(yf)2|\nabla f|=\sqrt{\left(\nabla_x f\right)^2+\left(\nabla_y f\right)^2}

      • 在实际计算中,为了简化,也常用绝对值之和来近似 f=xf+yf|\nabla f| = |\nabla_x f| + |\nabla_y f|
    • 离散梯度方向:

      α(x,y)=tan1(yfxf)\alpha(x, y)=\tan ^{-1}\left(\frac{\nabla_y f}{\nabla_x f}\right)

  • Roberts 交叉梯度算子 (Roberts cross-gradient operators):

    • 思想: 这是一种使用对角线方向的像素差分来计算梯度的早期方法
    • 公式:

      xf=f(m,n)f(m1,n1)yf=f(m1,n)f(m,n1)\begin{aligned} &\nabla_x f=f(m, n)-f(m-1, n-1)\\ &\nabla_y f=f(m-1, n)-f(m, n-1) \end{aligned}

    • 掩模:

      [1001][0110]\left[\begin{array}{cc} -1 & 0 \\ 0 & 1 \end{array}\right]\left[\begin{array}{cc} 0 & 1 \\ -1 & 0 \end{array}\right]

    • 边缘检测: 计算梯度幅值 f|\nabla f|,如果幅值大于某个阈值 TT,则判断该点为边缘点

      f=(xf)2+(yf)2>T|\nabla f|=\sqrt{\left(\nabla_x f\right)^2+\left(\nabla_y f\right)^2}>T

2. 拉普拉斯算子 (The Laplacian) - 基于二阶导数

  • 用途: 拉普拉斯算子既可以用于边缘增强,也可以用于边缘检测
  • 用于边缘增强:
    • 思想: 通过从原图中减去其拉普拉斯变换的结果,可以突出图像中的高频细节,即锐化图像
    • 公式:

      g(x,y)=f(x,y)α2f(x,y)g(x, y)=f(x, y)-\alpha \nabla^2 f(x, y)

    • 掩模: 这对应于我们之前在图像增强章节中讨论过的锐化掩模

      M=[0α0α1+4αα0α0]M=\left[\begin{array}{ccc} 0 & -\alpha & 0 \\ -\alpha & 1+4 \alpha & -\alpha \\ 0 & -\alpha & 0 \end{array}\right]

  • 用于边缘检测:
    • 思想: 寻找拉普拉斯变换结果的零交叉点 (zero-crossing) 来定位边缘
    • 公式 (连续域):

      2f=2fx2+2fy2\nabla^2 f=\frac{\partial^2 f}{\partial x^2}+\frac{\partial^2 f}{\partial y^2}

    • 离散实现与掩模: 两种从 3x3 邻域 z1z9z_1 \dots z_9z5z_5 为中心)推导出的离散拉普拉斯掩模
      • 基于4-邻域:

      2f=4z5(z2+z4+z6+z8)\nabla^2 f=4 z_5-\left(z_2+z_4+z_6+z_8\right)

      对应的掩模为:

      [010141010]\left[\begin{array}{ccc} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0 \end{array}\right]

      • 基于8-邻域:

      2f=8z5(z1+z2+z3+z4+z6+z7+z8+z9)\nabla^2 f=8 z_5-\left(z_1+z_2+z_3+z_4+z_6+z_7+z_8+z_9\right)

      对应的掩模为:

      [111181111]\left[\begin{array}{ccc} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \end{array}\right]

  • 直接使用拉普拉斯进行边缘检测的缺陷:
    • 对噪声非常敏感: 二阶导数会放大噪声
    • 定位不精确 (双边响应): 在边缘两侧产生正负响应,而不是单一的边缘线
    • 无法检测边缘方向
  • 拉普拉斯在分割中的作用:
    • 利用其零交叉属性来精确定位边缘
    • 通过响应的符号来判断像素点位于边缘的暗侧还是亮侧
  • 二阶导数方法的改进: LoG & DoG(详细见后续)

参考资料

本文参考上海交通大学电子工程系《数字图像处理》课程 CS3324 闵雄阔老师的 PPT 课件整理。


数字图像处理(7):图像分割
https://cny123222.github.io/2025/12/11/数字图像处理-7-:图像分割/
Author
Nuoyan Chen
Posted on
December 11, 2025
Licensed under