508 字
3 分钟
滤波:卷积与互相关
2026-05-25
无标签
TIP

在空间域图像增强中,早期的简单灰度变换、直方图均衡化等方法存在一个共性问题:它们没有考虑图像的空间信息(输出像素仅基于输入像素的原始灰度级别,或将图像作为整体处理)。为了捕获更丰富的图像特征,我们需要为每个像素提供上下文信息,因为邻域内的像素关系决定了图像的特征。

滤波#

滤波的核心思想是:

使用一个小的模板(filter / kernel)在图像上滑动,局部区域内元素相乘并相加

g(x,y)=T[f(x,y)]g(x,y) = T[f(x,y)]

其中 TT 是一个线性或非线性变换,f(x,y)f(x,y) 是输入图像,g(x,y)g(x,y) 是输出图像。

互相关形式的定义:

h[m,n]=k,lg[k,l]f[m+k,n+l]h[m,n] = \sum_{k,l} g[k,l] f[m+k, n+l]

卷积形式的定义,二维卷积要求核在参与计算前进行水平和垂直翻转:

h[m,n]=k,lg[k,l]f[mk,nl]h[m,n] = \sum_{k,l} g[k,l] f[m-k, n-l]
  • 在深度学习中通常使用互相关,但由于很多滤波器是对称的(如高斯、盒式),两者等价。

Padding-卷积的边界问题#

如果不用padding,会越卷越小,每次卷积后输出图像尺寸为:

O=N+2PKS+1O=\frac{N+2P-K}{S}+1

其中 NN 是输入图像尺寸,KK 是卷积核尺寸,SS 是步长,P=K12P=\frac{K-1}{2} (适用于 stride = 1 且 K 为奇数)是填充大小。

padding常见类型

  • Zero Padding:在图像边界添加零值像素。
  • Replicate Padding:复制边界像素值进行填充。
  • Reflect Padding:以边界像素为中心进行镜像反射填充。
  • Circular Padding:将图像视为周期性,边界像素与对面边界像素相连。

alt text

可分离卷积核#

如果一个卷积核可以表示为两个一维卷积核的外积,那么它就是可分离的。

可分离:分解成两个一维卷积操作

复杂度分析:图片大小 M×NM\times N,卷积核大小 K×KK\times K,直接卷积复杂度为 O(MN×K2)O(MN\times K^2),可分离卷积复杂度为 O(MN×2K)O(MN\times 2K)

alt text

滤波:卷积与互相关
https://biscuit0613.github.io/posts/cv/cv-filterandconvolution/
作者
Biscuit
发布于
2026-05-25
许可协议
CC BY-NC-SA 4.0