CFAR 恒虚警率目标检测算法详解
在毫米波雷达领域,我们最终关心的不是信号波形本身,而是:哪里有目标?有多少个?哪些是噪声干扰?
雷达接收到的信号通常是真实回波、环境杂波(地面、墙体反射)以及系统噪声的混合体。经过 ADC 采样和 FFT 变换后,我们会得到距离谱或多普勒谱,其中包含大量起伏的谱线。
核心问题在于:在一个噪声水平不断变化的环境中,如何公平、稳定地判断某个峰值是否代表真实目标? 这正是 CFAR(Constant False Alarm Rate,恒虚警率)算法存在的意义。
一、CFAR 的核心思想
CFAR 的核心非常直观:门限不固定,而是根据'周围环境噪声'动态调整。
- 当背景噪声大时,门限自动抬高,避免误报;
- 当背景噪声小时,门限自动降低,防止漏检;
- 始终保持一个近似恒定的虚警概率。
这比传统的固定阈值法在工程上要可靠得多。
从物理意义上讲,CFAR 不是在简单地'找最大值',而是在'找异常'。如果把雷达距离谱想象成一条地形起伏的山脉,噪声就是起伏的地面,目标是突然冒出的山峰。CFAR 的工作流程是先估计地面高度,再判断某个山峰是否足够突出。
之所以必须依赖'周围噪声',是因为雷达系统中噪声功率随距离变化,杂波随场景改变,AGC 和窗口函数也会影响谱形。固定门限往往会导致工程灾难,而利用局部统计进行自适应估计是唯一实用的方法。
二、CFAR 的基本结构
对每一个被检测单元(Cell Under Test, CUT),CFAR 通常定义三类区域:
| Training | Guard | CUT | Guard | Training |
- CUT(被检测单元):当前要判断是否为目标的点。
- Guard Cells(保护单元):位于 CUT 两侧,防止目标能量泄漏进噪声估计,一般设置 1–4 个。
- Training Cells(训练单元):用于估计背景噪声功率,一般设置 8–32 个或更多。
三、常见的 CFAR 类型
1. CA-CFAR(Cell Averaging CFAR)
最基础的类型,用训练单元的平均功率估计噪声。
- 优点:简单、易实现,适合噪声均匀场景。
- 缺点:在多目标或强杂波环境下性能下降。
公式(功率域): T = α · (1/N) Σ Pi
其中 α 为门限系数(由虚警率决定),N 为训练单元数。
2. OS-CFAR(Order Statistic CFAR)
不用均值,而是取排序后的第 k 大值作为噪声估计。
- 优点:抗强杂波能力强,抗多目标干扰。
- 缺点:计算量略大。
3. GO-CFAR / SO-CFAR
针对左右不对称场景:
- GO-CFAR:取左右两侧噪声估计中的较大者。
- SO-CFAR:取较小者。 常用于边缘目标或遮挡目标场景。
四、CFAR 在雷达处理链路中的位置
在典型的 FMCW 雷达处理链路中:
ADC → Range FFT → Doppler FFT → Range-Doppler Map → CFAR(2D) → 目标点云
- 1D CFAR:仅做距离检测。
- 2D CFAR:距离 - 速度联合检测,工程中更为常见。
五、MATLAB 示例:一维 CA-CFAR 演示
下面给出一个可直接运行的 MATLAB 示例,帮助初学者理解 CFAR 的工作方式。我们将构造一条含噪声的距离谱,人工加入目标,然后使用 CA-CFAR 进行检测。


