干货

您所在的位置:网站首页 矩阵排序算法的程序框图 干货

干货

2023-05-13 02:20| 来源: 网络整理| 查看: 265

由于时间和篇幅关系,本文续接上文:调皮连续波:干货 | FMCW雷达系统信号处理建模与仿真(含MATLAB代码),是对上文内容的一个补充。两篇文章结合起来看,程序部分也是上文程序的后续补充,可以使得雷达初学者和爱好者能够更加全面地掌握雷达信号处理的建模与仿真流程。

好了,那就开始今天的学习吧。

1. 前置基础理论

关于CFAR算法的前置理论,涉及到《信号检测与估计理论》的内容,如图1所示,感兴趣的读者可以自行阅读,电子版的PDF调皮哥放在了公众号【调皮的连续波】中,关注后回复“0504”可以获得。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_二维

图1 《信号检测与估计理论》

另外,读者也可以查看《现代雷达系统分析与设计》第8章中关于雷达信号检测的内容,如果没有纸质版数据,电子版之前也分享过,具体可见文章获取:

调皮连续波:学雷达怎么入门?雷达专业必备的理论书籍(PDF电子版,后台回复可下载,调皮哥强烈推荐)!

注意:本文在这里提到这部分内容是为了保证文章的系统性,由于这部分内容比较难以理解和阅读,为了节约大家的时间,这里不建议初学者一来就去看这部分内容。建议先掌握基本的CFAR算法原理后,再去思考背后的数学逻辑。

2. CFAR检测概述

CFAR检测算法属于信号检测中的自动检测算法,在雷达信号处理中主要应用的有三种,即CA-CFAR、SO-CFAR、GO-CFAR,这三种也是初学者最常采用的算法,要求每一个雷达工程师必须掌握其基本原理,如图2所示,其中WCA-CFAR一般不常用。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_目标检测_02

图2  CFAR检测算法

根据前文(调皮连续波:干货 | FMCW雷达系统信号处理建模与仿真(含MATLAB代码))的论述,最后推导并仿真出来的结果是一个RDM,即距离多普勒矩阵(Range-Doppler Matrix),如图3所示,CFAR即要对RDM进行检测。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_信号处理_03

图3 RDM谱图

自适应目标检测算法的一般是根据应用于 RDM 内每个被检测单元,即CUT(cell under test)的决策阈值 T 来区分噪声和目标信号。因为雷达接收机中的平均噪声电平通常是未知的,所以首先需要对噪声电平进行估计。图 4 以框图形式显示了信号处理和目标检测方案。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_信号处理_04

图4 目标检测的信号处理步骤

而这部分噪声电平估计的内容,就是前面提到的《信号检测与估计理论》涉及到的理论。简单说来,我们目前只需要明白的一个最为基本的逻辑,其可以用公式(1)表示: 

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_目标检测_05即检测值Y大于阈值T,则判断为目标,Y小于阈值T则判断为噪声。阈值可以由如下公式(2)计算,其中 干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_目标检测_06 为虚警概率。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_二维_07CFAR检测,分为一维CFAR和二维CFAR,一维CFAR仅对一个维度做,比如距离维或者速度维(多普勒维),如图5所示。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_二维_08

图5 一维CFAR检测原理模型

二维CFAR是同时对两个维度做,比如距离-方位谱矩阵或者距离-多普勒谱矩阵,如图6所示。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_目标检测_09

图 6 二维CFAR原理模型

还有一种方法是两次CFAR,即先对某一个维度做一次,然后又对另一个维度做一次,总共两次CFAR。比如先对速度维做一次CA-CFAR,然后对距离维做一次OS-CFAR,如图7所示。这样做的目的可以减少计算量,节约计算时间。因为当检测出具有速度的目标后,只针对动目标检测要比检测全部元素点要快速。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_目标检测_10

图7 两次CFAR检测原理模型

