1218 字
6 分钟
梯度、边缘检测与图像锐化
2026-06-28
无标签

从差分到梯度#

一维离散信号的一阶与二阶差分#

连续函数的导数在离散域中用差分近似。对一维离散信号 f[n]f[n],取 δ=1\delta=1

f[n]=f[n+1]f[n]f'[n] = f[n+1] - f[n]f[n]=f[n]f[n1]=f[n+1]2f[n]+f[n1]f''[n] = f'[n] - f'[n-1] = f[n+1] - 2f[n] + f[n-1]

二阶差分的系数模式 [1,2,1][1, -2, 1] 是后面拉普拉斯算子在二维上的直接推广。

图像一阶微分与梯度#

图像是二维离散信号,不能直接求导,用差分代替。图像在 (x,y)(x,y) 处的一阶微分(梯度)定义为:

Ix(x,y)=I(x+1,y)I(x1,y),Iy(x,y)=I(x,y+1)I(x,y1)I_x(x,y) = I(x+1,y) - I(x-1,y),\quad I_y(x,y) = I(x,y+1) - I(x,y-1)

等价于卷积核形式:

Kx=[000101000],Ky=[010000010]K_x = \begin{bmatrix}0&0&0\\-1&0&1\\0&0&0\end{bmatrix},\quad K_y = \begin{bmatrix}0&-1&0\\0&0&0\\0&1&0\end{bmatrix}

梯度是一个向量 I=(Ix,Iy)\nabla I = (I_x, I_y),可以分解为幅值和方向:

