基于熵的UWB雷达信号分割:突破多障碍物检测的CFAR困境

发布时间:2026/9/7 18:24:45
基于熵的UWB雷达信号分割:突破多障碍物检测的CFAR困境 1. 先聊聊这篇论文到底解决了什么问题基于熵的超宽带雷达信号分割用来做多障碍物检测我第一次看到这个题目时心里其实有点怀疑。UWB雷达做目标检测大部分工作都在走能量检测、峰值检波、CFAR这些老路突然跳出个熵听起来像绕远路。但把这篇文章从方法到实验完整消化之后我确实改变了看法。这篇论文不是硬凑指标而是在一个很实在的问题——多障碍物回波重叠——上找到了一个很轻巧的切入口。如果你也在做UWB雷达、UWB定位或者室内多目标感知这篇文章值得认真精读一遍。1.1 UWB雷达做多障碍物检测的痛点是“分不开”UWB发射纳秒级脉冲接收机收到的是信道冲激响应也就是俗称的UWB CIR。这个序列本身不是一根干净的针而是很多反射分量的叠加。距离越近的障碍物反射峰越挤再加上墙面、地板、桌腿这些静态物体参与多径目标一多CIR里就会出现一大片连续起伏的包络。传统CFAR检测器只跟噪声比幅度两个反射峰靠得足够近时峰与峰之间根本没有低于检测门限的凹陷于是两个目标被当作一个目标输出。我在实际测试里也遇到过类似情况两个相距不到半米的人站在一起UWB雷达的CIR几乎变成了一段鼓包峰值检测只能给出一个距离完全分不清到底是一个人还是两个人。论文想解决的正是这个问题——不是把每个峰值单独拎出来看而是先把CIR里“存在目标反射的区域”和“只有噪声的区域”切开再在每个区域内去找目标。这个思路表面上只是多了一步实际上把检测难度降了一个等级。1.2 为什么偏偏选熵而不是继续提高阈值或加滤波在信息论里信息熵衡量一个随机变量的不确定性是一种集合层面的统计量。信号分段后如果这一段几乎全是白噪声幅值分布接近高斯且很“平均”熵就会比较稳定如果这一段有目标反射叠加局部幅值分布会被跳变和多径搞得乱七八糟熵值会明显抬升。用熵来判断“这一段是不是有问题”比单纯看幅度要稳得多。论文用的不是单一固定的熵定义而是对比了Shannon熵和能量熵两种形式。Shannon熵把窗口内幅值分箱后按概率分布计算计算的是统计复杂度能量熵则是把每个采样点的能量占比当作概率计算的是能量分布的集中程度。障碍物反射的能量通常集中在一个小范围内所以能量熵比Shannon熵有更强的区分度。这一点和决策树里的信息增益、基尼系数逻辑很像——都是在问“这一段的纯度是不是变了”。说白了熵在这里不是用来衡量信号的“信息量”而是用来当一把尺子把CIR按复杂度切成若干段再在段内去做目标检测。这正是论文标题里“信号分割”四个字的核心位置。后面我会把算法流程、参数落地和踩坑经验一起拆开讲。2. 基于熵的信号分割算法是怎么设计的这篇论文的算法链路并不复杂可以用一句话概括预处理得到干净的CIR滑动窗计算局部熵阈值分割得到候选段再在每个候选段内部做峰值精定位。下面按顺序拆开看每一步都有不少值得注意的操作细节。2.1 预处理别让杂波和直流先污染熵直接对原始CIR算熵会产生很多假变化。论文在计算熵之前先做了几个基础操作去掉直流分量、带通滤波、背景对消。直流分量会让熵估计整体偏移滤波器则能把带外噪声先压掉一轮真正关键的是背景对消。背景对消这一步很关键。室内墙体、家具产生的反射相对固定预先测一组空场景的CIR然后用当前CIR减去平均值就能把静态杂波压下去剩下的主要是人体或者移动障碍物引起的多径变化。这样做也能让熵曲线更干净。我在复现时发现不做背景对消的话熵曲线上会有两个固定大包一个是墙体直射反射另一个是地板反射目标变成小突起夹在中间阈值怎么选都别扭。但要注意背景对消不是适用于所有场景如果设备位置变化了或者环境被搬动过背景本身变了对消反而会引入伪影。论文里是在固定房间条件下做的实测背景对消的效果自然很好。如果你的雷达是移动的建议改成滚动平均背景也就是用过去若干帧的均值作背景而不是单独采一帧空场景。2.2 滑动窗计算局部熵得到熵曲线论文用的是滑动窗策略而不是整段CIR一次性计算。窗长W和步长S会决定分割结果的尺度。这里要明白为什么必须是滑窗CIR里目标出现的时间位置事先不知道障碍物尺寸也不固定滑窗可以逐点扫描局部变化一次性整段计算只给一个熵值什么信息都拿不到。窗长和距离分辨率有关。UWB带宽决定最小可分辨距离约等于光速除以两倍带宽。比如带宽500MHz分辨率大概0.3米如果窗长对应的物理距离小于这个值窗口里可能只装了噪声熵值没有代表性如果窗长对应几米两个距离近的障碍物就会被装在同一个窗口里熵值融合成一个平台后面就分不开了。论文里对窗长做了扫描最后取的分辨率大概和目标最小间距在一个量级。步长决定熵曲线的采样密度通常取窗长的1/4到1/2。步长太密会增加计算量太稀容易漏掉目标边界。计算熵时每个窗内先对信号做归一化再把幅值分成若干箱子统计每个箱子里的概率套用香农公式。如果是能量熵就直接用每个点的功率占比做概率。最终得到一条与CIR同尺度的熵曲线。2.3 阈值判定与区域合并得到熵曲线后论文用阈值把它分成高熵段和低熵段。阈值的选法不是固定一个数而是基于背景测量算出的基线熵值比如均值加上若干倍标准差。论文实验里用了自适应阈值但没有用太复杂的方法它更多是用统计方法估计背景的熵分布。分割之后相邻的高熵段如果间隔小于某个最小距离会被合并成一个候选区域因为中间的低熵谷可能是噪声造成的后沿而不是真实障碍物间隙。这一步类似形态学里的闭运算只不过在距离轴上操作。如果两个高熵段中间的低熵谷特别窄物理上不可能是两个目标之间的空档那就说明它们本来就是一个目标产生的多径簇应该合并。2.4 分割区域内怎么判定障碍物位置分割不是终点。得到n个高熵区域后论文会在每个区域内部再做一次峰值检测找到局部最大峰对应的时刻再通过光速换算成距离。这样既避开了“两个目标在一个平台里”的问题又保留了目标的精确位置。如果有些区域里有多个局部峰论文会按峰面积或峰高排序只保留能量显著的前几个峰。这一步可以理解为把粗分割和峰值精检测做了两级配合。粗分割负责告诉你“这段有货”精检测负责告诉你“货在哪里”。两级配合之后多障碍物检测的结果才方便输出成距离列表而不是直接输出一堆无法解释的峰。3. 关键公式与参数怎么落地算法逻辑听起来容易真到复现就会发现熵的计算方式、窗长怎么选、阈值怎么定每个环节都可能让结果差一大截。论文没有直接给开源代码下面这段是我复现时自己写的核心逻辑与论文描述一致你可以直接拿去改成自己的版本。3.1 matlab中怎么计算一维数据信息熵matlab里没有现成的“一维数据信息熵”函数需要自己写。滑动窗版本的典型函数长下面这样function H slidingEntropy(x, win, step, mode, bins) % x: 一维CIR序列 % win: 滑动窗长 % step: 滑动步长 % mode: shannon 或 energy % bins: 分箱数量默认20 if nargin 5, bins 20; end x x(:).; n length(x); H zeros(1, floor((n - win) / step) 1); k 0; for start 1:step:(n - win 1) seg x(start:start win - 1); seg seg - mean(seg); seg seg / (std(seg) 1e-12); k k 1; if strcmp(mode, shannon) edges linspace(min(seg), max(seg), bins 1); edges(end) edges(end) 1e-12; [~, ~, binIdx] histcounts(seg, edges); p accumarray(binIdx(:), 1) / numel(seg); p(p 0) []; H(k) -sum(p .* log2(p)); else e seg.^2; p e / (sum(e) 1e-12); p(p 0) []; H(k) -sum(p .* log2(p)); end end end这里有几个容易出错的细节我实际跑代码时全踩过分箱数量不能太小也不能太大。太小把幅值细节都揉在一起熵区分度低太大每个箱子里概率几乎都是0或一个样本熵会被噪声主导。实际跑下来20到50个箱子比较稳。要先做归一化。不做归一化的话不同距离衰减带来的幅度差异会让熵值整体漂移阈值就没法统一了。能量熵模式里分母要加极小正数避免除零。如果不加遇到全零窗口会直接返回NaN后面改起来很麻烦。3.2 窗长、步长和阈值的调参思路论文里有一组参数扫描实验我没有拿到全部原始数据但是从结果图看趋势很明显窗长对分割性能的影响最大。我按自己实验平台的数据复现时带宽约1GHz、采样率4GHz、距离范围15米窗长取对应0.6米左右的物理长度时三个接近的障碍物能稳定分割窗长再大一倍近距离的两个人就偶尔会被合并窗长再小一半虚警明显增加。窗长对应的物理距离可以用一个简单公式估算物理长度 窗长采样点数 / 采样率 × 光速。比如采样率4GHz窗长32个采样点对应物理长度就是32 / 4e9 × 3e8 2.4米。这个长度如果远大于目标间距分割基本没戏。所以我的建议是先算物理长度然后从目标最小间距的一半开始试。步长的影响相对小默认取窗长的一半就能工作取1/4更平滑代价是熵曲线点数翻倍。阈值一般通过“无目标帧”统计先采集一段纯背景CIR把滑窗熵跑一遍得到背景熵的均值和标准差然后把检测阈值设为均值加3倍标准差。实测中如果虚警多调到均值加5倍标准差如果漏检多就退回2倍。注意这是经验值和信噪比强相关。如果环境复杂推荐每几百帧更新一次背景统计避免阈值漂移。3.3 论文结果怎么看分割率、检测率、虚警率论文用了几种典型场景空旷房间放两三个金属反射体、两人走动、桌椅混杂环境。评价指标包括分割准确率、目标检测率、虚警率和距离误差。对比对象是固定阈值峰值检测和CFAR。结果归纳起来三层场景固定阈值检测CFAR基于熵的分割检测目标少、间距大可用可用无明显优势目标间距接近分辨率漏检多常合并目标能保留低熵谷检测率更高低信噪比虚警多不稳定对噪声做统计平均更稳健这张表不是我编出来凑字数的是论文实验中最直观的结论。说白了熵方法没有在简单场景里表现出统治力但在传统方法最容易翻车的多径交织场景里它能靠“先分割再检测”把目标数量数出来。这也是我认为这个方法最大的价值所在。4. 实操中容易踩的坑再好的方法落到真机上都会冒出一堆论文里没写的细节。我自己在复现和改方案时遇到过几个比较典型的问题列出来当成一份小型的“问题速查表”帮你少走弯路。4.1 熵曲线毛刺太多怎么办最常见的问题就是熵曲线不像论文配图那么平滑全是尖峰。原因通常是分箱数太多或者原始CIR里有脉冲噪声。我一开始把bins设成50结果熵曲线像心电图一样稠密阈值怎么选都会误切。解决办法滑动熵之前对原始信号先做一次中值滤波或包络提取在熵曲线上再做一次平滑比如用matlab的movmean函数窗口取3到5个点。毛刺少了阈值分割就稳定了。另外如果用的是能量熵建议先把每一个滑动窗的能量做归一化避免幅度抖动带来的虚假熵变。论文里没有强调这一步但实际处理时特别管用。4.2 阈值选不好会同时出现漏检和虚警固定阈值用久了就会发现一个阈值很难服务所有场景。环境从空旷变拥挤背景熵均值会整体升高原来合适的阈值现在把噪声段也当成目标段。更稳的做法是论文里隐含的“背景基线自适应”每N帧更新一次背景噪声统计动态调整阈值。如果不想自己写可以试Otsu方法自动对熵曲线找分割阈值最简单也不会错。这里我多说一句熵权法虽然名字带着权重但它更适合做特征融合不适合直接生成分割阈值。我在一个版本里试着用熵权法给不同窗长熵图算权重然后加权求和效果不错但计算量上去了。如果不是对精度有极致要求不太建议在嵌入式平台这么做。4.3 多径造成的误分割怎么判断室内反射太强的时候一个障碍物可能因为二次反射或者墙面的镜像反射在更远距离上形成一个假高熵区。如果每次都在同一个位置出现可以先做背景差分如果信号本身有慢漂移则要结合连续帧跟踪只有持续稳定的区域才当作目标。还有一个容易忽视的点熵分割对CIR的时间对齐要求高。UWB接收机如果没做同步CIR左右漂移会让熵峰位置跟着抖分割结果自然不准。实际落地建议对CIR做互相关对齐或者依赖硬件定期校准。时间对齐不做好的话后面所有处理都是在沙地上盖楼。5. 这篇论文给我留下的印象与扩展想法最后说点个人体会和可扩展的方向。这篇论文不是我读过的最惊艳的工作但它把“熵”这个统计量在雷达信号分割里的作用讲得很清楚而且方法容易落地。5.1 熵分割能跟深度学习方法无缝衔接现在很多UWB感知工作直接把CIR扔进卷积网络做分类或回归但多障碍物检测这种任务直接端到端学容易过拟合而且定位精度不够。论文这种熵分割法相当于给网络提供了一个注意力掩码先用熵粗分割告诉网络“这里有目标那里不用看”然后网络只需要处理候选区域。训练时损失函数换成交叉熵损失去区分区域里是不是目标也能减少背景对loss的影响。甚至可以说如果用最大熵模型在Python里对每个分割区域的回波分布建模再做分类会比直接堆CNN更可解释。这块论文没有展开但顺着思路是很容易想到的。我自己测试过把熵分割结果作为二元掩码叠加到一个轻量分类网络上确实比直接让网络看整条CIR稳定。5.2 对UWB定位和室内感知的实际意义把障碍物检测做出来直接受益的是UWB定位系统。室内定位最难处理的问题之一就是多径带来的首径识别误差如果先用熵分割把各个反射区域分开再在每个区域里找首径测距结果会稳定很多。这项工作不需要改硬件只需要在现有CIR基础上加一层软件处理非常划算。另外多障碍物检测也可以服务于人员计数器、安防雷达、智能家居的轨迹追踪。比如用一套IR-UWB雷达放墙角靠熵分割把客厅里的三个人分开再配合一周的观测数据做轨迹关联这个方案是能落地的。我在自己实验室的小型试验里已经用类似方法完成了三人并行场景下的计数整体效果比单一峰值检测要靠谱。5.3 我个人最想提醒后来者的一点老实说熵分割不是一个“立刻能跑赢所有SOTA”的算法它更强调可解释性和轻量级。论文里有个细节给我印象很深他们并没有在熵的计算上堆复杂技巧甚至用的还是最基本的Shannon公式却因为把分割和检测拆成两级获得了比CFAR更好的主观观感。如果让我复现我的第一条建议是先别急着调参而是拿matlab跑一遍完整的熵曲线观察目标出现时熵曲线有没有肉眼可见的凸起。如果观察不到说明前端的滤波和背景对消还没处理好如果观察到了后面的一切都会顺利很多。这篇论文精读下来我最大的收获不是熵这个工具本身而是“先分割、再检测”这种思路。很多时候雷达目标检测被峰值、门限这些词困住换个统计特征反而能把问题看清楚。这套做法在UWB雷达上成立在其他脉冲式测距传感器上也有迁移价值。如果你也想试建议先拿自己的实测数据画一条熵曲线一切就会变得非常直观。