当前位置: 首页 > news >正文

当信号与系统遇见深度学习:我用傅里叶变换和拉普拉斯算子,看懂了CNN的本质

当信号与系统遇见深度学习:我用傅里叶变换和拉普拉斯算子,看懂了CNN的本质

前言

最近在做一个信号与系统课程设计,题目是“基于CNN的人物图像特征提取——傅里叶变换与拉普拉斯变换的深度学习应用”。说实话,一开始看到这个题目我是懵的——傅里叶、拉普拉斯,这不是经典信号处理的内容吗?跟深度学习有什么关系?

但做完整个实验后,我发现了一个让我豁然开朗的事实:CNN里的卷积核,本质上就是一组“可学习的滤波器”,而傅里叶变换和拉普拉斯算子,正是理解这一切的钥匙

这篇文章,我想把这个思考过程分享出来。如果你也在学信号与系统,或者刚开始接触CNN,希望能帮你打通两个知识体系之间的“任督二脉”。


一、信号与系统课里,我们学了什么?

信号与系统课程的核心思想其实很简单:把一个信号从不同角度去看

  • 时域:信号随时间怎么变化。
  • 频域:信号由哪些频率成分组成。

傅里叶变换帮我们从时域跳到频域:

拉普拉斯变换更进一步,引入复频率 ( s = \sigma + j\omega ),在图像处理里,它的离散形式就是大家熟知的拉普拉斯算子

在数字图像里,一个经典的拉普拉斯核(4邻域)长这样:

[[ 0, 1, 0], [ 1, -4, 1], [ 0, 1, 0]]

这个核的作用是什么?——边缘检测。它本质上是一个高通滤波器,能放大图像中灰度变化剧烈的地方。

而CNN的第一层卷积核,很多也长得像边缘检测算子。这难道是巧合吗?

二、实验一:用傅里叶变换“看”图像的频率

我们先拿一张人物图像(分辨率1080×1502),做二维离散傅里叶变换(2D-DFT)。

原始灰度图 → 幅度谱(对数变换后) → 相位谱

幅度谱的中心是低频成分(平滑区域),四周是高频成分(边缘、细节)。相位谱则保留了图像的结构信息。

接下来构造理想低通滤波器(截止半径80像素)和高通滤波器,分别乘到频域上,再反变换回空域:

  • 低通滤波:图像变模糊,去除了噪声和细节。
  • 高通滤波:只留下边缘和纹理,背景几乎消失。

这就是卷积定理的直观体现:

空域的卷积,等于频域的乘积。而CNN里的卷积层,做的就是这件事——只不过滤波器 ( h ) 不是手工设计的,而是从数据中学出来的。

三、实验二:用拉普拉斯算子检测边缘

拉普拉斯算子是二阶微分算子,对噪声敏感,所以实际常用**高斯-拉普拉斯(LoG)**先平滑再求导。

我们对比了三种算子:

  1. 4邻域拉普拉斯:对水平和垂直边缘敏感。
  2. 8邻域拉普拉斯:对斜向边缘也敏感。
  3. LoG(σ=2):边缘更干净,噪声抑制好。

实验结果(详见报告图3-1):

  • 拉普拉斯边缘图:白色表示正响应,黑色表示负响应。
  • 锐化图像:原图减去拉普拉斯结果,轮廓变得清晰。

这些手工设计的核,虽然效果不错,但固定、不灵活。而CNN可以学到成千上万种不同的“拉普拉斯”变体。

四、实验三:看CNN到底学到了什么

我搭建了一个简单的三层卷积网络:

Conv1: 1 → 16 通道, 3×3 核, + BatchNorm + ReLU + MaxPool Conv2: 16 → 32 通道, 3×3 核, + BN + ReLU + MaxPool Conv3: 32 → 64 通道, 3×3 核, + BN + ReLU + MaxPool

训练前,我首先好奇:这个模型在毫无训练的情况下,卷积核是随机的,能提取特征吗?
在本次课设里,我们没有进行训练,只是随机初始化。但即便如此,当我们可视化这些随机核时,发现很多核已经表现出类似边缘检测的模式(比如中间亮、四周暗,或者方向性的梯度)。

更有趣的是,即使随机初始化,各层的特征图也呈现出层次化的结构

  • Conv1的特征图:保留了较多的空间细节,响应边缘和纹理。
  • Conv2的特征图:开始出现重复模式,更抽象。
  • Conv3的特征图:分辨率降低,但语义信息更强(比如对人物轮廓、头发区域有选择响应)。

