雷达信号处理的流程和恒虚警检测CFAR

  • 一般流程:

ADC数据------1D-FFT------2D-FFT------CFAR检测------测距、测速、测角。

恒虚警检测概念

假设就是检验对象的可能情况或状态。对于雷达检测来说,可以选用两个假设,即目标存在或不存在。用 H 0 H_0 H0​和 H 1 H_1 H1​分别表示接收机的无信号输入和有信号输入的假设,用 D 0 D_0 D0​和 D 1 D_1 D1​和分别表示检测器作出无信号和有信号的判决结果。于是接收机的输入与检测器的判决将有四种情况:

(1) H 0 H_0 H0​为真,判为 D 0 D_0 D0​,即接收机无信号输入, 检测器判为无信号, 其概率称为正确不发现概率 P a n P_{an} Pan​;

(2) H 0 H_0 H0​为真, 判为 D 1 D_1 D1​, 即接收机无信号输入, 检测器判为有信号, 其概率称为虚警概率 P f a P_{fa} Pfa​;

(3) H 1 H_1 H1​为真, 判为 D 0 D_0 D0​,即接收机有信号输入, 检测器判为无信号, 其概率称为漏警概率 P l a P_{la} Pla​;

(4) H 1 H_1 H1​为真, 判为 D 1 D_1 D1​,即接收机有信号输入, 检测器判为有信号, 其概率称为正确检测概率 P d P_{d} Pd​;

我们希望的是正确不发现概率 P a n P_{an} Pan​和真确检测概率 P d P_{d} Pd​越高越好,而虚警概率 P f a P_{fa} Pfa​和漏警概率 P l a P_{la} Pla​越低越好。
恒虚警检测,又称CFAR,全称是Constant False Alarm Rate Detector,是雷达目标检测的一种常见的手段。CFAR检测算法属于信号检测中的自动检测算法,在雷达信号处理中主要应用的有四种,即CA-CFAR、SO-CFAR、GO-CFAR、WCA-CFAR。

  • 恒虚警检测算法