分量公式物理含义
幅值I=Ix2+Iy2\|\nabla I\| = \sqrt{I_x^2 + I_y^2}边缘强度
方向θ=arctan(Iy/Ix)\theta = \arctan(I_y / I_x)边缘法线方向(边缘自身方向是 θ+π/2\theta + \pi/2

图像二阶微分与拉普拉斯算子#

对一阶梯度再求一次微分,得到拉普拉斯算子 2\nabla^2

2I=2Ix2+2Iy2\nabla^2 I = \frac{\partial^2 I}{\partial x^2} + \frac{\partial^2 I}{\partial y^2}

离散后的近似形式是一个 3×3 卷积核:

类型特点
4-邻域2=[010141010]\nabla^2 = \begin{bmatrix}0&1&0\\1&-4&1\\0&1&0\end{bmatrix}只考虑正交方向
8-邻域2=[111181111]\nabla^2 = \begin{bmatrix}1&1&1\\1&-8&1\\1&1&1\end{bmatrix}加入对角线,各向同性更好

一阶微分和二阶微分检测边缘的方式不同:一阶微分在边缘处产生峰值(找极大值),二阶微分在边缘处产生过零点(找符号变化)。二阶微分对噪声的敏感度更高,实际使用时常先做高斯平滑再求拉普拉斯(即 LoG)。

:::tip 快速复习

  • 梯度幅值 → 边缘强度(越大越可能是边缘)
  • 梯度方向 → 垂直于边缘方向
  • 拉普拉斯 → 零交叉点定位边缘(对噪声敏感)
  • 一阶 vs 二阶:一阶找峰值,二阶找过零

:::

梯度算子#

以下三种算子都是用卷积核近似图像梯度,区别在于邻域大小和权重分配方式。

Roberts 算子(2×2)#

Kx=[1001],Ky=[0110]K_x = \begin{bmatrix}1&0\\0&-1\end{bmatrix},\quad K_y = \begin{bmatrix}0&1\\-1&0\end{bmatrix}

沿对角线方向计算差分,计算量极小。但 2×2 邻域提供的信息太少,对噪声极其敏感,方向性不直观(对角线),实际应用很少。

Prewitt 算子(3×3)#

Kx=[101101101],Ky=[111000111]K_x = \begin{bmatrix}-1&0&1\\-1&0&1\\-1&0&1\end{bmatrix},\quad K_y = \begin{bmatrix}-1&-1&-1\\0&0&0\\1&1&1\end{bmatrix}

3×3 邻域带来的平滑效果使噪声抑制能力好于 Roberts。加权方式简单(列方向取平均),属于可分离核。

Sobel 算子(3×3,最常用)#

Kx=[101202101],Ky=[121000121]K_x = \begin{bmatrix}-1&0&1\\-2&0&2\\-1&0&1\end{bmatrix},\quad K_y = \begin{bmatrix}-1&-2&-1\\0&0&0\\1&2&1\end{bmatrix}

Sobel 在 Prewitt 的基础上给中心行/列赋予了更大的权重(22 替换 11),增强了中心像素的影响力。它也是可分离的:

Kx=[101][121],Ky=[121][101]K_x = \begin{bmatrix}-1&0&1\end{bmatrix} * \begin{bmatrix}1\\2\\1\end{bmatrix},\quad K_y = \begin{bmatrix}-1&-2&-1\end{bmatrix} * \begin{bmatrix}1\\0\\1\end{bmatrix}

竖方向的 [121]T\begin{bmatrix}1&2&1\end{bmatrix}^T 起到了高斯平滑的效果。

:::tip 算子对比

算子核尺寸可分离噪声敏感度方向性适用场景
Roberts2×2对角线极少使用
Prewitt3×3水平/垂直早期简单边缘检测
Sobel3×3水平/垂直工业界最常用

:::

TIP

Canny 边缘检测是本节内容的一个重要延伸。Canny 完整地覆盖了从梯度计算到单像素宽二值边缘图的四条流程(高斯平滑→梯度幅值/方向→NMS→双阈值滞后跟踪),详细内容见本系列中专门的一篇。

图像锐化#

锐化的基本思路#

锐化是平滑的逆操作。图像中的”细节”可以定义为原始图像与平滑结果的差:

detail=IorigIsmooth\text{detail} = I_{\text{orig}} - I_{\text{smooth}}

将细节加回原图,就得到锐化结果:

Isharp=Iorig+αdetail=(1+α)IorigαIsmoothI_{\text{sharp}} = I_{\text{orig}} + \alpha \cdot \text{detail} = (1+\alpha) I_{\text{orig}} - \alpha \cdot I_{\text{smooth}}

α\alpha 控制锐化强度,α=1\alpha=1 为标准非锐化掩模。

基于一阶微分的锐化#

直接增强梯度幅值本身不产生锐化效果,因为梯度幅值是标量,丢失了方向信息。一阶微分在锐化中通常不作为直接手段。

基于二阶微分的锐化:Laplacian 锐化#

二阶微分在边缘处产生过零点,拉普拉斯算子检测到的是边缘两侧的灰度突变。利用这一性质可以做锐化:

Isharp(x,y)=I(x,y)α2I(x,y)I_{\text{sharp}}(x,y) = I(x,y) - \alpha \cdot \nabla^2 I(x,y)

减号的由来:拉普拉斯算子的卷积核中心为负数,在边缘暗侧响应为正、亮侧响应为负,从原图中减去拉普拉斯结果等于在暗侧减正变得更暗、在亮侧减负变得更亮,两侧对比增强。

:::tip 一阶 vs 二阶微分

特性一阶微分(Sobel)二阶微分(Laplacian)
对边缘的响应在边缘处产生峰值在边缘处过零
定位方式找极大值找零交叉点
噪声敏感度较低较高(先平滑再做)
锐化使用不直接使用是锐化的主要手段
响应强度与边缘宽度有关与方向无关(各向同性)

:::

梯度、边缘检测与图像锐化
https://biscuit0613.github.io/posts/cv/cv-filter-edgesharpen/
作者
Biscuit
发布于
2026-06-28
许可协议
CC BY-NC-SA 4.0
HOG与LBP:经典特征描述子
图像基础:颜色空间、直方图与伽马校正