但我个人认为,两次CFAR还是属于一维CFAR的范畴,两次并不是两维,这个基本概念和基本原理还是不一样的。无论是一维CFAR、两次一维CFAR还是两维CFAR,都是需要我们掌握的。

3.二维CFAR(2D-CFAR)算法原理与仿真

前面阐述了一些概念性内容,下面是本文的核心部分。

如图8所示,是2D-CFAR的原理模型。我们可以设计一个循环程序,通过在参考单元和保护单元的边缘提供边距,使 CUT 在距离多普勒图上滑动。对于每次迭代,求所有参考单元中所有信号电平的和并取平均。接下来,将 CUT (被检测单元)下的信号与此阈值进行比较。如果CUT > 阈值,则认为是目标信号,并为其分配值 1,否则认为是噪声信号,并将其置为0。

上述过程将生成一个阈值块,如图8中绿色和红色组成的区域(希望读者不会存在红绿色盲症)。因为 CUT 不能位于RDM谱矩阵的边缘,故而该阈值块小于距离多普勒图, 因此存在一部分点不会被检测到,但需要对这部分未检测到的点进行处理,关于这个问题后面会讨论。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_目标检测_11

图8  2D CFAR原理模型

总的来说,二维CFAR的原理其实也是很简单的,理解起来也并不是很复杂。在MATLAB中实现也是比较简单的,程序代码如下:

(1)首先设置两个维度的参考单元和保护单元

%在两个维度中选择参考单元的数量Tr = 8; Td = 4;%选择被测单元(CUT)周围两个维度的保护单元数量,以进行准确CFAR检测Gr = 4;Gd = 2;

(2)设置SNR 值偏移阈值

%以 dB 为单位的 SNR 值偏移阈值snr_offset = -10*log10(0.25);

(3)阈值块参数设定

%为参考单元上的每次迭代创建一个向量来存储noise_level(噪声电平)r_margin = 2*(Tr+Gr);d_margin = 2*(Td+Gd);r_grid_length = Nr/2-d_margin;d_grid_length = Nd-r_margin;noise_level = zeros(r_grid_length,d_grid_length);gridSize = (2*Tr+2*Gr+1)*(2*Td+2*Gd+1);numGcells = (2*Gr+1)*(2*Gd+1);numTcells = gridSize - numGcells; %参考单元sig_CFAR = zeros(size(RDM));

(4)循环检测程序

循环检测程序中,包含了参考单元求和取平均,其中求和是通过对参考单元加上保护单元以及被检测单元,形成的13*25的矩阵进行的,然后再减去保护单元(5*9)以及被检测单元(1*1)的和,得到的就是参考单元的和。

参考单元的和除以参考单元的元素个数,就能够得到参考单元的平均值。最后加上SNR偏移量,就得到了比较的阈值。最后将CUT(被检测单元)和阈值进行比较,如果被检测单元大于阈值则将该点置为1,具体实现过程可以看下面的MATLAB程序。(文章末尾提供全部代码的下载方式)

for i = 1:r_grid_length % 距离边界for j = 1:d_grid_length % 多普勒边界 % 使用 db2pow 将值从对数转换为线性 sig_pow = db2pow(RDM(i:i+d_margin,j:j+r_margin)); %从db变为线性 G_pow = db2pow(RDM(i+Td:i+Td+Gd*2,j+Tr:j+Tr+Gr*2)); %保护单元 % 所有参考单元内的总和信号 sig_sum = sum(sum(sig_pow))-sum(sum(G_pow)); % 对所有使用的参考单元格的总和值求平均 noise_level(i,j) = pow2db(sig_sum/numTcells); % 添加偏移量 sig_threshold = noise_level(i,j) + snr_offset; % 将 CUT 与阈值进行比较if (RDM(i+d_margin/2, j+r_margin/2) > sig_threshold) sig_CFAR(i+d_margin/2, j+r_margin/2) = 1;endendend

最后检测的效果如图9所示,检测效果比较理想,非常适合初学者学习和理解。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_二维_12

