雷达算法

您所在的位置:网站首页 雷达检测是干的 雷达算法

雷达算法

2024-07-10 13:20| 来源: 网络整理| 查看: 265

在这里插入图片描述

本文参考TI的一种适用于汽车雷达的聚类算法研究和实现.pdf文档,原文链接如下:https://www.ti.com.cn/cn/lit/an/zhca739/zhca739.pdfts=1672973254109&ref_url=https%253A%252F%252Fwww.google.com.hk%252F。

由于不涉及硬件,因此本文仅对算法部分进行分析,需要用到硬件分析部分的读者,可以直接参考原文。

1.概述

雷达接收处理包括射频前端,基带信号处理和后处理算法三部分:

(1)射频前端完成高频雷达接收信号的模拟域信号处理和数模转换(ADC);

(2)基带信号处理在零中频上完成雷达接收信号的数字信号处理(DSP)和目标检测;

(3)在目标检测之后的高层算法被统称为后处理算法,如聚类(Clustering)、 关联(Association)、跟踪(Tracking)、分类(Classification)等。

这三部分是雷达工程师需要重视的,建议进行系统性地学习,多看、多思考、多动手实践。本文主要是针对后处理算法中的一种聚类算法做分析,解决汽车雷达目标由于目标尺寸、雷达发射系数(RCS)和检测算法的不同所带来的一系列问题。

聚类算法的本质是“物以类聚,人以群分”思想,只有“志同道合”的点云才会被归为一类。本文选取了 DBSCAN(Density-Based Spatial Clustering of Application with Noise)作为适合汽车雷达的聚类算法,重点研究了这种算法的性能和参数敏感性,并提出了一种简单可行的参数调整(有点类似于自适应)方法。

2.算法背景

线性快速频率调制连续波(Linear Fast FMCW) 是一种频率随时间快速线性变化(斜率在几十 MHz/us)的雷达波形,由于它可以提供较高的分辨率,同时有效地解决距离-速度模糊性的问题,当前已经成为主流的汽车雷达波形。

常用的信号处理链流程如下图所示:

在这里插入图片描述 (图1:雷达信号处理链)

首先,通过第一维和第二维 FFT 计算获得目标距离和速度,然后采用特定的角度估计算法(例如 FFT,MUSIC 等)来获得目标的角度,最后再通过特定的目标检测算法(例如 CFAR-CA、CFAR-OS 等)从噪声中检测获得反射点。随着目标的尺寸、雷达发射系数(RCS)和检测算法的不同,一个物体在目标检测后可能产生从几个到几百个不同的反射点。

如果通过聚类算法分析这些反射点的内部结构,将属于同一 个物体的反射点归为一个簇,这样每一个检测到的物体都形成一个簇,最后再通过对聚类以后的簇进行目标跟踪和分类, 可以获得可靠的物体的距离和移动速度。

3.汽车雷达聚类算法

聚类在无监督机器学习领域是一个非常热门的研究课题,近年来出现了许多的算法。现有的聚类算法可以大致分为:原型聚类(Prototype-based clustering)、密度聚类 (Density-based clustering) 和层次聚类 (Hierarchical clustering)三个类别。

(1)原型聚类

通常,假设聚类结构能通过一组原型刻画,在现实聚类算法中比较常用。通常情况下,算法先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示,不同的求解方式,将产生不同的算法。常见的原型聚类算法有 k 均值方法 (k-means)、高斯混合聚类方法 (Mixture-of-Gaussian) ,在数据挖掘领域被广泛应用,但是这些算法都要求在聚类之前就确定输出的簇的数量。对于汽车雷达来说,也就是要求在聚类之前就确定目标的数量,这显然是无法做到的,因为汽车雷达无法确定当前的目标数量是多少。

(2)层次聚类

层次聚类尝试在不同层次对数据集进行划分,从而形成树形的聚类结构。层次聚类可以采用“自下而上”的聚类策略,也可以采用“自上而下”的聚类策略。AGNES 方 法 (AGglomerative NESting)是一种常用的“自下而上”的层次聚类算法。然而这种算法面临和原型聚类相同的问 题,也需要在聚类之前确定输出的簇的数量,因此也无法直接应用到汽车雷达上,因此就只剩下了密度聚类。

(3)密度聚类

密度聚类(Density-based clustering)没有其它两种聚类的限制,不需要事先确定簇的数量。密度聚类假设簇的 结构能通过目标点分布的紧密程度来确定。在密度聚类中,簇被认为是数据空间中目标点密集的区域,在簇之间出 现的低密度的目标点被认为是噪声. 这些簇可以有任意的形状,并且簇内的目标点也可以任意分布,这一点和汽车 雷达上的检测目标特性十分接近。汽车雷达对应同一个目标的检测点之间距离接近,并且这些点的密度分布是一定 的(这个密度分布和物体的反射特性相关)。因为具备以上这些特性,密度聚类更加适合于汽车雷达的应用,DBSCAN 算法是一种常用的密度聚类算法(可以清晰地知道,DBSCAN能够用于汽车雷达的本质原因)。

4.聚类算法指标

一个好的聚类结果的目标点应该具有高的簇内相似性和低的簇间相似性,在低维度数据集上, 聚类性能的好坏通过可视化的数据分布图就可以直观的看出来,但是通过度量指标来定量地衡量聚类性能的好坏更加准确。