首先,指定一个距离多普勒单元,称为检测单元(CUT, cell under test),为了判断检测单元处是否存在目标,需要设定一个阈值 T T T,当检测单元处的检测值 Y Y Y大于 T T T时,判断为有目标,否则判断为没有目标:
d ( Y ) = { 有目标, Y ≥ T 无目标, Y < T . d(Y)= \left\{ \begin{array}{ll} 有目标,Y\geq T\\ 无目标,Y< T. \end{array} \right. d(Y)={有目标,Y≥T无目标,Y<T.
具体的做法是先在测试单元的周围放置保护单元,以消除信号在测试单元周围的多余能量,然后再保护单元的周围选择参考单元:

图1 恒虚警检测的单元分布

上图展示的是同时在距离维和多普勒维进行恒虚警检测的原理,如果只是在距离维或多普勒维做CFAR,检测单元的左右两侧均有设定好数量的保护单元和参考单元。
恒虚警检测选择均值类自适应门限 CFAR 检测技术,其中单元平均方式(CA-CFAR)、两侧单元平均 选大方式(GO-CFAR)、两侧单元平均选小方式 (SO-CFAR) 三种方法在主瓣多目标的背景下,检测性能都有所下降,容易出现漏警和漏检小信号源。单限切除恒虚警概率方法
(E-CFAR),在主瓣多目标的背景下,具有较好的检 测性能。E-CFAR 方法是在进行单元平均之前设置切 除上限,切除信号的强分量,从而避免对小信号源 漏检,防止对信源数目的估计出现偏差。
如果是CA-CFAR,则取左右两边的参考单元的均值再取平均值,然后与 α \alpha α相乘( α \alpha α计算公式如下方公式),再将结果与阈值相比较。如果大于阈值则代表有目标,否则认为无目标。

图2 一维恒虚警检测的阈值计算方法

从上图可以看到,由于待检单元左侧还有几个单元,所以做完恒虚警检测之后会使得序列变短,这个和深度学习中的卷积类似。要想使得不变短的话可以采取补零法或者翻转法 来实现。
从图中也可以看到,根据阈值的选择不同,有不同的检测器,其中CA-CFAR是取的参考单元的均值,SO-CFAR取的是参考单元的最小值,而GO-CFAR是取的参考单元的最大值。
其中最重要的是门限因子 α \alpha α的计算方法:
α = N ( P f a − 1 N − 1 ) \alpha = N(P_{fa}^{-\frac{1}{N}}-1) α=N(Pfa−N1−1)

恒虚警检测matlab编程

不同的CFAR检测器适用于不同的场景,CA-CFAR算法适用于均匀环境中的单目标或彼此相距较远的多目标环境,在邻近多目标环境会发生目标的遮蔽效应,在杂波边缘会发生杂波边缘效应。
下面是不进行补零操作的CA-CFAR的程序:

复制代码
`function [position, threshold, start_cell, stop_cell] = cacfar(signal, Pfa, ref_num, guard_num) % ======>INPUT: % signal: Data of signal(include signal and noise).[DATATYPE: row vector] % Pfa: Probability of false alarm.[DATATYPE: scalar] % ref_num: Number of reference cell.[DATATYPE: scalar] % guard_num: Number of guard cell.[DATATYPE: scalar] % ======>OUTPUT: % position: positions of target.[DATATYPE: row vector] % threshold: CFAR threshold of input signal.[DATATYPE: row vector] position = []; left_num = guard_num + ref_num; start_cell = left_num + 1; stop_cell = length(signal) - left_num; N = 2*ref_num; alpha = N * (Pfa ^ (-1/N) - 1); threshold = zeros(1, stop_cell - start_cell + 1); for ii = start_cell : stop_cell     tmp_data = [signal(ii-left_num : ii-guard_num-1), ...         signal(ii+guard_num+1 : ii+left_num)];     mean(tmp_data);     tmp = mean(tmp_data) * alpha;     % threshold(ii - left_num)     tmp;     threshold(ii - left_num) = tmp;     if tmp < signal(ii)         position = [position, ii];     end end return `

下面是进行补零操作的CA-CFAR的程序:

复制代码
`function [position, threshold] = MYCACFAR(signal, Pfa, ref_num, guard_num) % 该函数用于进行CA-FAR恒虚警检测,在信号首位两端进行补零,使得输出的阈值序列和信号长度一致 % ======>INPUT: % signal: Data of signal(include signal and noise).[DATATYPE: row vector] % Pfa: Probability of false alarm.[DATATYPE: scalar] % ref_num: Number of reference cell.[DATATYPE: scalar] % guard_num: Number of guard cell.[DATATYPE: scalar] % ======>OUTPUT: % position: positions of target.[DATATYPE: row vector] % threshold: CFAR threshold of input signal.[DATATYPE: row vector] position = []; %存储高于检测门限的信号区域的位置 left_num = guard_num + ref_num; %检测单元两边的单元数 sigLen = length(signal); %信号长度 tempSig = zeros(1,sigLen+2*left_num); %补零后的信号向量 tempSig((left_num + 1) :(sigLen + left_num)) = signal; %对中间部分进行信号的赋值,首位两端各有left_num个零值 N = 2*ref_num; %参考单元总数 alpha = N * (Pfa ^ (-1/N) - 1); %门限因子,横虚警概率越小,参考单元数越多,因子越大,检测阈值也越大 threshold = zeros(1, sigLen); %用于储存检测阈值 for ii = 1 : 1 :sigLen     centNum = ii+left_num; %对应的检测单元下标     tmp_data = [tempSig((centNum-left_num):(centNum-guard_num-1)), ...         tempSig((centNum+guard_num+1):(centNum+left_num))]; %取检测单元的值     tmp = mean(tmp_data) * alpha; %与门限因子相乘得到检测阈值     threshold(ii) = tmp; %进行存储     if tmp < signal(ii) %阈值小于信号         position = [position, ii];  %存储被检测到的下标     end end return `

下面是进行翻转补充首位的操作的CA-CFAR的程序:

复制代码
`function [position, threshold] = MYCACFAR2(signal, Pfa, ref_num, guard_num) % 该函数用于进行CA-FAR恒虚警检测,在信号首位两端进行翻转,使得输出的阈值序列和信号长度一致 % ======>INPUT: % signal: Data of signal(include signal and noise).[DATATYPE: row vector] % Pfa: Probability of false alarm.[DATATYPE: scalar] % ref_num: Number of reference cell.[DATATYPE: scalar] % guard_num: Number of guard cell.[DATATYPE: scalar] % ======>OUTPUT: % position: positions of target.[DATATYPE: row vector] % threshold: CFAR threshold of input signal.[DATATYPE: row vector] position = []; %存储高于检测门限的信号区域的位置 left_num = guard_num + ref_num; %检测单元两边的单元数 sigLen = length(signal); %信号长度 tempSig = zeros(1,sigLen+2*left_num); %补零后的信号向量 tempSig(1:left_num) = signal(1:left_num); tempSig(sigLen + left_num+1:end) = signal(sigLen-left_num+1:end); tempSig((left_num + 1) :(sigLen + left_num)) = signal; %对中间部分进行信号的赋值,首位两端各有left_num个零值 N = 2*ref_num; %参考单元总数 alpha = N * (Pfa ^ (-1/N) - 1); %门限因子,横虚警概率越小,参考单元数越多,因子越大,检测阈值也越大 threshold = zeros(1, sigLen); %用于储存检测阈值 for ii = 1 : 1 :sigLen     centNum = ii+left_num; %对应的检测单元下标     tmp_data = [tempSig((centNum-left_num):(centNum-guard_num-1)), ...         tempSig((centNum+guard_num+1):(centNum+left_num))]; %取检测单元的值     tmp = mean(tmp_data) * alpha; %与门限因子相乘得到检测阈值     threshold(ii) = tmp; %进行存储     if tmp < signal(ii) %阈值小于信号         position = [position, ii];  %存储被检测到的下标     end end return `

下面是仿真结果:

图2 单目标脉冲压缩结果及CA-CFAR阈值图

对目标峰值部分局部放大后

图3 局部放大

附录:

二维CFAR 仿真代码(一些图片)地址:https://github.com/tooth2/2D-CFAR

相关推荐
Lin桐1 小时前
②Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网
linux·网络协议·tcp/ip·网络安全·缓存·信息与通信·信号处理
xianshengsun2 天前
光通信产业链分析
信号处理
山河君2 天前
音频进阶学习十八——幅频响应相同系统、全通系统、最小相位系统
学习·音视频·信号处理
北京青翼科技2 天前
【PCIE725-0】基于PCIe x16总线架构的VU9P FPGA高性能数据预处理平台
图像处理·人工智能·ai·架构·信号处理·ai编程
射频微波精密3 天前
安铂克科技 APPH 系列相位噪声分析仪:高性能测量的卓越之选
科技·测试工具·信息与通信·信号处理·量子计算
北京青翼科技6 天前
【PCIE737】基于全高PCIe x8总线的KU115 FPGA高性能硬件加速卡
图像处理·人工智能·信号处理·智能硬件
江安吴彦祖9 天前
信号处理:互相关函数
信号处理
山河君10 天前
音频进阶学习十六——LTI系统的差分方程与频域分析一(频率响应)
学习·音视频·信号处理
limingade10 天前
手机打电话时如何识别对方按下的DTMF按键的字符-安卓AI电话机器人
android·人工智能·物联网·智能手机·语音识别·信号处理
network_tester12 天前
5G毫米波测试规范详解:3GPP核心标准、测试流程与实战挑战
网络·网络协议·测试工具·5g·信息与通信·信号处理·射频工程