图9 CFAR检测效果

4. 未被检测区域处理方法

上面说到目前所采用的二维CFAR检测时阈值块小于距离多普勒图, 因此存在一部分点不会被检测到,如图10橙黄色虚线部分所示。但为了保证信号处理获得完整的目标信息,需要对这部分未检测到的点进行处理,那么我们需要采取什么样的方法来保证RDM谱中所有的点都被完全检测到呢?

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_目标检测_13

图10 未被检测区域

目前主要可以采用三种方法,分别是补零法、翻转法和边界判别法。

(1)补零法

为了使得图10的2D-CFAR起始点从RDM谱的第一个点开始,需要额外增加RDM谱的大小,使得能够在RDM的第一个点是具备足够多的参考单元和保护单元,补零的效果如图11所示。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_信号处理_14

图11 补零法

补零后,2D-CFAR从RDM谱的第一个点开始,效果如图12所示。这样就避免了处于边缘区域的点不会被检测到导致边缘位置的目标丢失的可能性。补零法是最简单的方法,但是需要消耗的处理器内存资源会变多。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_信号处理_15

图12  补零后进行2D CFAR检测

(2)翻转法

翻转法,是指不采用补零的方式扩展矩阵,而是采用RDM谱边界上的点相互弥补。例如,以RDM谱第一个点为被检测单元,但是左边和上边都缺少保护单元和参考单元,这个时候可以利用RDM谱矩阵最右边的点和最下边的点来弥补不足的点,从而形成一个闭合的“球状”数据体,如图13所示。

这种方式不通过补零,直接采RDM谱的原始信息,更能保证检测的稳定性,但这种方式会使得编程变得稍微复杂,随着迭代变化,翻转单元的形式也是不断变化的。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_二维_16

图13 翻转法2D -CFAR

(3)边界判别法

所谓边界判别法,即当处于边界时,所选取的参考单元和保护单元区域只在RDM谱矩阵中,超出的部分不参与计算,如图14所示,只计算位于RDM谱矩阵中的值。

边界判别法的复杂性要低于翻转法,高于补零法,但是边界判别由于缺少很多数据,对于边界处的点会存在一定的影响,效果不如补零法稳定。

干货 | FMCW雷达信号处理的二维CFAR(2D -CFAR)检测算法_信号处理_17

图14 边界判别法

至此,本文的核心内容结束,对于2D-CFAR的检测除了上述三种方法之外,可能还存在其他的判别方法,等待后续继续研究,有知道的读者也可以分享在评论区。

【后记】最后,是调皮哥最近的学习雷达的思想感悟。

关于雷达算法,我个人认为可以分为两个部分,第一个部分是CFAR检测算法以及CFAR检测算法之前的部分,称为雷达信号处理算法,包括距离估计(测距)、速度估计(测速)、角度估计(测角)、CFAR检测等目标检测算法,以及波束形成、旁瓣抑制、相干积累(相参积累)与非相干积累、幅相校正、多普勒相位补偿、数字波束形成(DBF)、杂波抑制、脉冲压缩、动目标显示(MTI)、动目标检测(MTD)、合成孔径成像算法例举未全)等等。(此部分比较重视数学基础、信号理论与处理算法,是学习雷达信号处理的关键部分。

第二个部分是CFAR检测算法之后的部分,称为雷达数据处理算法,包括聚类算法、跟踪算法、航迹关联算法,以及雷达数据结合人工智能(AI)等算法(例举未全)。此部分偏重于数据处理和信息处理算法,对于雷达上报的点云数据(散点)需要采用各种不同的算法来实现所需要达到的指标,个人认为更看重数学理论、计算机算法以及数据处理能力。

总而言之,数学是非常重要的算法理论基础,所涉及到的一切理论、模型、算法都是基于数学的严格论证与推导,算法的核心本质都是数学上的结论,都具有一定的物理意义。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3