适用于4D毫米波雷达的目标矩形框聚类

目录

一、前言

二、点云聚类分割

三、基于方位搜索L型拟合

四、评价准则之面积最小化

五、评价准则之贴合最大化

六、评价准则之方差最小化


 

3da15d2e63e047c9a39ad39831be0075.png

一、前言

对于多线束雷达可以获取目标物体更全面的面貌,在道路中前向或角雷达可能无法获取目标车矩形框但可以扫到两边或者一边,在做目标方向估计时这些信息至关重要。看到一篇文章不错的思路,拿来记录借鉴下。

整体算法:
Step1: 将距离点按照预先设定的距离阈值进行聚类划分簇
Step2:基于方位搜索+特定准则进行L型拟合,得出4边参数
2.1 矩形面积最小化
2.2 点到边靠近最大化
2.3 点到边方差最小化

二、点云聚类分割

对于所有点,在距离r一点内找到它的相邻点,将相邻点设置为未检测,对未检测点继续找到距离r内的任何一个点,把邻近点放在这个簇中直到集群不再增长。

afe7f40da3d2461b9b171fd9a93dd7cd.png

def _adoptive_range_segmentation(self, ox, oy):# Setup initial clustersegment_list = []for i, _ in enumerate(ox):c = set()r = self.R0 + self.Rd * np.linalg.norm([ox[i], oy[i]])for j, _ in enumerate(ox):d = np.hypot(ox[i] - ox[j], oy[i] - oy[j])if d <= r:c.add(j)segment_list.append(c)# Merge clusterwhile True:no_change = Truefor (c1, c2) in list(itertools.permutations(range(len(segment_list)), 2)):if segment_list[c1] & segment_list[c2]:segment_list[c1] = (segment_list[c1] | segment_list.pop(c2))no_change = Falsebreakif no_change:breakreturn segment_list

 

三、基于方位搜索L型拟合

80db7156348e427c8728232643489652.png

dec3357dea4545cc8dba368502134009.png

step2:基于方位搜索的L 型拟合

遍历矩形的所有可能方向;在每次迭代中,可以找到一个该方向并包含所有扫描点的矩形;进一步可以得到所有点到矩形四条边的距离,并根据这些距离将点分为P和Q,并计算相应的平方误差作为(1)中的目标函数;在迭代所有方向并获得所有相应的平方误差后,寻找实现最小平方误差的最优方向,并根据该方向拟合矩形

22c4e7b4cc9e40dcacb79cd1621fee38.png

def _rectangle_search(self, x, y):xy = np.array([x, y]).Td_theta = np.deg2rad(self.d_theta_deg_for_search)min_cost = (-float('inf'), None)for theta in np.arange(0.0, np.pi / 2.0 - d_theta, d_theta):c = xy @ rot_mat_2d(theta)c1 = c[:, 0]c2 = c[:, 1]# Select criteriacost = 0.0if self.criteria == self.Criteria.AREA:cost = self._calc_area_criterion(c1, c2)elif self.criteria == self.Criteria.CLOSENESS:cost = self._calc_closeness_criterion(c1, c2)elif self.criteria == self.Criteria.VARIANCE:cost = self._calc_variance_criterion(c1, c2)if min_cost[0] < cost:min_cost = (cost, theta)# calc best rectanglesin_s = np.sin(min_cost[1])cos_s = np.cos(min_cost[1])c1_s = xy @ np.array([cos_s, sin_s]).Tc2_s = xy @ np.array([-sin_s, cos_s]).Trect = RectangleData()rect.a[0] = cos_srect.b[0] = sin_srect.c[0] = min(c1_s)rect.a[1] = -sin_srect.b[1] = cos_srect.c[1] = min(c2_s)rect.a[2] = cos_srect.b[2] = sin_srect.c[2] = max(c1_s)rect.a[3] = -sin_srect.b[3] = cos_srect.c[3] = max(c2_s)return rect

 

四、评价准则之面积最小化

a1cfde486c4943778a0e82a655695eb8.png

def _calc_area_criterion(c1, c2):c1_max, c1_min, c2_max, c2_min = LShapeFitting._find_min_max(c1, c2)alpha = -(c1_max - c1_min) * (c2_max - c2_min)return alpha

 

