最近在捣鼓信号异常检测的时候,发现有个挺有意思的方法。不需要复杂的深度学习框架,直接在MATLAB里用传统信号处理+图像处理思路就能搞定。咱们先看个实际案例

MATLAB环境下一种新的一维时间序列信号变化/事件/异常检测方法。 算法运行环境为MATLAB R2021b,执行一种新的一维时间序列信号变化/事件/异常检测,并给出了若干例子。 压缩包=程序+数据+参考。 load data_1.mat % load data fs = 44100; % sampling frequency x = x/max(abs(x)); % normalize the signal N = length(x); % signal length t = (0:N-1)/fs; % time vector

加载数据后顺手做个归一化,这是常规操作:

matlab 复制代码
load data_1.mat
x = x/max(abs(x));  % 音量拉满到[-1,1],防止后续处理被幅值影响
t = (0:length(x)-1)/44100;  % 44.1kHz采样率对应音频场景

核心思路是把时域信号转成时频图,再用图像边缘检测那套来找异常。来看这个骚操作:

matlab 复制代码
% 时频变换
[~,F,T,P] = spectrogram(x, 256, 250, 256, 44100); 
P_db = 10*log10(abs(P));  % 转分贝尺度更符合听觉特性

% 当图像处理
edge_map = edge(P_db, 'canny', [0.1 0.5], 1.5);  % 用Canny算子找边缘

这里有个细节------spectrogram的overlap设到250(256点窗长),相当于97%的重叠率。虽然计算量上去了,但时域分辨率大幅提升,对小尺度事件更敏感。Canny算子的双阈值设置也是门道,低阈值设0.1避免漏检,高阈值0.5防误报,sigma=1.5让高斯平滑适度保留细节。

接着用形态学处理去噪:

matlab 复制代码
se = strel('disk',2); 
clean_map = imopen(edge_map, se);  % 开运算去除孤立噪点

这个disk结构元素选2像素半径,既能抹掉细碎杂讯,又不至于把真实事件的边缘抹平。试过用矩形元素,但在斜向边缘保持上不如disk自然。

最后做个自适应阈值分割:

matlab 复制代码
[~, event_regions] = adaptiveThreshold(clean_map, 50, 0.2);  % 自定义函数

这个adaptiveThreshold的实现挺有意思,核心是分块统计局部能量:

matlab 复制代码
function [threshold, mask] = adaptiveThreshold(map, block_size, sensitivity)
    [rows, cols] = size(map);
    mask = false(size(map));
    
    % 分块处理
    for i = 1:block_size:rows
        for j = 1:block_size:cols
            row_range = i:min(i+block_size-1, rows);
            col_range = j:min(j+block_size-1, cols);
            
            block = map(row_range, col_range);
            local_thresh = mean(block(:)) + sensitivity*std(block(:));
            mask(row_range, col_range) = block > local_thresh;
        end
    end
    threshold = mask;
end

分块尺寸50×50在时频图上约对应350ms的时间窗,sensitivity参数控制灵敏度。比起全局阈值,这种动态调整能更好应对信号中的能量波动。

MATLAB环境下一种新的一维时间序列信号变化/事件/异常检测方法。 算法运行环境为MATLAB R2021b,执行一种新的一维时间序列信号变化/事件/异常检测,并给出了若干例子。 压缩包=程序+数据+参考。 load data_1.mat % load data fs = 44100; % sampling frequency x = x/max(abs(x)); % normalize the signal N = length(x); % signal length t = (0:N-1)/fs; % time vector

实际效果看data1的结果图(假装有图),正常段的平稳振荡和异常段的突变在时频边缘图上对比明显。测试过瞬态脉冲(如data2中的爆破音)、渐变式变化(data_3中的缓慢频移),方法都能稳定捕捉。

有个坑要注意:处理长信号时内存容易爆。试过10分钟音频(约2.6亿采样点),直接处理会OOM。这时候需要分段处理,每段加汉宁窗重叠10%来避免边缘效应。

总的来说,这套方法胜在物理意义明确------把信号异常转化为时频图的"视觉"特征来处理。调参也比深度学习友好得多,适合快速原型验证。完整代码包里还带了三个典型场景的数据,改改参数就能看到不同效果,比看论文公式直观多了。

相关推荐
沃达德软件14 天前
视频侦查图像清晰化技术
图像处理·人工智能·目标检测·机器学习·计算机视觉·视觉检测·超分辨率重建
JoannaJuanCV19 天前
二维码超分辨率重构-数据集及训练框架概述
超分辨率重建
JoannaJuanCV19 天前
图像超分辨率重构-SRGAN 论文解读
超分辨率重建·srgan
沃达德软件25 天前
模糊图像处理系统功能解析
图像处理·人工智能·深度学习·目标检测·计算机视觉·目标跟踪·超分辨率重建
AI即插即用1 个月前
即插即用系列 | CVPR 2025 CATANet:一种用于轻量级图像超分辨率的高效内容感知 Token 聚合网络
图像处理·人工智能·深度学习·神经网络·计算机视觉·超分辨率重建
AI即插即用1 个月前
超分辨率重建(论文精读) | CVPR 2025 LSRNA:利用隐空间超分与噪声对齐,打破扩散模型生成 4K 图像的效率瓶颈
图像处理·人工智能·深度学习·计算机视觉·视觉检测·超分辨率重建
AI即插即用1 个月前
超分辨率重建(代码实践) | CVPR 2025 LSRNA:利用隐空间超分与噪声对齐,打破扩散模型生成 4K 图像的效率瓶颈
图像处理·人工智能·深度学习·神经网络·计算机视觉·超分辨率重建
AI即插即用1 个月前
超分辨率重建 | 2025 FIWHN:轻量级超分辨率 SOTA!基于“宽残差”与 Transformer 混合架构的高效网络(代码实践)
图像处理·人工智能·深度学习·计算机视觉·transformer·超分辨率重建
AI即插即用1 个月前
超分辨率重建 | CVPR 2024 DarkIR:轻量级低光照图像增强与去模糊模型(代码实践)
图像处理·人工智能·深度学习·神经网络·计算机视觉·超分辨率重建