3. 瀑布图的生成原理
声呐原始回波本身只是一串随时间变化的电压采样值,它记录的是“某一时刻接收到的声压强弱”。瀑布图要回答的却是另一个问题:在某个时刻,哪些频率上出现了能量,这些能量随时间如何变化。因此,从原始回波到瀑布图,本质上要完成一次“时间序列 → 时间-频率-强度”的三维映射:横轴是时间,纵轴是频率,颜色(或亮度)是强度。理解这条映射链,是正确识读瀑布图的前提。
一、横纵轴到底代表什么
先明确坐标约定,全文与图示保持一致。瀑布图的横轴为时间,从左到右表示由早到晚,通常以秒或帧号为刻度;纵轴为频率,从下到上表示由低到高,单位赫兹或千赫兹;颜色为强度,一般用暖色(红、橙)表示强,冷色(蓝、青)表示弱。需要特别提醒:瀑布图不是“频率随时间漂移的曲线图”,而是把每一帧的频谱按时间顺序横向排列、逐列拼接而成的二维强度图。每一列对应一个时间切片,列内每个像素对应一个频率单元(bin),像素颜色对应该频率单元在该时刻的能量。
与之容易混淆的是“频谱图”(单帧)和“声谱图”(spectrogram)。单帧频谱只有频率-强度两个维度;瀑布图在其基础上增加了时间维度,因此能看出“音调是否稳定、是否扫频、是否出现瞬态脉冲”等随时间演化的特征。
二、从回波到瀑布图的处理链
完整链路可以概括为:原始采样 → 分帧加窗 → 频谱变换 → 强度换算 → 动态范围压缩 → 颜色映射 → 逐列拼接。下面结合一个教学示例参数展开(以下数值为示例假设,用于说明流程,非实测结果)。
假设某被动声呐通道采样率 fs = 48 kHz,取一帧长度 N = 1024 点,帧移 256 点(即 75% 重叠),加汉宁窗。则单帧时长约 1024/48000 ≈ 21.3 ms,帧移约 5.3 ms,频率分辨率 Δf = fs/N ≈ 46.9 Hz,可分析频率范围为 0~24 kHz。对每帧做 FFT 得到 512 个有效频点(单边谱),取对数功率后得到该帧的强度向量。把连续若干帧的强度向量按时间顺序并排,就得到一张“帧数 × 频点数”的强度矩阵,这正是瀑布图的底层数据。
这里有两个直接影响识读效果的参数:帧长 N 决定频率分辨率,N 越大频率分得越细,但时间分辨率变差;帧移决定时间分辨率,帧移越小时间越细腻,但数据量和计算量上升。工程上常按“目标信号是窄带连续音还是短促脉冲”来折中:找窄带线谱宜用较长帧,看瞬态敲击宜用较短帧并减小帧移。
三、强度换算与动态范围压缩
FFT 输出的是线性幅度,直接映射颜色会出现“强信号一片饱和、弱信号全被淹没”的问题。因此要先转成功率或分贝:对功率谱取 10·log10,对幅度谱取 20·log10。分贝化把巨大的线性动态范围压缩到人眼和屏幕可分辨的区间,这就是动态范围压缩的核心作用。
随后还要设定显示动态范围,例如把 −100 dB 到 −40 dB 映射到 0~255 的色阶:低于 −100 dB 视为背景噪声(最冷色),高于 −40 dB 视为饱和(最暖色)。这个上下限的选择极其关键——上限太低会让强目标“糊成一片”,下限太高则弱线谱消失。实际识读时若发现画面“全蓝”或“全红”,首先应怀疑显示动态范围设置不当,而不是目标不存在。
四、颜色映射与识读判据
颜色映射是把分贝值转成像素颜色的最后一步。常见做法是使用“蓝—青—绿—黄—红”的伪彩色表,冷色对应低分贝、暖色对应高分贝。映射时要注意两点:一是色标必须与显示动态范围一致,否则同一颜色在不同设置下代表不同强度;二是尽量使用感知均匀的色表,避免某些色段“跳变”造成误判。
掌握映射链后,识读就有了明确判据。若目标为稳定窄带线谱(如机械运转的谐波),瀑布图上表现为一条水平亮线,频率位置不随时间变化;若目标为扫频信号(如主动声呐的线性调频),则表现为一条斜线,斜率对应调频速率;若为短促脉冲(如敲击、爆炸声),则表现为某一时刻贯穿多频点的竖直亮条。反过来,若画面出现均匀的横向条纹,多为电源工频或系统自噪声干扰;若出现周期性竖直条纹,则可能是帧同步或数据丢帧问题。
五、参数选择对图面的实际影响
同一段回波,用不同参数生成的瀑布图可能“看起来完全不同”。以示例参数为例:把帧长从 1024 增到 4096,频率分辨率从约 47 Hz 提升到约 11.7 Hz,原本挤在一起的两条邻近线谱会分开,但每帧时长增至约 85 ms,快速跳变的细节会被抹平;把帧移从 256 减到 64,时间轴更细腻,短脉冲的起止时刻更清楚,但图面数据量增至 4 倍。因此实际工作中应先明确“要看频率细节还是看时间细节”,再定帧长与帧移,而不是套用固定值。
总结来说,瀑布图不是对回波的“拍照”,而是一次有损但可控的映射:分帧加窗决定了时间与频率的分辨率折中,分贝换算与动态范围压缩决定了弱目标能否显现,颜色映射决定了人眼能否分辨。理解这条链路,才能在看到一条亮线、一条斜线或一片噪底时,准确判断它对应回波中的什么物理现象,以及当前显示参数是否合理。