第4章 信号与图像处理 章节摘要:现实中的数据很少是干净整齐的表格,它们更多是传感器采回来的波形、设备录下来的振动、显微镜拍出来的照片。本章处理的就是这一类数据:先教你把一段时域信号拆成频率成分,用 scipy.fft 做频谱分析;再教你在频域里做文章,用 scipy.signal 设计滤波器,把噪声和工频干扰按频率砍掉;随后把同样的思路延伸到二维,用 scipy.ndimage 给图像去噪、做形态学分析、数出图中的连通对象。读完本章,你将拥有"频谱分析 → 滤波去噪 → 图像处理"的完整动手链路,并能独立完成一个信号清洗与频谱验证的小项目。整章节奏与前面几章一致:每节先给能跑的代码,再讲原理、取舍与坑,适合边读边敲。
章节摘要:现实中的数据很少是干净整齐的表格,它们更多是传感器采回来的波形、设备录下来的振动、显微镜拍出来的照片。本章处理的就是这一类数据:先教你把一段时域信号拆成频率成分,用 scipy.fft 做频谱分析;再教你在频域里做文章,用 scipy.signal 设计滤波器,把噪声和工频干扰按频率砍掉;随后把同样的思路延伸到二维,用 scipy.ndimage 给图像去噪、做形态学分析、数出图中的连通对象。读完本章,你将拥有"频谱分析 → 滤波去噪 → 图像处理"的完整动手链路,并能独立完成一个信号清洗与频谱验证的小项目。整章节奏与前面几章一致:每节先给能跑的代码,再讲原理、取舍与坑,适合边读边敲。

阅读完本章,你应当能够:
一句话记住本章:先看清频谱里有什么,再决定动哪一刀;一维信号靠 fft 与 signal,二维信号交给 ndimage。
上图把本章的武器分成两组:左边一列是信号链路——采样信号先进 fft 看清频谱,再交给 signal 滤波,得到干净波形;右边一列是图像链路——图像矩阵交给 ndimage,完成去噪与对象计数。两条链路共享同一套思想:先分析,再处理,后验证。图里的每一步,都在后面四个小节里有一节对应。
从一段能跑的频谱分析代码开始,讲清 scipy.fft 相对 numpy.fft 的三个优势:后端切换、实数变换家族、配套频率轴工具。随后进入两个绕不开的概念——采样定理决定了你能看到多高的频率,窗函数决定了频谱会不会"漏油"。这一节给你装上"频谱眼"。
把"看清楚"升级为"动手改":用 butter、cheby1、ellip 设计滤波器,用 lfilter 做因果滤波、filtfilt 做零相位滤波,用 sos 形式保证高阶滤波器的数值稳定。最后用移动平均与 IIR 滤波的正面对比,说明为什么频域思维能省掉大量试错。配图是一张滤波前后频谱对比示意,帮你把"频域验收"变成直觉。
把一维信号换成二维数组:高斯滤波与中值滤波的取舍、形态学四件套对二值图的操作、label 与 find_objects 的连通域计数与对象定位,以及 rotate 与 zoom 的几何变换。结尾划清 scipy.ndimage 与 skimage 的边界,免得在错误的位置找工具。
把前三节串成一条流水线:一段含 50 赫兹工频干扰的振动信号,先频谱定位,再带阻与低通组合滤波,最后用频谱对比验证效果;后半部分处理一张带噪图像,对比中值与高斯滤波。配图是一张滤波器选型流程,把四种干扰场景的应对方式画在一张图上。这是一次完整的"分析—设计—验证"演练。
本章的顺序不是随意的:频谱分析是滤波的前提,一维经验是二维图像的基础。你不知道噪声在哪个频率,就没法设计滤波器;你理解了"按频率做手脚"的一维逻辑,再去看二维图像的去噪与形态学,会顺很多。
采样数据 │ ▼ 4.1 频谱分析:先看清信号里有什么 │ ▼ 4.2 滤波去噪:按频率砍掉干扰与噪声 │ ▼ 4.3 图像处理:把一维经验搬到二维数组 │ ▼ 4.4 实战:频谱验证 加 滤波 加 图像去噪 全链路
4.1 与 4.2 构成"分析—设计"闭环:先定位,再动手。4.3 是同一套思想在二维的延续,滤波、去噪的概念一脉相承。4.4 则是把三节知识放进一个真实场景里做验收,你会发现流程比函数更重要。反过来看,跳过 4.1 直接读 4.2,滤波器参数会像咒语;跳过 4.2 直接进 4.4,验证环节无从下手。把 4.1 的频谱眼练好,后面整章都会轻松。