如果把Conv1的16个卷积核画出来(图4-3),你会发现——它们和拉普拉斯算子、Sobel算子、Gabor滤波器有极高的相似度:有的像水平边缘检测器,有的像垂直边缘检测器,有的像斑点检测器。

这说明了什么?CNN不是在“发明”新的操作,而是在学习信号处理里已有的“原子滤波器”,只是它们的形式更丰富、更适应数据

五、核心洞察:卷积定理是连接经典与现代的桥梁

我把整条思考链路画成了演进图(图5-1):

  1. 手工频域滤波(傅里叶高通) → 2.手工空域微分核(拉普拉斯)
    → 3.CNN第一层学习到的边缘检测核→ 4.CNN深层学习到的语义特征

每一步,卷积定理都在背后起作用:

传统方法手工设计 ( F_{\text{kernel}} ),而CNN用反向传播自动调整它。

更形象一点:CNN的第一层就是在学傅里叶频域里的“通带形状”,高层则在学组合这些基元来构建更复杂的模式

从这个角度看,深度学习并没有“推翻”经典信号处理,而是把它推广到了极致——用数据驱动的方式,在高维空间里做自适应滤波。

六、一些实验代码片段

整个实验用Python完成,主要依赖:

  • numpy,scipy:傅里叶变换、LoG滤波。
  • opencv-python:图像读写、基础滤波。
  • torch:CNN定义与特征可视化。
  • matplotlib:绘制所有图表。

下面贴几个关键片段(完整代码见课设报告附录):

6.1 二维傅里叶变换与滤波

importnumpyasnpimportcv2fromscipyimportndimagedeffourier_analysis(img_gray):# DFTf=np.fft.fft2(img_gray)fshift=np.fft.fftshift(f)magnitude=np.log(np.abs(fshift)+1)phase=np.angle(fshift)# 理想低通rows,cols=img_gray.shape crow,ccol=rows//2,cols//2lowpass=np.zeros((rows,cols))cv2.circle(lowpass,(ccol,crow),80,1,-1)# 应用滤波f_low=fshift*lowpass img_low=np.abs(np.fft.ifft2(np.fft.ifftshift(f_low)))returnmagnitude,phase,img_low

6.2 拉普拉斯算子

kernel_lap4=np.array([[0,1,0],[1,-4,1],[0,1,0]])lap4=cv2.filter2D(img_gray,-1,kernel_lap4)# LoG (高斯-拉普拉斯)fromscipy.ndimageimportgaussian_laplace log_result=gaussian_laplace(img_gray.astype(float),sigma=2.0)

6.3 CNN模型定义与特征提取

importtorch.nnasnnclassSimpleCNN(nn.Module):def__init__(self):super().__init__()self.conv1=nn.Conv2d(1,16,kernel_size=3,padding=1)self.pool1=nn.MaxPool2d(2)self.conv2=nn.Conv2d(16,32,3,padding=1)self.pool2=nn.MaxPool2d(2)self.conv3=nn.Conv2d(32,64,3,padding=1)self.pool3=nn.MaxPool2d(2)self.relu=nn.ReLU()defforward(self,x,return_features=False):f1=self.relu(self.conv1(x))x=self.pool1(f1)f2=self.relu(self.conv2(x))x=self.pool2(f2)f3=self.relu(self.conv3(x))ifreturn_features:returnf1,f2,f3returnself.pool3(f3)

可视化特征图时,我们把每个卷积层的输出(batch=1)取前几个通道画出来。即使模型没训练,随机核也能产生有结构的响应。

七、最大收获:别把“信号与系统”和“深度学习”割裂开

很多同学学信号与系统时觉得“这玩意儿古老、数学多、没用”,学深度学习时又把它当成一个全新的黑盒。但这次课设让我深刻意识到:

  • 傅里叶变换告诉你:图像 = 频率的叠加。
  • 拉普拉斯算子告诉你:边缘 = 二阶导数的过零点。
  • CNN告诉你:这些操作可以组合、堆叠、自动化。

没有信号与系统的基础,你只能把卷积核当成一个“神奇的模板”,而理解了卷积定理,你就能从频域的角度去思考:为什么浅层学边缘,深层学语义?本质上是因为多次卷积等价于频域多次乘积,相当于构造了更复杂的带通滤波器。

八、如果想继续深挖,可以做什么?

