雷达信号处理——恒虚警检测(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)={有目标,YT无目标,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(PfaN11)

恒虚警检测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_celltmp_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 :sigLencentNum = 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 :sigLencentNum = 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/339476.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络】网络层ICMP协议

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

Blazor中使用impress.js

impress.js是什么&#xff1f; 你想在浏览器中做PPT吗&#xff1f;比如在做某些类似于PPT自动翻页&#xff0c;局部放大之类&#xff0c;炫酷无比。 在Blazor中&#xff0c;几经尝试&#xff0c;用以下方法可以实现。写文不易&#xff0c;请点赞、收藏、关注&#xff0c;并在转…

C语言基础入门

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Flink-CEP 实战教程

文章目录 1. 基本概念1.1 CEP 是什么1.2 模式&#xff08;Pattern&#xff09;1.3 应用场景 2. 快速上手2.1 引入依赖2.2 入门实例 3. 模式API&#xff08;Pattern API&#xff09;3.1 个体模式3.1.1 基本形式3.1.2 量词&#xff08;Quantifiers &#xff09;3.1.3 条件&#x…

说说微信小程序的登录流程?

面试官&#xff1a;说说微信小程序的登录流程&#xff1f; 一、背景 传统的web开发实现登陆功能&#xff0c;一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后&#xff0c;下发一个代表登录态的 token 给客户端&#xff0c;以便进行…

Vivado开发FPGA使用流程、教程 verilog(建立工程、编译文件到最终烧录的全流程)

目录 一、概述 二、工程创建 三、添加设计文件并编译 四、线上仿真 五、布局布线 六、生成比特流文件 七、烧录 一、概述 vivado开发FPGA流程分为创建工程、添加设计文件、编译、线上仿真、布局布线&#xff08;添加约束文件&#xff09;、生成比特流文件、烧录等步骤&a…

计算机网络期末复习(二)

物理层 解决&#xff1a;如何在连接各种计算机的传输媒体上传输比特流&#xff0c;而不是具体的传输媒体。 传输媒体&#xff1a;比如双绞线、同轴电缆、光纤等等。 主要任务&#xff1a;确定于传输媒体接口有关的一些特性。 传输媒体 导向形 非导向形 调制解调器 数字信号 和…

GSEQ行为序列分析软件学习汇总

0、问题描述&#xff1a; 1、GSEQ软件是做什么的&#xff1f;2、GSEQ软件如何使用&#xff1f;2、GSEQ软件前期需要在“记事本”中编写“程式码”需要将所有行为数据编码之后&#xff0c;将编码行为序列粘贴到GSEQ软件中去&#xff0c;如果数据量很大&#xff0c;这个过程就非…

图纸版本管理混乱怎么办?彩虹PDM系统帮你搞定!

在现代制造业和工程领域&#xff0c;图纸版本管理的混乱常常是一个棘手的问题。不同版本的图纸可能导致严重的错误和生产问题&#xff0c;影响了产品质量和交付时间。然而&#xff0c;有一个强大的工具可以帮助企业解决这个问题&#xff0c;那就是PDM产品数据管理系统。彩虹PDM…

如何在 Microsoft Edge 浏览器中启用自动刷新

你是否经常发现自己在使用 Microsoft Edge 时点击刷新按钮&#xff1f;如果您需要一个网页以设定的时间间隔自动更新&#xff0c;那么请接着往下看。 在这篇博文中&#xff0c;我们探讨如何在 Microsoft Edge 浏览器中启用和管理自动刷新功能。 为什么选择自动刷新&#xff1…

spring cloud之集成sentinel

写在前面 源码 。 本文一起看下spring cloud的sentinel组件的使用。 1&#xff1a;准备 1.1&#xff1a;理论 对于一个系统来说&#xff0c;最重要的就是高可用&#xff0c;那么如何实现高可用呢&#xff1f;你可能会说&#xff0c;集群部署不就可以了&#xff0c;但事实并…

SpringBoot+Vue药品ADR不良反应智能监测系统源码

药品不良反应&#xff08;Adverse Drug Reaction&#xff0c;ADR&#xff09;是指合格药品在正常用法用量下出现的与用药目的无关的有害反应&#xff0c;不包括超说明书用药、药品质量问题等导致的不良后果。 ADR智能监测系统开发环境 ❀技术架构&#xff1a;B/S ❀开发语言&…