毫米波雷达点云 DBSCAN聚类算法

这篇具有很好参考价值的文章主要介绍了毫米波雷达点云 DBSCAN聚类算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

聚类的目的

聚类的目的是将一组数据点划分为具有相似特征或属性的组或簇。通过聚类分析,我们可以识别出数据中的内在模式、结构和关联关系,从而获得对数据的更深入理解。

具体来说,聚类的目的可以分为以下三部分:

  • 发现数据的内在结构:
    聚类可以将数据分成簇,这些簇可能表示数据的不同模式、集群或分布。通过将相似的数据点放在同一簇中,我们可以揭示数据的内在结构和组织方式。

  • 数据预处理
    通过将数据分成不同的簇,可以减少数据的复杂性和噪声,提取关键特征,并简化后续的数据分析任务。(比如形状特征)

  • 异常点剔除
    聚类算法可以帮助我们识别和排除异常点或噪声数据。这些异常点可能是数据中的异常值、离群点或错误数据,对于准确的分析和建模是有害的。

聚类算法分类

现有的聚类算法可以大致分为三种,分别是

  • 原型聚类(Prototype-based clustering)
  • -层次聚类 (Hierarchical clustering)
  • 密度聚类 (Density-based clustering)

原型聚类

该类算法的主要思想为根据给定的划分集合个数 K,将所有数据对象分配到K个集合中,每个集合中各个数据对象到本身集合中心点相似度最高相对于其他集合中心对象。 该算法主要通过迭代的方式得到最优的聚类中心点和各个聚类集合,主要适用于球状簇的发现。 常用的划分聚类算法 K-means、 CLARANs、 CLARA、PAM 等。 在数据挖掘领域被广泛应用,但是这些算法都要求在聚类之前就确定输出的簇的数量。对于汽车雷达来说,也就是要求在聚类之前就确定目标的数量,这显然是无法做到的,因为汽车雷达无法确定当前的目标数量是多少。

层次聚类

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

密度聚类

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


DBSCAN聚类算法原理

相关定义

DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。

DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数的阈值。


给出算法中用到的定义:
● ϵ领域:对于 x j ∈ D x_j \in D xjD,其ϵ-邻域包含样本集D中与xj的距离不大于ϵ的子样本集,即 N ϵ ( x j ) = { x i ∈ D ∣ d i s t a n c e ( x i , x j ) ≤ ϵ } N_{\epsilon}(x_j) = \{x_i \in D | distance(x_i,x_j) \leq \epsilon\} Nϵ(xj)={xiDdistance(xi,xj)ϵ},这个子样本集的个数记为 ∣ N ϵ ( x j ) ∣ |N_{\epsilon}(x_j)| Nϵ(xj)

● 核心对象(核心点):对于任一样本 x j ∈ D x_j \in D xjD,如果其ϵ-邻域对应的 ∣ N ϵ ( x j ) ∣ |N_{\epsilon}(x_j)| Nϵ(xj)至少包含MinPts个样本,即如果 ∣ N ϵ ( x j ) ∣ ≥ M i n P t s |N_{\epsilon}(x_j)| \geq MinPts Nϵ(xj)MinPts,则 x j x_j xj是一个核心对象。

● 边界点:如果 ∣ N ϵ ( x j ) ∣ < M i n P t s |N_{\epsilon}(x_j)| < MinPts Nϵ(xj)<MinPts,则 x j x_j xj是一个边界点。

● 噪声点:既不是核心点也不是边界点的点

● 密度直达(directly density-reachable):如果 x i x_i xi位于 x j x_j xj的ϵ-邻域中,且 x j x_j xj是核心对象,那么称 x i x_i xi x j x_j xj密度直达。