本次实验只用了随机初始化的CNN(未训练)。如果真正训练一个分类任务(比如人脸识别),观察训练前后卷积核的变化,会更有说服力。另外,还可以:

  • 对比手工设计的Gabor滤波器与CNN第一层核的相似度。
  • 梯度上升可视化每个卷积核最“喜欢”的模式。
  • 结合傅里叶域分析,计算每个卷积核的频响曲线,看它到底是低通、高通还是带通。

这些都能让经典理论与现代方法的联系更加紧密。


写在最后

这次课程设计让我对“信号处理”这门课彻底改观。它远不只是教我们算积分、拉普拉斯逆变换,而是在教我们用“变换”的眼光看问题。当我把这个眼光投射到CNN上时,很多以前觉得玄乎的东西,一下子变得清晰了。

如果你也在学这两门课,强烈建议找一张图片,自己动手:

  1. 做一次FFT,看看幅度谱和相位谱。
  2. 用拉普拉斯核做一次边缘检测。
  3. 搭一个最简单的CNN,把第一层卷积核画出来。

你一定会看到,它们之间那条隐秘而优美的连线。

附录:完整代码、所有实验结果图(傅里叶幅度谱、拉普拉斯边缘图、CNN核及特征图)已上传,见课程设计报告原文。


作者:陌生Boy
指导教师:GYY
课程:信号与线性系统分析课程设计
日期:2026年5月

http://www.jsqmd.com/news/988734/

相关文章:

  • 如何打造个人专属的数字记忆库:从微信数据到生活足迹的完整指南
  • Luminex多因子免疫检测技术革新,云克隆七因子体系实现Th1/Th2/Th17免疫平衡全景量化
  • 实现图片本地缓存,减少url重复请求
  • AZ系、ZK系、WE系——一张牌号选型对照,加四种成型工艺的匹配逻辑
  • 有哪些真正好用的降AIGC网站?能同时搞定知网查重和降低AIGC率的那种
  • 非技术背景AIPM技术学习攻略:不学废、不内卷、刚好够用
  • AIOps 智能日志模式挖掘与异常关联:从日志海洋到结构化洞察
  • 数据的加密与解密(23:32)
  • 微信聊天记录永久备份终极指南:用WeChatExporter完整保存你的数字记忆
  • 集合 USB,AI ENC,AEC,BF,全面功能的语音处理模组
  • 2026年腾讯云OpenClaw/Hermes Agent配置Token Plan保姆级教程分享
  • 光伏电缆厂家盘点:从资质产能看选型适配方向 - 互联网科技品牌测评
  • 深入探讨KDB+函数的秩和参数验证
  • RedPanda-CPP轻量级C/C++ IDE架构解析与性能优化对比
  • 2026深圳中央空调回收品牌推荐:标杆企业领衔TOP5权威榜单 - 广东再生资源回收
  • MySQL数据库零基础入门,数据库原理、SQL详解、库表操作、字段约束、基础查询全覆盖
  • 2026年 电热管源头厂家推荐榜单:模温机电热管/单头法兰式/双头高温/PET电热管专业选购指南 - 品牌发掘
  • 如何在Windows上高效读写Btrfs分区:实用跨平台文件系统指南
  • 阳朔西街高性价比民宿推荐,舒适体验等你来享
  • 阅卷老师每天要看多少份试卷?机器帮了多少忙
  • Django+Vue双端权限系统模板,内置全国三级行政区划与一键容器化部署能力
  • 如何用Sunshine打造你的个人游戏云:终极开源串流服务器指南
  • LPC800 USART ISP协议详解与实战:构建稳定现场固件升级方案
  • MC68HC908MR24 TIMB定时器与SPI模块实战配置与避坑指南
  • GitHub 上 Stars 最多的 8 个开源 AI Assistant 工具
  • 回文子串(Palindromic Substrings)—— 题解
  • 拆解 GEO 底层技术壁垒:融景科技凭借两项自研国家软著,服务中铁、华润、碧桂园等头部企业,打破湛江 AI 优化市场贴牌工具困局 - 广东科技观察
  • 如何挑选正宗新疆干果:无添加养生特产选购攻略
  • 2026年广东GEO优化推广榜单:豆包/元宝/DeepSeek AI平台搜索代运营,助力制造业工厂与灯具五金家具行业精准营销 - 品牌发掘
  • 如何用HTTrack轻松实现网站全量备份与离线浏览:3种实用方法