4、频域降噪原理:傅里叶变换与小波变换基础、频域滤波(低通、带阻)、DCT域降噪

聊频域降噪之前,我想先问一个问题:你平时在时域里做滤波,是不是总觉得有些噪声和细节纠缠在一起,怎么调都分不开?

我早年做一款低照度IPC时也遇到过这问题。空域滤波调重了,细节全糊;调轻了,噪声还在。后来我意识到——换个角度看问题,也许就豁然开朗了。这个“换个角度”,就是频域。

4.1 为什么要去频域?

时域里,像素值是随空间位置变化的。频域里,我们看的是图像中灰度变化的“快慢”。

  • 低频:图像中平坦区域、缓慢变化的背景。
  • 高频:边缘、纹理细节,以及——噪声。

说白了,噪声和细节在频域里都挤在高频段。但它们的分布特性不一样。细节通常有方向性、有结构,而噪声是随机的、无规律的。这就是频域降噪能比空域做得更精细的原因。

核心认知:频域降噪不是“一刀切”地把高频全砍掉,而是根据噪声和信号在频域的不同分布,做选择性处理。

4.2 傅里叶变换:从空间到频率的“翻译官”

傅里叶变换,就是把图像从空间域映射到频率域。对于离散图像,我们用的是离散傅里叶变换(DFT)。

公式我就不推了,你记住一个直观理解就行:
傅里叶变换把图像分解成不同频率、不同方向的正弦波分量。每个分量有幅度和相位。

  • 幅度谱:告诉我们图像里各个频率成分的“能量”有多大。
  • 相位谱:决定了这些频率成分在空间上的位置。

我刚开始做频域滤波时,犯过一个低级错误——只保留幅度谱,把相位谱扔了。结果重建出来的图像完全看不出原样。相位信息对图像结构至关重要,千万别丢。

实战技巧:在安防监控中,我们通常对图像分块做FFT(快速傅里叶变换),而不是整图做。因为整图FFT会把全局频率混在一起,局部噪声反而不好处理。我习惯用32x32或64x64的块大小,步长重叠一半,效果比较稳。

4.3 频域滤波:低通与带阻

傅里叶变换之后,我们就可以在频域里“动手”了。最基础的操作就是滤波。

4.3.1 低通滤波

低通滤波,就是保留低频,抑制高频。说白了就是让图像变“糊”。

  • 理想低通:在截止频率处一刀切。但会产生振铃效应,图像边缘出现“鬼影”。我建议你别用。
  • 巴特沃斯低通:过渡平滑,振铃少。阶数越高,越接近理想低通。
  • 高斯低通:最常用。没有振铃,过渡自然。我项目中90%的低通场景都用它。
滤波器类型 振铃效应 边缘保留 推荐场景
理想低通 严重 差 不推荐
巴特沃斯低通 中等 中等 需要控制截止锐度时
高斯低通 无 较好 通用降噪

4.3.2 带阻滤波

带阻滤波,是专门抑制某个频率范围的噪声。比如监控画面里50Hz/60Hz的工频干扰,或者传感器产生的固定模式噪声(FPN)。

我记得有一次做球机项目,画面里总有一条条横纹。时域滤波怎么都去不掉。后来在频域一看,频谱图上对应垂直方向有一排亮斑。用带阻滤波器把那几个频率点一压,横纹立刻消失。那种感觉,真的很爽。

注意:带阻滤波器的带宽要控制好。带宽太窄,抑制不干净;带宽太宽,会连带把有用的图像细节也干掉。我一般从3-5个像素的带宽开始试,逐步收窄。

4.4 小波变换:多分辨率分析利器

傅里叶变换有个硬伤:它只能告诉你图像里有哪些频率成分,但不知道这些频率出现在哪里。小波变换解决了这个问题。

小波变换把图像分解成不同尺度(分辨率)和不同方向的子带:

  • LL子带:低频近似,相当于原图的缩略图。
  • LH、HL、HH子带:水平、垂直、对角方向的高频细节。

噪声主要分布在高频子带(LH、HL、HH),而且尺度越小(分辨率越高),噪声越明显。

小波降噪的经典流程:

  1. 对图像做小波分解,得到各层子带。
  2. 对高频子带做阈值处理(软阈值或硬阈值)。
  3. 重构图像。

我的经验:小波降噪在低照度场景下特别有效。因为低照度噪声往往分布在多个尺度上,小波的多分辨率特性可以逐层剥离噪声。我常用db4或sym8小波基,分解层数3-4层。再多就容易丢失低频细节。

4.5 DCT域降噪:JPEG背后的功臣

离散余弦变换(DCT),你可能更熟悉它在JPEG压缩里的角色。但DCT在降噪上也有独特优势。

DCT和傅里叶变换类似,但DCT只用余弦函数,没有虚部。计算量更小,能量集中性更好——图像的大部分能量都集中在DCT系数的左上角(低频区)。

DCT域降噪怎么做?

  • 把图像分成8x8或16x16的块。
  • 对每个块做DCT变换。
  • 对高频系数做衰减或置零。
  • 反DCT重建。

这和JPEG压缩的量化过程很像。区别在于,JPEG量化是为了压缩码率,而DCT降噪是为了抑制噪声。

避坑指南:DCT分块处理会产生块效应,尤其是降噪强度较大时。我曾经在项目中吃过这个亏——降噪效果很好,但画面出现明显的马赛克感。后来我在块与块之间加了重叠处理(overlap-add),块效应基本消除了。重叠宽度取块大小的1/4比较合适。

4.6 三种频域降噪方法对比

方法 优势 劣势 安防适用场景
傅里叶(频域滤波) 实现简单,适合去除周期性噪声 无法定位频率位置,全局处理 工频干扰、横纹噪声
小波变换 多分辨率,保留边缘好 计算量大,小波基选择依赖经验 低照度噪声、复杂纹理场景
DCT域降噪 计算快,能量集中,易硬件实现 块效应,对非平稳噪声效果一般 实时性要求高的IPC、SoC平台

4.7 本章知识体系

下面这张图,帮你把本章的核心逻辑串起来:

频域降噪知识体系 频域降噪 傅里叶变换 小波变换 DCT变换 低通滤波 带阻滤波 多分辨率分解 分块DCT + 阈值 核心思路 将图像从空间域变换到频率域 → 分析噪声与信号的频率分布差异 → 选择性抑制噪声频率 → 反变换回空间域

三种方法各有各的脾气。傅里叶适合处理周期性噪声,小波在低照度场景下表现突出,DCT则胜在计算效率。实际项目中,我经常把它们组合着用——比如先用DCT做快速预处理,再用小波做精细降噪。效果往往1+1>2。

一句话总结:频域降噪的本质,是利用变换域把噪声和信号“拉开距离”,然后精准地只对噪声下手。理解了这个,你就能在空域和频域之间自由切换,不再被一种方法束缚。