图像卷积核心 模拟器 返回
机器学习

图像卷积核心 模拟器

这是一个用3×3卷积核对图像进行滤波的"卷积"体验工具。切换卷积核的种类和图像图案,输入图像和滤波后的输出图像以及扫描线轮廓会实时变化,让你能够直观理解作为卷积神经网络(CNN)核心的运算。

参数设置
卷积核类型
选择3×3滤波器。效果将在预览中实时反映
输入图像图案
选择要进行卷积的原始图像的形状
卷积核强度
0为恒等,1为卷积核本身的效果,2为夸大
图像分辨率 N×N
px
输入和输出图像的像素数
输入噪声
添加到输入图像的高斯噪声标准差
计算结果
卷积核总和
输出平均亮度
输出标准差
边缘能量
运算次数
卷积核效果
卷积扫描动画(输入 → 输出)

左边是输入图像,右边是输出图像。黄色方框是3×3卷积核窗口,每次向下移动1个像素时,计算对应的输出像素。

有效卷积核系数 K_eff(3×3 共9个)
中央扫描线(输入 vs 输出)
理论与主要公式

$$O(i,j)=\sum_{m=-1}^{1}\sum_{n=-1}^{1}K(m,n)\cdot I(i+m,\,j+n)$$

2维离散卷积。输出像素 O(i,j) 是卷积核 K 的各系数与其下方输入图像 I 的3×3相邻像素相乘后相加的值。

$$K_{\text{eff}}=K_{\text{identity}}+s\,(K-K_{\text{identity}})$$

有效卷积核 K_eff 是恒等卷积核与选定卷积核 K 按强度 s 进行线性插值得到的。s=0 时为恒等(无变化),s=1 时为卷积核本身的效果。

$$\sum K=1\;\Rightarrow\;\text{亮度保持}, \qquad \sum K=0\;\Rightarrow\;\text{仅对边缘反应}$$

卷积核系数的总和为1时会保持平坦区域的亮度(平滑化和强调),为0时仅对亮度变化(边缘)作出反应(微分和特征提取)。

什么是图像卷积

🙋
智能手机的照片应用中的"模糊"和"锐化",内部是怎样工作的?
🎓
几乎所有这些都可以用一个单一的操作"卷积(卷积)"来完成。它的原理非常简单,就是拿一个3×3大小的小数值表(称为卷积核或滤波器),放在图像上,然后执行"卷积核的数字乘以其下方像素的亮度,再把9个全部相加"。这个和就成为输出图像该像素的值。将卷积核逐个像素地移动,重复对整个图像进行这个操作就可以了。
🙋
仅靠9个乘法和加法就能实现"模糊"和"锐化"吗?
🎓
对,只需改变卷积核的内容就可以了。例如,如果把9个值都设为1/9,那么每个像素就变成"自己和周围8个像素的平均值"——这就是平均化模糊。相反,如果把中间设为5,上下左右设为-1,那么周围比自己亮的像素会进一步被强调亮度——这就是锐化。试试看在左边"卷积核类型"中切换,观察上面图表的柱子(卷积核系数)和右边输出图像如何变化。
🙋
选择边缘提取时,输出在全黑的背景中只能看到轮廓线发光。这是为什么?
🎓
观察得好。边缘提取(拉普拉斯)的卷积核,所有系数加起来等于0。因此在亮度恒定的平坦区域,"相同的值×系数和0"正好相消,输出为0,也就是黑色。只有在亮度急剧变化的轮廓处,才无法完全相消,值才会保留。这就是"微分滤波器",与系数和为1的模糊类卷积核的作用正好相反。看右边"中央扫描线"图表,你会看到输入在光滑处但输出在边缘处产生尖峰。
🙋
增加输入噪声后使用高斯模糊时,输出的标准差大幅下降。这说明了什么?
🎓
这正是噪声消除。噪声是每个像素随机变化的分量,对相邻区域取平均后,正负值会相互抵消而减小。标准差就是这种变化的大小,所以模糊化后会降低。但是与此同时,真实的边缘也会变得模糊。"想要消除噪声但保持边缘"是图像处理永远的矛盾,高斯的扩散程度(强度)就是用来调整这个平衡的。
🙋
这和最近经常听到的"卷积神经网络(CNN)"是同一回事吗?
🎓
计算本身完全相同。不同之处在于"谁来决定卷积核的数值"。这个工具中是由人类手动编写边缘提取和模糊的卷积核,但CNN会使用大量图像数据,通过学习中的误差反向传播来自动优化9个(有时更多)卷积核数值。而且一层有几十个卷积核,通过堆叠多层,可以逐步从边缘→图案→眼睛或车轮→面部或汽车这样进行特征识别。卷积是现代图像识别AI的基础。

常见问题