● 密度可达(density-reachable):对于 x i x_i xi x j x_j xj,如果存在样本样本序列 p 1 , p 2 , . . . , p T p_1, p_2,...,p_T p1,p2,...,pT,满足 p 1 = x i , p T = x j p_1 = x_i, p_T = x_j p1=xi,pT=xj p t + 1 p_{t+1} pt+1 p t p_{t} pt密度直达,则称 x j x_j xj x i x_i xi密度可达。也就是说,密度可达满足传递性。此时序列中的传递样本 p 1 , p 2 , . . . , p T − 1 p_1, p_2,...,p_{T-1} p1,p2,...,pT1均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也不满足对称性,这个可以由密度直达的不对称性得出。

● 密度相连(density-connected):对于 x i x_i xi x j x_j xj,如果存在核心对象样本 x k x_k xk,使 x i x_i xi x j x_j xj均由 x k x_k xk密度可达,则称 x i x_i xi x j x_j xj密度相连,密度相连关系是满足对称性的。
毫米波雷达点云 DBSCAN聚类算法

DBSCAN的聚类定义:由密度可达关系导出的最大密度相连的样本集合,即为我们最终聚类的一个类别,或者说一个簇。


算法流程以及伪代码

开始:

  • 初始化所有数据点的聚类标签为未分类(unclassified)
  • 初始化聚类编号为0
  • 遍历每个数据点:
    • 如果该数据点已经分类,则跳过
    • 标记该数据点为已访问
    • 找到该数据点的邻域点集合
    • 如果邻域点数量小于最小邻域点数量(MinPts):
      • 标记该数据点为噪声点
    • 否则:
      • 创建一个新的聚类
      • 将该数据点及其邻域点加入聚类
      • 扩展聚类:
        • 对于邻域点集合中的每个点:
          • 如果该点未访问:
            • 标记该点为已访问
            • 找到该点的邻域点集合
            • 如果邻域点数量大于等于最小邻域点数量(MinPts):
              • 将该点的邻域点集合加入当前聚类的邻域点集合
          • 如果该点未分类:
            • 将该点加入当前聚类
              结束

伪代码:

(1) 首先将数据集D中的所有对象标记为未处理状态
(2) for(数据集D中每个对象p) do
(3)    if (p已经归入某个簇或标记为噪声) then
(4)         continue;
(5)    else
(6)         检查对象p的Eps邻域 NEps(p)(7)         if (NEps(p)包含的对象数小于MinPts) then
(8)             标记对象p为边界点或噪声点;
(9)         else
(10)            标记对象p为核心点,并建立新簇C, 并将p邻域内所有点加入C
(11)        for (NEps(p)中所有尚未被处理的对象q)  do
(12)           检查其Eps邻域NEps(q),若NEps(q)包含至少MinPts个对象,
				则将NEps(q)中未归入任何一个簇的对象加入C;
(13)        end for
(14)        end if
(15)    end if
(16) end for

算法流程图:
(还没画,画完就补上)

DBSCAN算法优缺点

优点:
(1)聚类速度快且能够有效处理噪声点和发现任意形状的空间聚类;
(2)与K-MEANS比较起来,不需要输入要划分的聚类个数;
(3)聚类簇的形状没有偏倚; (4)可以在需要时输入过滤噪声的参数。
缺点:
(1)当数据量增大时,要求较大的内存支持I/O消耗也很大;
(2)当空间聚类的密度不均匀、聚类间距差相差很大时,聚类质量较差,因为这种情况下参数MinPts和Eps选取困难。
(3)算法聚类效果依赖与距离公式选取,实际应用中常用欧式距离,对于高维数据,存在“维数灾难”。

DBSCAN参数选择

聚类衡量指标

DBSCAN算法仿真

DBSCAN代码

原始的DBSCAN算法参考链接:聚类方法:DBSCAN算法研究(2)–matlab代码实现