五、评价准则之贴合最大化

f211f7c1262c4bf58064bb454ff0e3c4.png

def _calc_closeness_criterion(self, c1, c2):c1_max, c1_min, c2_max, c2_min = LShapeFitting._find_min_max(c1, c2)# Vectorizationd1 = np.minimum(c1_max - c1, c1 - c1_min)d2 = np.minimum(c2_max - c2, c2 - c2_min)d = np.maximum(np.minimum(d1, d2), self.min_dist_of_closeness_criteria)beta = (1.0 / d).sum()return beta

六、评价准则之方差最小化

0d70e1efa8b144a7b8e136647ddb8ed3.png

def _calc_variance_criterion(c1, c2):c1_max, c1_min, c2_max, c2_min = LShapeFitting._find_min_max(c1, c2)# Vectorizationd1 = np.minimum(c1_max - c1, c1 - c1_min)d2 = np.minimum(c2_max - c2, c2 - c2_min)e1 = d1[d1 < d2]e2 = d2[d1 >= d2]v1 = - np.var(e1) if len(e1) > 0 else 0.v2 = - np.var(e2) if len(e2) > 0 else 0.gamma = v1 + v2return gamma

 

Result:

1fb1bca4ecd647febd4ef8a1b9b25d69.png

 

 

 

参考:《Efficient L-Shape Fitting for Vehicle Detection Using Laser Scanners》

 

 

 

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

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

相关文章

【Shell脚本8】Shell printf 命令

Shell printf 命令 printf 命令模仿 C 程序库&#xff08;library&#xff09;里的 printf() 程序。 printf 由 POSIX 标准所定义&#xff0c;因此使用 printf 的脚本比使用 echo 移植性好。 printf 使用引用文本或空格分隔的参数&#xff0c;外面可以在 printf 中使用格式化…

使用Go语言抓取酒店价格数据的技术实现

目录 一、引言 二、准备工作 三、抓取数据 四、数据处理与存储 五、数据分析与可视化 六、结论与展望 一、引言 随着互联网的快速发展&#xff0c;酒店预订已经成为人们出行的重要环节。在选择酒店时&#xff0c;价格是消费者考虑的重要因素之一。因此&#xff0c;抓取酒…

GZ038 物联网应用开发赛题第2套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第2套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评人员反映,不得扰乱赛场秩序; 3、遵守赛场纪律,尊重考评人员,…

数据结构-Prim算法构造无向图的最小生成树

引子&#xff1a; 无向图如果是一个网&#xff0c;那么它的所有的生成树中必有一颗生成树的边的权值之和是最小的&#xff0c;我们称 这颗权值和最小的树为&#xff1a;“最小生成树”&#xff08;MST&#xff09;。 其中&#xff0c;一棵树的代价就是树中所有权值之和。 而…

2023云栖大会,Salesforce终敲开中国CRM市场

2015年被视为中国CRM SaaS元年&#xff0c;众多CRM SaaS创业公司和厂商在Salesforce的榜样作用下涌入了CRM SaaS赛道。在全球市场&#xff0c;Salesforce是CRM SaaS领域的领导厂商&#xff0c;连续多年占据了全球CRM SaaS第一大厂商地位。然而&#xff0c;Salesforce作为业务类…

【Linux】 reboot 命令使用

reboot 命令用于用来重新启动计算机。 语法 reboot [参数] 命令选项及作用 执行令 man --reboot 执行命令结果 参数 -n : 在重开机前不做将记忆体资料写回硬盘的动作-w : 并不会真的重开机&#xff0c;只是把记录写到 /var/log/wtmp 档案里-d : 不把记录写到 /var/log…

Vue el-table序号与复选框hover切换

效果图下&#xff1a; <template><div class"container"><el-tableref"multipleTable"id"multipleTable":data"person.tableData"cell-mouse-enter"cellEnter"cell-mouse-leave"cellLeave"selecti…

探索人工智能领域——30个名词详解

目录 前言 正文 总结​​​​​​​ &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请…

在WSL2中安装多个Ubuntu实例

