FMCW(调频连续波)雷达通过发射频率线性变化的电磁波,利用回波信号与发射信号的频率差来探测目标距离和速度。这种雷达在智能家居、安防监控等领域广泛应用,特别是在人体行为识别方面展现出独特优势。与传统摄像头相比,FMCW雷达不采集视觉图像,能更好保护隐私,同时不受光照条件影响。
多普勒效应是行为识别的核心物理原理。当人体部位发生运动时,回波信号会产生频率偏移。比如挥手动作会产生约±5Hz的频率变化,而走路时腿部摆动可能引起±20Hz的偏移。通过分析这些频率变化特征,就能建立不同行为的多普勒"指纹"。
格拉斯哥大学数据集采用了5.8GHz中心频率的FMCW雷达,带宽400MHz,理论距离分辨率可达0.375米。每个扫描周期(chirp)持续1毫秒,这样的参数配置既能捕捉细微动作,又不会遗漏快速运动。数据集包含行走、坐下、起立、转身、喝水、跌倒等常见日常行为,每种行为由不同性别、身高、年龄的受试者多次重复完成。
原始.dat数据文件包含的是ADC采集的IQ信号。处理时首先进行距离压缩:
matlab复制Data_time = reshape(Data, [NTS nc]); % 将数据重组为NTS×nc矩阵
win = ones(NTS,size(Data_time,2)); % 创建矩形窗
tmp = fftshift(fft(Data_time.*win),1); % 距离维FFT
Data_range = tmp(NTS/2+1:NTS,:); % 取正频率部分
MTI(动目标显示)滤波用于抑制静态杂波。实际项目中我发现,四阶巴特沃斯高通滤波器效果最佳:
matlab复制[b,a] = butter(4, 0.0075, 'high'); % 设计滤波器
for k=1:size(Data_range,1)
Data_range_MTI(k,:) = filter(b,a,Data_range(k,:));
end
注意:滤波截止频率需要根据具体场景调整。在办公室环境中,0.01π rad/sample的截止频率能有效保留人体微动信号。
短时傅里叶变换(STFT)是多普勒谱提取的关键步骤。经过多次实验,我总结出以下参数组合效果最佳:
matlab复制MD.PRF = 1/Tsweep; % 脉冲重复频率
MD.TimeWindowLength = 200;
MD.OverlapFactor = 0.95;
MD.FFTPoints = MD.Pad_Factor*MD.TimeWindowLength;
for RBin=bin_indl:bin_indu
Data_MTI_temp = fftshift(spectrogram(Data_range_MTI(RBin,:),...));
Data_spec_MTI2 = Data_spec_MTI2 + abs(Data_MTI_temp);
end
踩坑提醒:直接使用spectrogram函数会产生边缘效应,建议先对数据加汉宁窗。此外,速度轴标定时要记得考虑载波频率(5.8GHz)的影响。
原始灰度谱图视觉效果较差,通过以下处理可显著提升图像质量:
matlab复制imagesc(MD.TimeAxis, MD.DopplerAxis, 20*log10(abs(Data_spec_MTI2)));
colormap('jet');
clim = get(gca,'CLim');
set(gca, 'CLim', clim(2)+[-40,0]); % 动态范围40dB
set(gca,'xtick',[],'ytick',[]); % 隐藏坐标轴
set(gca,'LooseInset', get(gca,'TightInset')); % 去除白边
实际项目中需要处理成百上千个数据文件。我开发了一套自动化流程:
matlab复制Files = dir(fullfile('.\data\*.dat'));
for i=1:length(Files)
% 数据处理流程...
savepath = ['./img/',behavior_type,'/',filename(1:end-4),'.jpg'];
saveas(gca,savepath,'jpg');
end
经验分享:建议在批处理前先检查所有数据文件的完整性。曾经有个项目因为一个损坏的.dat文件导致整个流程中断,浪费了半天时间排查。
单纯依赖多普勒谱可能丢失空间信息。我通常采用以下特征组合:
matlab复制% 计算微多普勒质心
[rows,cols] = size(spectrogram);
for t=1:cols
column = spectrogram(:,t);
centroid(t) = sum(column.*(1:rows)')/sum(column);
end
在智能家居场景实测时,发现了几个关键问题:
一个实用的解决方案是结合雷达和PIR传感器,当PIR检测到人体存在时再启动雷达分析,这样能显著降低功耗。
除了STFT,我还测试过其他时频分析方法:
对于常规行为识别,STFT依然是性价比最高的选择。只有在需要分析精细手指动作时,才考虑使用WVD等高级方法。