图像卷积是指在图像上以1像素为间隔滑动一个小的数值矩阵(卷积核,这里是3×3),每个位置都执行"卷积核的值与其下方相邻像素值相乘,然后全部相加"的运算。输出像素值由 O(i,j)=ΣΣ K(m,n)·I(i+m,j+n) 求出。仅通过改变卷积核的内容,就可以获得完全不同的效果,如模糊、锐化、边缘提取等。
卷积核系数的总和决定了输出的亮度。总和为1的卷积核(恒等、平均化模糊、高斯、锐化)会保持平坦区域的亮度不变。总和为0的卷积核(拉普拉斯边缘提取或索贝尔)在亮度恒定的区域输出为0,仅在亮度变化的地方(边缘)作出反应。前者用于平滑化和强调,后者用于微分(特征提取)。
CNN的卷积层执行的计算正是本工具所演示的"在图像上滑动卷积核进行卷积"。不同之处在于,与其由人工手动确定卷积核(如边缘提取或模糊),CNN会通过误差反向传播从学习数据中自动优化卷积核的数值(权重)。一层中可以有数十个卷积核,通过堆叠多层,可以逐步捕捉从边缘→图案→部件→物体的特征。
将3×3卷积核应用于图像边缘像素时,卷积核的一部分会超出图像边界。本工具采用复制边缘像素(钳制)的方式填充外侧。还有其他方法如用零填充(零填充)、翻转图像或循环填充。在CNN中通常使用零填充,是否进行填充会影响输出图像的大小。

实际应用

图像识别AI(CNN):卷积是物体检测、人脸识别、医疗影像诊断、自动驾驶"眼睛"等现代图像系统AI的核心运算。CNN的最初层会自然地学到类似本工具中边缘提取或索贝尔的卷积核,后续层将它们组合起来表达图案、部件和物体。由于卷积核较小且共享权重,相比全连接网络参数少得多,学习也更高效。

照片和视频编辑:智能手机相机应用和图像编辑软件中的"锐化"、"模糊"、"降噪"、"边缘强调"都是卷积核的应用。高斯模糊被用于背景模糊和马赛克的预处理,非锐化遮罩(一种锐化)被用于焦点不清的照片补正。在视频中,每帧应用相同卷积核可以实现防抖和质感调整。

工业图像检查与计算机视觉:工厂的外观检查中,使用索贝尔或拉普拉斯进行边缘提取,检测产品的划痕、缺角、位置偏差。OCR(文字识别)的预处理、机器人视觉的特征点提取、卫星图像的边界线提取等中,卷积是中心工具。在CAE领域,也用于从计算结果的可视化图像中提取等值线。

科学工程信号处理:卷积不仅应用于图像,也可以用相同的思路应用于1维时间序列数据。移动平均对噪声平滑、微分滤波器检测变化点、模糊图像复原(解卷积)等都是测量数据预处理中常见的应用。卷积本质上就是线性时不变系统的响应,与信号处理和控制工程的基础理论直接相关。

常见误解与注意事项

首先常见的误解是"混淆卷积和相关"。在数学上严格的卷积是先将卷积核上下左右反转(180°旋转)再重叠,但在图像处理和CNN的实现中,通常使用不反转的"相关(交叉相关)"。虽然本工具中大多数卷积核都是对称的,两者没有差异,但对于索贝尔或浮雕这样的非对称卷积核,符号和方向会反转。阅读论文和教科书时,一定要确认"卷积"是否包含反转。

其次是"不注意卷积核的总和"。如果使用总和不等于1的平滑或强调卷积核,整个图像会变亮或变暗。平均化模糊如果忘记除以9,输出会增大9倍,最后饱和为全白。反过来说,边缘提取卷积核的总和为0是有意义的,确保平坦部分为黑色。自己编写卷积核时,必须先确认系数总和(目标是1还是0)。

最后是"轻视边界处理和截断"。在图像边缘,卷积核会超出边界,所以选择零填充、边缘复制或翻转会影响最外几像素的结果。另外,锐化和边缘提取会产生0以下或1以上的值,显示前需要截断到[0,1]范围。忘记截断会导致黑点、白点和色彩反转,在CNN中也会使学习不稳定。卷积核公式本身远不如"边界"和"范围"处理容易出现bug。

使用指南

  1. 选择输入图像或示例图像,从下拉列表中选择要应用的卷积核类型(锐化、索贝尔、浮雕等)
  2. 调整 strengthNum(强度)在0~100范围内来倍增卷积核系数,使用 gridNNum(网格大小)改变处理目标区域(保持3×3卷积窗口不变)
  3. 加入 noiseLvNum(噪声等级)来模拟真实图像的劣化场景,通过卷积核总和、输出标准差、边缘能量等统计值定量评估各卷积核的鲁棒性

具体计算示例

对512×512像素灰度图像应用索贝尔卷积核(垂直方向:[-1,0,1;-2,0,2;-1,0,1]),strength=80、noiseLv=15%的情况下,输出标准差约为42.3,边缘能量为18540,运算次数为262144次。将 strength 提升至120时,边缘能量约增至27800,可观察到CNN内特征提取层的梯度强调效果的非线性特性。

实际应用注意事项