在图像处理中,图像的卷积是一个十分常用和核心的操作,接下来我们一起看看什么是图像的卷积。
回顾:卷积
首先回顾下到底什么是卷积
卷积运算是一种在数学、信号处理、图像处理以及深度学习等多个领域广泛应用的数学操作。以下从数学定义、在不同领域的含义和作用,以及计算示例方面为你详细介绍:
数学定义
信号处理领域
图像处理领域
在图像处理中,卷积是一种重要的特征提取和处理手段。图像是一个二维的像素矩阵,卷积核(也叫滤波器)是一个小的二维矩阵。对图像进行卷积运算时,卷积核在图像上滑动,在每个位置,将卷积核与图像对应区域的像素值进行元素相乘,然后将结果相加,得到卷积后的输出像素值。
作用:不同的卷积核可以实现不同的图像处理效果,比如使用高斯卷积核进行卷积运算,可以对图像进行平滑处理,减少噪声;使用边缘检测卷积核(如 Sobel 算子、Canny 算子),可以检测出图像中的边缘信息,突出物体的轮廓。
深度学习领域
在深度学习中,卷积神经网络(CNN)广泛应用了卷积运算。CNN 中的卷积层通过卷积运算对输入的图像或特征图进行处理,自动提取数据中的特征。
作用:卷积层中的卷积核参数是可学习的,在训练过程中,通过反向传播算法不断调整卷积核的参数,使得网络能够学习到对特定任务(如分类、目标检测等)最有用的特征表示。例如在图像分类任务中,卷积层可以学习到图像中物体的形状、颜色等特征,帮助网络做出准确的分类决策。
卷积运算通过对函数或序列进行加权求和的方式,在不同领域中实现了对信息的处理和特征提取,是一种非常重要且基础的操作。
图像的卷积
我们重点看下图像的卷积。
图像的卷积是计算机视觉和图像处理中核心的操作之一,它通过特定的卷积核(滤波器)与图像进行局部加权求和,实现特征提取、降噪、边缘检测等多种功能。以下从原理、步骤、应用和关键细节展开详解:
一、图像卷积的数学本质
二、卷积操作的具体步骤(以 3×3 卷积核为例)
三、卷积核的作用与典型类型
卷积核的系数决定了操作效果,不同核对应不同功能:
四、卷积的核心功能与应用
特征提取 卷积核本质是 “特征探测器”:
平滑核提取 “低频信息”(如均匀区域);
边缘检测核提取 “高频信息”(如物体轮廓、纹理突变处);
在卷积神经网络(CNN)中,多层卷积核可自动学习复杂特征(如边缘→纹理→部件→物体)。
图像预处理
降噪:通过平滑核(如高斯核)过滤随机噪声(如椒盐噪声、高斯噪声);
尺度调整:通过大尺寸卷积核实现图像模糊下采样。
视觉任务支撑 是图像分割、目标检测、图像生成等任务的基础。例如:
边缘检测结果可用于轮廓提取,辅助物体识别;
锐化卷积可提升图像细节,用于医学影像分析(如病灶观察)。
五、关键细节与扩展
卷积与互相关的区别:严格来说,卷积需要先将卷积核翻转 180°(上下、左右翻转),再进行加权求和;但实际应用中(如 CNN)常简化为 “互相关”(直接滑动匹配,不翻转),因为翻转不影响核的学习能力。
步长(Stride):卷积核每次滑动的像素数(如步长为 2 时,输出图像尺寸会缩小一半),用于控制输出图像的大小。
多通道卷积:彩色图像有 RGB 三通道,卷积核需与通道数匹配(如 3 个 3×3 核分别对应 RGB 通道,结果相加得到单通道输出)。
总结
图像卷积的本质是局部特征的加权聚合,通过设计或学习不同的卷积核,可灵活提取图像的低频(平滑)、高频(边缘)等特征,是从原始像素到高级视觉特征的桥梁。理解卷积操作是掌握图像处理和深度学习视觉模型(如 CNN)的基础。
关于卷积核中心
在卷积运算中,卷积核计算的结果通常会被映射到卷积核中心对应的像素位置,但这是一种 “约定俗成的输出位置定义”,而非物理上的必然关联。以下从具体过程展开说明:
一、卷积计算的输出位置约定
假设输入图像是一个 5×5 的像素矩阵,使用 3×3 的卷积核进行计算(步长 = 1):
卷积核首先覆盖输入图像左上角的 3×3 区域(像素坐标:(0,0)~(2,2)),计算该区域的加权和(即卷积结果)。
按照常规约定,这个结果会被记录在输出特征图的 (1,1) 位置 —— 恰好是原 3×3 区域的中心坐标((0+2)/2=1,(0+2)/2=1)。
卷积核向右 / 向下滑动后,每次覆盖新的 3×3 区域,计算结果都会被映射到该区域的中心位置,最终形成输出特征图。
示意图如下(简化为坐标):
输入区域(3×3): 输出特征图位置: (0,0) (0,1) (0,2) ↓ (1,0) (1,1) (1,2) → 卷积结果 → (1,1) (2,0) (2,1) (2,2)
这种 “中心映射” 的约定,本质是为了让输出特征图的坐标与输入图像的坐标形成直观的对应关系 —— 输出位置 (x,y) 大致对应输入图像中以 (x,y) 为中心的局部区域的特征。
二、为什么是 “中心”?
这种约定的核心目的是让输出特征图的坐标与输入图像的坐标保持 “空间对齐” 的直观性:
例如,用 3×3 卷积核检测图像中某点的边缘特征时,输出结果对应到该点(中心),意味着 “该位置存在边缘特征”,符合人类对 “特征位置” 的认知习惯。
若输出位置不对应中心(比如左上角),会导致特征图的坐标与原图偏移,增加后续处理的复杂度(尤其是多层卷积叠加时,偏移会累积)。
三、特殊情况:非奇数尺寸的卷积核
上述 “中心映射” 仅适用于奇数尺寸的卷积核(如 3×3、5×5),因为奇数尺寸有明确的 “中心像素”(坐标为整数)。
如果使用偶数尺寸的卷积核(如 2×2、4×4),由于没有整数中心坐标(例如 2×2 的中心是 (0.5,0.5)),通常会:
人为约定输出位置(如映射到左上角或右下角);
搭配 Padding(填充)调整坐标,避免偏移。
但实际应用中,偶数尺寸的卷积核极少使用,因为奇数尺寸更便于保持空间对齐,这也是 3×3、5×5 卷积核成为主流的原因之一。
总结
卷积核计算的结果默认对应卷积核中心的像素位置,这是为了让输出特征图与输入图像保持空间坐标的直观对齐,便于理解和后续处理。这种对应关系是人为约定的,而非计算本身的必然结果,且仅在奇数尺寸卷积核中能自然实现(有明确整数中心)。
图像卷积过程示例
我们以一张4×4 的简单灰度图像为例,使用 3×3 的均值平滑卷积核(用于模糊图像),展示所有像素点经过卷积后的完整变化过程。
一、准备工作
原图像(4×4 像素,像素值范围 0-255): 用矩阵表示如下(行索引 0-3,列索引 0-3):
行0:[10, 20, 30, 40] 行1:[50, 60, 70, 80] 行2:[90, 100, 110, 120] 行3:[130, 140, 150, 160]
卷积核(3×3 均值核,每个系数为 1/9,用于平滑图像):
[1/9, 1/9, 1/9] [1/9, 1/9, 1/9] [1/9, 1/9, 1/9]
卷积规则:
步长 = 1(每次滑动 1 个像素);
不填充边界(Valid 卷积),因此 4×4 图像经 3×3 核卷积后,输出图像尺寸为2×2(公式:输出尺寸 = 输入尺寸 - 核尺寸 + 1 = 4-3+1=2)。
二、逐像素计算过程
输出图像有 2×2 共 4 个像素,分别对应原图像中 4 个 3×3 的局部区域,计算如下:
输出像素 (0,0)(对应原图像左上角 3×3 区域)
覆盖的原图像区域(行 0-2,列 0-2):
[10, 20, 30] [50, 60, 70] [90, 100, 110]
计算过程: 所有像素值相加后除以 9(因卷积核系数为 1/9): 总和 = 10+20+30+50+60+70+90+100+110 = 540 输出值 = 540 ÷ 9 = 60
输出像素 (0,1)(对应原图像右上角 3×3 区域)
覆盖的原图像区域(行 0-2,列 1-3):
[20, 30, 40] [60, 70, 80] [100, 110, 120]
计算过程: 总和 = 20+30+40+60+70+80+100+110+120 = 630 输出值 = 630 ÷ 9 = 70
输出像素 (1,0)(对应原图像左下角 3×3 区域)
覆盖的原图像区域(行 1-3,列 0-2):
[50, 60, 70] [90, 100, 110] [130, 140, 150]
计算过程: 总和 = 50+60+70+90+100+110+130+140+150 = 800? (重新计算:50+60=110,+70=180;+90=270,+100=370,+110=480;+130=610,+140=750,+150=900) 总和 = 900 输出值 = 900 ÷ 9 = 100
输出像素 (1,1)(对应原图像右下角 3×3 区域)
覆盖的原图像区域(行 1-3,列 1-3):
[60, 70, 80] [100, 110, 120] [140, 150, 160]
计算过程: 总和 = 60+70+80+100+110+120+140+150+160 = 990 输出值 = 990 ÷ 9 = 110
三、卷积前后对比
四、结果分析
像素值变化: 卷积后的每个像素值是原图像对应 3×3 区域的平均值。例如,原图像中分散的像素(如 10、20、90 等)通过卷积被 “融合” 成一个新值(60),实现了平滑效果。
图像尺寸变化: 因未填充边界,4×4 图像缩小为 2×2,边缘像素(如原图像的 10、40、130、160)仅参与一次计算,不再作为输出的独立像素。
视觉效果: 原图像的像素差异较大(10 到 160),卷积后差异缩小(60 到 110),图像整体更模糊,这是均值平滑核的典型作用(减少噪声或细节)。
五、用边缘检测核的补充示例
若使用水平边缘检测核(上方为负,下方为正):
[-1, -1, -1] [0, 0, 0] [+1, +1, +1]
对原图像卷积后,输出图像为:
[[( -10-20-30 +0+0+0 +90+100+110 ), ...], ...] = [[240, ...], ...]
结果会突出原图像中上下像素的亮度差异(如行 0 和行 2 的像素差),用于检测水平边缘。
总结
卷积通过滑动卷积核对图像的每个局部区域进行 “加权求和”,将分散的像素信息整合为新的特征。不同卷积核会产生不同效果:平滑核模糊图像,边缘核突出轮廓,而卷积的本质是将原始像素转化为携带局部空间关系的特征。
上面的例子中,为什么图像会变小,可以经过卷积后让图像大小保持不变吗?
在卷积过程中图像变小的原因与卷积核的滑动方式和边界处理规则直接相关,而通过特定的技术可以让卷积后图像大小保持不变。以下详细解释:
一、图像变小的原因:边界像素未被完全覆盖
在之前的例子中,4×4 的图像使用 3×3 卷积核、步长 = 1 且不填充边界(Valid 卷积),最终输出为 2×2,核心原因是:
卷积核需要完全覆盖原图像的像素才能计算输出。对于 3×3 的核,原图像边缘的像素(如第 0 行、第 3 行,第 0 列、第 3 列)无法作为卷积核的中心(因为核会超出图像范围)。
输出尺寸的计算公式为: 输出尺寸 = 输入尺寸 - 核尺寸 + 1 代入数值:4 - 3 + 1 = 2,因此图像从 4×4 缩小为 2×2。
简单说:边缘像素没有足够的 “邻居” 让卷积核完整覆盖,因此无法生成对应的输出像素,导致图像变小。
二、让图像大小保持不变的方法:填充(Padding)
通过在原图像的边界外添加额外像素(填充值通常为 0,也可以是边缘复制等),使卷积核能够完整覆盖包括边缘在内的所有像素,从而让输出尺寸与输入尺寸一致。
具体操作:
对于输入尺寸为
H×W
,卷积核尺寸为Kh×Kw
,步长为S
的情况,若要输出尺寸仍为H×W
,需要填充的像素数P
满足公式: 输入尺寸 + 2× 填充数 - 核尺寸 + 1 = 输出尺寸 当输出尺寸 = 输入尺寸时,简化为:2×P = 核尺寸 - 1
→ 填充数 P = (核尺寸 - 1)÷2以之前的例子验证:
原图像 4×4,3×3 卷积核,步长 = 1。
所需填充数
P = (3-1)÷2 = 1
(上下左右各填充 1 行 / 列像素)。填充后的图像变为
6×6
(4+2×1=6),此时输出尺寸 = 6-3+1=4,与原图像大小一致。三、带填充的卷积过程示例(保持 4×4 输出)
填充后的原图像(边界填充 0):
行-1(填充):[0, 0, 0, 0, 0, 0] 行0: [0, 10, 20, 30, 40, 0] (左右各填充1个0) 行1: [0, 50, 60, 70, 80, 0] 行2: [0, 90, 100, 110, 120, 0] 行3: [0, 130, 140, 150, 160, 0] 行4(填充):[0, 0, 0, 0, 0, 0]
计算输出像素 (0,0)(对应填充后图像的左上角 3×3 区域):
覆盖区域(行 - 1 到 1,列 - 1 到 1):
[0, 0, 0] [0, 10, 20] [0, 50, 60]
均值核计算:总和 = 0+0+0+0+10+20+0+50+60=140 → 输出 = 140÷9≈15.56
最终输出尺寸:
填充后输入为 6×6,输出尺寸 = 6-3+1=4,与原图像 4×4 一致。
四、填充的常见方式
填充方式 说明 适用场景 零填充(Same) 边界填充 0,输出尺寸与输入一致 大多数神经网络(如 CNN) 边缘填充 用图像边缘的像素值填充边界 避免边界引入 0 值干扰(如遥感图像) 反射填充 以边缘为轴反射填充(如 [1,2,3]→[2,1,2,3,2]) 保留边缘纹理连续性 总结
图像变小是因为未填充时边缘像素无法被卷积核完整覆盖,输出像素数量减少。
要保持大小不变,需通过填充(Padding) 补充边界像素,使卷积核能覆盖所有原始像素,核心公式为
填充数=(核尺寸-1)÷2
(适用于步长 = 1 的情况)。填充是卷积神经网络(CNN)中的基础操作,既保证了特征提取的完整性,又避免了图像尺寸快速缩小(如 CNN 中多次卷积仍能保持合理尺寸)。
卷积的作用
图像经过卷积核卷积后,核心作用是提取图像的局部特征,并通过不同类型的卷积核,得到图像中不同维度的信息(如边缘、纹理、颜色、轮廓等)。这种特征提取是图像处理、计算机视觉(如图像识别、目标检测)的基础,具体作用和信息如下:
一、核心作用:从 “原始像素” 到 “局部特征”
原始图像是由大量像素点组成的矩阵(如 RGB 图像的每个像素包含红、绿、蓝三个通道的数值),但这些像素值本身是 “低层次信息”(仅表示颜色 / 亮度)。
卷积操作通过卷积核与局部像素的加权求和,将相邻像素的关联信息整合,转化为 “高层次特征”—— 即像素间的空间关系(如明暗变化、形状趋势等)。
二、不同卷积核提取的典型信息
卷积核的权重(数值)决定了它对图像的 “敏感方向”,不同权重分布的卷积核会聚焦于不同的局部特征。以下是几类典型卷积核及其提取的信息:
边缘检测:提取图像中 “明暗突变” 的区域
边缘是图像中最基础的特征(如物体轮廓、纹理边界),由相邻像素的亮度 / 颜色剧烈变化形成。
水平边缘检测核:对水平方向的明暗变化敏感(如横线、水平轮廓)。 例:
[[1, 1, 1], [0, 0, 0], [-1, -1, -1]]
原理:上方像素权重为正,下方为负,若局部区域上亮下暗(水平边缘),加权和会显著变大,输出高值。垂直边缘检测核:对垂直方向的明暗变化敏感(如竖线、垂直轮廓)。 例:
[[1, 0, -1], [1, 0, -1], [1, 0, -1]]
原理:左侧像素权重为正,右侧为负,若局部区域左亮右暗(垂直边缘),输出高值。示例:一张包含矩形的图像,经过垂直边缘核卷积后,矩形的左右边缘会被强化(输出高值),其他区域因明暗变化平缓而输出低值。
平滑 / 模糊:去除噪声,保留整体趋势
平滑卷积核(也称 “低通滤波器”)的权重通常为正值,且总和为 1(或归一化后为 1),作用是平均局部像素值,弱化细节(如噪声),保留大范围的亮度 / 颜色趋势。
典型卷积核:3×3 均值核
[[1/9, 1/9, 1/9], [1/9, 1/9, 1/9], [1/9, 1/9, 1/9]]
原理:每个像素的输出值是周围 9 个像素的平均值,相邻像素的差异被 “抹平”,图像变得模糊,高频噪声(如随机斑点)被抑制。示例:一张有雪花噪点的图像,经过平滑卷积后,噪点减少,整体轮廓更清晰。
锐化:增强细节和边缘
锐化卷积核的作用与平滑相反,通过强化像素间的明暗差异,让边缘、细节更突出(增强高频信息)。
典型卷积核:基于 “原图 - 模糊图” 的锐化核
[[0, -1, 0], [-1, 5, -1], [0, -1, 0]]
原理:中心像素权重为正且较大,周围像素权重为负,相当于 “用中心像素减去周围像素的影响”,放大局部差异,让边缘更锐利。示例:一张模糊的人脸图像,经过锐化卷积后,眉毛、嘴角等细节的边缘会更清晰。
特定模式提取:纹理、颜色、形状等
通过设计特殊权重的卷积核,还能提取更复杂的局部模式:
纹理提取:如检测网格纹理(重复的线条 pattern)、斑点纹理(局部亮度集中区域)的卷积核,能输出纹理的密集程度或方向信息。
颜色特征:对 RGB 多通道图像,卷积核可针对特定颜色通道(如红色)设计权重,提取该颜色的分布区域(如红色花朵在图像中的位置)。
形状特征:如检测角点(图像中两个边缘的交点)的卷积核,能在角点位置输出高值,帮助识别物体的拐角(如矩形的四个角)。
三、在深度学习中的延伸:自动学习 “有用特征”
在卷积神经网络(CNN)中,卷积核的权重不再是人工设计的,而是通过数据训练 “自动学习” 的。此时卷积的作用是:
浅层卷积核学习基础特征(如边缘、纹理、颜色块);
深层卷积核学习组合特征(如 “边缘 + 纹理” 形成的部件,如眼睛、车轮);
最终通过多层叠加,提取图像的抽象语义信息(如 “这是一只猫”“这是一辆车”)。
例如,训练一个识别猫的 CNN:
第一层卷积核可能提取猫的毛发纹理、耳朵边缘;
第二层卷积核可能将边缘组合成 “耳朵形状”“眼睛轮廓”;
高层卷积核则整合这些部件,得到 “猫的整体特征”。
总结
卷积操作的核心是将图像的局部像素关联转化为可解释的特征信息,不同卷积核(人工设计或学习得到)能提取边缘、纹理、颜色、形状等不同层次的特征。这些特征是图像理解的基础 —— 从简单的 “哪里有边缘” 到复杂的 “这是什么物体”,都依赖于卷积提取的信息。