X1 =[5.1,3.5,1.4,0.2;
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;
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);
epsilon= 0.15 ;
MinPts=  3   ;
IDX1=DBSCAN(X,epsilon,MinPts);
%% Plot Results
figure;
PlotClusterinResult(X, IDX1);
title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);
set(gcf,'position',[30 -10 500 500]); 
epsilon= 0.25 ;
MinPts=  3   ;
IDX2=DBSCAN(X,epsilon,MinPts);
%% Plot Results
figure;
PlotClusterinResult(X, IDX2);
title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);
set(gcf,'position',[530 -10 500 500]);
 epsilon= 0.5 ;
MinPts=  3   ;
IDX3=DBSCAN(X,epsilon,MinPts);
%% Plot Results
figure;
PlotClusterinResult(X, IDX3);
title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);
set(gcf,'position',[30 380 500 500]);

function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)
    C=0;
    n=size(X,1);
    IDX=zeros(n,1);
    D=pdist2(X,X);
    visited=false(n,1);
    isnoise=false(n,1);
    for i=1:n
        if ~visited(i)
            visited(i)=true;
            Neighbors=RegionQuery(i);
            if numel(Neighbors)<MinPts
                % X(i,:) is NOISE
                isnoise(i)=true;
            else
                C=C+1;
                ExpandCluster(i,Neighbors,C);
            end
         end
    end
    function ExpandCluster(i,Neighbors,C)
        IDX(i)=C;
        k = 1;
        while true
            j = Neighbors(k);
            if ~visited(j)
                visited(j)=true;
                Neighbors2=RegionQuery(j);
                if numel(Neighbors2)>=MinPts
                    Neighbors=[Neighbors Neighbors2];   %#ok
                end
            end
            if IDX(j)==0
                IDX(j)=C;
            end
            k = k + 1;
            if k > numel(Neighbors)
                break;
            end
        end
    end
    function Neighbors=RegionQuery(i)
        Neighbors=find(D(i,:)<=epsilon);
    end
 end
function PlotClusterinResult(X, IDX)
    k=max(IDX);
    Colors=hsv(k);
    Legends = {};
    for i=0:k
        Xi=X(IDX==i,:);
        if i~=0
            Style = 'x';
            MarkerSize = 8;
            Color = Colors(i,:);
            Legends{end+1} = ['Cluster #' num2str(i)];
        else
            Style = 'o';
            MarkerSize = 6;
            Color = [0 0 0];
            if ~isempty(Xi)
                Legends{end+1} = 'Noise';
            end
        end
        if ~isempty(Xi)
            plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);
        end
        hold on;
    end
    hold off;
    axis equal;
    grid on;
    legend(Legends);
    legend('Location', 'NorthEastOutside');
end

运行结果图:
毫米波雷达点云 DBSCAN聚类算法毫米波雷达点云 DBSCAN聚类算法
毫米波雷达点云 DBSCAN聚类算法

DBSCAN算法对毫米波雷达点云数据进行聚类

(慢慢补全 2023年5月28日19点59分)文章来源地址https://www.toymoban.com/news/detail-462503.html