参考&#xff1a;How to install multiple instances of Ubuntu in WSL2 本文主要内容 第一步&#xff1a;在 WSL2 中安装最新的 Ubuntu第二步&#xff1a;下载适用于 WSL2 的 Ubuntu 压缩包第三步&#xff1a;在 WSL2 中安装第二个 Ubuntu 实例第四步&#xff1a;登录到第二个…

什么是代理IP池?真实测评IP代理商的IP池是否真实?

代理池充当多个代理服务器的存储库&#xff0c;提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务&#xff0c;而无需担心被检测或阻止的风险。代理池为各种在线活动&#xff08;例如网页抓取、安全浏览等&#xff09;提高后勤保障。 读完…

AI:77-基于深度学习的工业缺陷检测

🚀 本文选自专栏:人工智能领域200例教程专栏 《人工智能领域200例教程专栏》从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,通过本专栏案例和项目实践,都有参考学习意义。每篇案例都包含代码实例,详细讲解供大家学习。 ✨✨✨ 每一个案例都附带有代码,在本…

在jupyter中使用R

如果想在Jupyter Notebook中使用R语言&#xff0c;以下几个步骤操作可行&#xff1a; 1、启动Anaconda Prompt 2、进入R的安装位置&#xff0c;切换到R的安装位置&#xff1a;D:\Program Files\R\R-3.4.3\bin&#xff0c;启动R&#xff0c;具体代码操作步骤如下&#xff0c;在…

2022年06月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有如下Python程序,包含lambda函数,运行该程序后,输出的结果是?( ) g = lambda x,y:x*y print(g(2,3)

18. 深度学习 - 从零理解神经网络

文章目录 本文目标预测趋势与关系波士顿房价预测 Hi, 你好。我是茶桁。 我们终于又开启新的篇章了&#xff0c;从今天这节课开始&#xff0c;我们会花几节课来理解一下深度学习的相关知识&#xff0c;了解神经网络&#xff0c;多层神经网络相关知识。并且&#xff0c;我们会尝…

【经验模态分解】3.EMD模态分解算法设计与准备工作

/*** poject 经验模态分解及其衍生算法的研究及其在语音信号处理中的应用* file EMD模态分解算法设计与准备工作* author jUicE_g2R(qq:3406291309)* * language MATLAB* EDA Base on matlabR2022b* editor Obsidian&#xff08;黑曜石笔记软…

【机器学习基础】机器学习概述

目录 前言 一、机器学习概念 二、机器学习分类 三、机器学习术语 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x…

机器视觉工程师注意,没有经历过公司倒闭看下文章,机器视觉公司即将要倒闭的征兆是什么?

很多机器视觉工程师没有经历过公司倒闭&#xff0c;谁也不想自己的公司倒闭&#xff0c;毕竟我们是打工人&#xff0c;拿固定工资的。 机器视觉公司即将要倒闭的征兆有哪些迹象​&#xff1f;​ 1、PM&#xff0c;机器视觉工程师频繁开会&#xff0c;甚至周末强制开会。 2.停…

Azure - 机器学习:使用自动化机器学习训练计算机视觉模型的数据架构

目录 一、用于训练的数据架构图像分类&#xff08;二进制/多类&#xff09;多标签图像分类对象检测实例分段 二、用于推理的数据格式输入格式输出格式图像分类多标签图像分类对象检测实例分段 了解如何设置Azure中 JSONL 文件格式&#xff0c;以便在训练和推理期间在计算机视觉…

debian 已安装命令找不到 解决方法

前言&#xff1a;安装了debian系统&#xff0c;更新完软件包安装软件之后发现很多命令找不到&#xff0c;查找命令路径发现命令已经安装了&#xff0c;但是没办法直接使用 更新软件包 &#xff08;第一次安装的系统一定要执行&#xff0c;不然可能无法安装软件&#xff09; apt…

Code Review最佳实践

Code Review最佳实践 Code Review 我一直认为Code Review&#xff08;代码审查&#xff09;是软件开发中的最佳实践之一&#xff0c;可以有效提高整体代码质量&#xff0c;及时发现代码中可能存在的问题。包括像Google、微软这些公司&#xff0c;Code Review都是基本要求&…