参考文献[2] 给出了常用的聚类性能度量 DI (Dunn Index), DBI (Davies-Bouldin Index) ,这两种度量在原理上类似,本文选择 DI 作为分析聚类性能的度量指标。假设数据集𝐷𝐷 = {𝑥1, 𝑥2, … , 𝑥𝑚}被划分成了𝑘个簇 𝐶 = {𝐶1, 𝐶2,… , 𝐶𝑘}, DI 的定义如下:

D I = min ⁡ 1 ≤ i ≤ k { min ⁡ j ≠ i ( d min ⁡ ( C i , C j ) max ⁡ 1 ≤ l ≤ k diam ⁡ ( C l ) ) } D I=\min _{1 \leq i \leq k}\left\{\min _{j \neq i}\left(\frac{d_{\min }\left(C_i, C_j\right)}{\max _{1 \leq l \leq k} \operatorname{diam}\left(C_l\right)}\right)\right\} DI=min1≤i≤k​{minj=i​(max1≤l≤k​diam(Cl​)dmin​(Ci​,Cj​)​)}

上式中的分母对应的是所有簇内目标点之间的最大距离,分子对应的是所有簇间目标点之间的最小距离。显然同于同一个数据集,一个聚类结果对应的 DI 越大,聚类的性能越好。即:最大距离越小,说明点云越集中,则点云越相似。

5.DBSCAN算法分析 5.1 算法定义

DBSCAN算法比较容易理解,它基于一组“邻域” (neighborhood) 参数(𝜀, 𝑀inPts)来刻画样本分布的紧密程度。给定数据集𝐷 = {𝑥1, 𝑥2, … , 𝑥𝑚}, 定义下面几个概念:

在这里插入图片描述

DBSCAN 算法先任选数据集中的一个核心对象为种子 (seed), 将它的 ε-邻域 中的所有样本加入一个簇,新加入的样本如果是核心对象,再将这个核心对象的 ε-邻域中的所有样本加入本簇。通过这种递归搜索,将所有密度相连的样本归入一个簇。如果此时数据集中还有未处理的核心对象,再重复上述的过程开始一个新簇的搜索。DBSCAN 算法的伪代码描述如下图所示:

图片 (图2:DBSCAN算法描述)

5.2 算法代码

读者根据上述算法流程编写仿真代码应该是不难的,这也是一名工程师必备的职业素养。如果实在有困难,那可以参照下面的代码(https://blog.csdn.net/yuanshixin_/article/details/117409961),这也是网友编写的,调皮哥验证过,好使。

clc;clear all;close all; %% 数据 X1 =[5.1,3.5,1.4,0.2;%,Iris-setosa 4.9,3.0,1.4,0.2; 4.7,3.2,1.3,0.2; 4.6,3.1,1.5,0.2; 5.1,3.7,1.5,0.4; 4.6,3.6,1.0,0.2; 5.1,3.3,1.7,0.5; 5.0,3.6,1.4,0.2; 5.4,3.9,1.7,0.4; 4.6,3.4,1.4,0.3; 5.0,3.4,1.5,0.2; 4.4,2.9,1.4,0.2; 4.9,3.1,1.5,0.1; 5.4,3.7,1.5,0.2; 4.8,3.4,1.6,0.2; 4.8,3.0,1.4,0.1; 4.3,3.0,1.1,0.1; 5.8,4.0,1.2,0.2; 5.7,4.4,1.5,0.4; 5.4,3.9,1.3,0.4; 5.1,3.5,1.4,0.3; 5.7,3.8,1.7,0.3; 5.1,3.8,1.5,0.3; 5.4,3.4,1.7,0.2; 6.4,3.2,4.5,1.5;%Iris-versicolor 6.9,3.1,4.9,1.5; 5.5,2.3,4.0,1.3; 6.5,2.8,4.6,1.5; 5.7,2.8,4.5,1.3; 6.3,3.3,4.7,1.6; 4.9,2.4,3.3,1.0; 4.9,2.4,3.3,1.0; 6.6,2.9,4.6,1.3; 5.2,2.7,3.9,1.4; 5.0,2.0,3.5,1.0; 5.9,3.0,4.2,1.5; 6.0,2.2,4.0,1.0]; X=X1(:,3:4); A = X; %% 观察数据距离,估计epsilon [index,Dist] = knnsearch(A(2:end,:),A(1,:)); Kdist(1) = Dist; for i = 1:size(A,1) [index,Dist] = knnsearch(A([1:i-1,i+1:end]😅,A(i,:)); Kdist(i) = Dist; end sortKdist = sort(Kdist,‘descend’); distX = 1:size(A); plot(distX,sortKdist,‘r±’); grid on; %% 运行DBSCAN % parament1 epsilon = 0.15; minPts = 3; [IDC,isnoise] = DBSCAN(epsilon,minPts,A); PlotClusterinResult(A,IDC,epsilon,minPts); % parament2 epsilon= 0.25 ; minPts= 3 ; [IDC2,isnoise2] = DBSCAN(epsilon,minPts,A); PlotClusterinResult(A,IDC2,epsilon,minPts); function [IDC,isnoise] = DBSCAN(epsilon,minPts,X) % DBSCAN C = 0; D = pdist2(X,X); % 各元素之间距离 IDC = zeros(size(X,1),1); visited = false(size(X,1),1); % 访问标志 isnoise = false(size(X,1),1); % 噪声 for i = 1:size(X,1) if ~visited(i) visited(i) = true; Neighbors = find(D(i,:)



【本文地址】


今日新闻


推荐新闻


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