到了这里,关于毫米波雷达点云 DBSCAN聚类算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 自动驾驶环境感知之基于深度学习的毫米波雷达感知算法

    自动驾驶环境感知之基于深度学习的毫米波雷达感知算法

    (1)基本的数据形式 ADC(数模转换)数据块:由Chirp采样N、每帧内Chirp个数M和天线K组成的三维数据块的中频信号 Range-Azimuth-Doppler数据块:将中频信号数据块分别在距离、速度、角度三个维度上进行FFT操作,得到距离-角度-速度表征的RAD数据块。其中,角度是指水平方向的旋

    2024年01月25日
    浏览(13)
  • 多传感器融合 | CenterFusion:毫米波雷达和相机后融合3D检测算法

    多传感器融合 | CenterFusion:毫米波雷达和相机后融合3D检测算法

    点击下方 卡片 ,关注“ 自动驾驶之心 ”公众号 ADAS巨卷干货,即可获取 今天自动驾驶之心很荣幸邀请到寒风分享RV后融合算法CenterFusion,如果您有相关工作需要分享,请在文末联系我们! 点击进入→ 自动驾驶之心【多传感器融合】技术交流群 后台回复 【多传感器融合综述

    2024年01月19日
    浏览(49)
  • 毫米波雷达DOA估计,包含3D-FFT,DBF,music算法三种测角算法原理

    毫米波雷达DOA估计,包含3D-FFT,DBF,music算法三种测角算法原理

      毫米波雷达的目标角度估计,特别是角度分辨率的提高是雷达探测需要解决的核心问题,使用FFT(快速傅里叶变换)或者DBF(数字波束形成技术)做DOA估计是最简单且运算复杂度最低的方法,但是这两方法并不能实现超分辨,其角分辨率受限于阵列的孔径,music算法是实

    2024年02月03日
    浏览(227)
  • TI毫米波雷达人体生命体征(呼吸、心跳)信号提取算法(IWR6843ISK+DCA1000EVM)

    TI毫米波雷达人体生命体征(呼吸、心跳)信号提取算法(IWR6843ISK+DCA1000EVM)

    目录 一、引言 二、毫米波雷达检测呼吸、心跳基本原理 1.TI官方开发资料: 2.博主“调皮连续波”开源资料以及原理讲解: 三、 毫米波雷达提取呼吸、心跳信号Matlab算法处理 1.硬件平台: IWR6843ISKEVM+DCA1000EVM 2.mmavestudio参数设置:  配置说明: 算法流程简介: (1) 预处理

    2024年02月08日
    浏览(177)
  • 国内首门3D毫米波&4D毫米波雷达理论实战路线来了!

    国内首门3D毫米波&4D毫米波雷达理论实战路线来了!

    自上世纪九十年代毫米波雷达首次前装量产上车起,已经经过了二十多个年头。近年来,随着新能源汽车智能化大潮来袭,主机厂对毫米波雷达的需求与日俱增,尤其是在辅助驾驶领域,不管是入门级L2,还是高阶NOA,毫米波雷达的单车搭载数量均显著提升。据研究数据显示

    2024年03月19日
    浏览(16)
  • 【TI毫米波雷达笔记】MMwave毫米波雷达API配置及驱动(以IWR6843AOP为例)

    【TI毫米波雷达笔记】MMwave毫米波雷达API配置及驱动(以IWR6843AOP为例)

    【TI毫米波雷达】MMwave毫米波雷达API配置及驱动(以IWR6843AOP为例) MMWave API(位置处于BSS)可以被DSS和MSS调用 通过Mailbox进行数据通信 毫米波雷达接口 首先搞清楚 mmwave时雷达射频整体 每秒发送很多frame(帧) frame下面有chirp 比如96个chirp 所以当发送开始时 会连续发送96个chi

    2024年02月09日
    浏览(18)
  • 毫米波雷达实时采集教

    https://www.cnblogs.com/dhyc/p/10510876.html 毫米波雷达实时采集教程---- 雷达资料分享——RSP1 多普勒雷达开发套件

    2024年02月08日
    浏览(14)
  • 4D毫米波雷达和3D雷达、激光雷达全面对比

    4D毫米波雷达和3D雷达、激光雷达全面对比

              众所周知,传统3D毫米波雷达存在如下性能缺陷:         1)静止目标和地物杂波混在一起,难以区分;         2) 横穿车辆和行人多普勒为零或很低,难以检测;         3) 高处物体和地面目标不能区分,容易造成误刹,影响安全性;        

    2024年02月05日
    浏览(46)
  • 毫米波雷达:从 3D 走向 4D

    2024年01月02日
    浏览(17)
  • 【Apollo】自动驾驶感知——毫米波雷达

    【Apollo】自动驾驶感知——毫米波雷达

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 本文用于投稿于星火培训:报名链接 毫米波雷达分类毫米波雷达的信号频段毫米波雷达工作原理车载毫米波雷达

    2024年02月12日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包