kitti pkl可视化_KITTI 3D Lidar 数据可视化

前言Lilikili:在尝试做Lidar方面的研究的时候,发现对于可视化大家的脑洞还不是很够,所以提供一些思路让大家蛤一下。a739ef1ba60c42f0cacc586144e75f71.png

数据集

本次使用的数据集是KITTI 3D object detection条目下面的data_object_velodyne.zip,里面存储了二进制存储的Lidar数据。数据大小压缩后是26.7GB,包含7481个frame。对应的Camera数据是data_object_image_3.zip。Label什么的这次涉及不到,想要的自己找去

下载方式:因为内容存在了aws的s3里面,国内下不下来。建议使用迅雷等下载工具。

代码以及工具包

代码请移步Github:https://github.com/LGNRoy/KITTI_3D_Visulation

工具包:numpy, mayavi, matplotlib, pyside

同理,pip install的时候如果轮子下不来,建议直接去pip官网上用下载工具下载对应的轮子

基本的可视化2d2af652c051cb64ec9641c5c8f366f7.png数据集编号000001,Lidar可视化展示

这部分的代码参考了CSDN:https://blog.csdn.net/weixin_39999955/article/details/83819196

对Lidar的3D展示使用了mayavi.mlab这个工具包,效果十分强大。提供了UI,支持拖动来进行自由旋转,但是不支持平移。

颜色支持自定义。本文使用了距离(点(x, y, z)到坐标原点的直线距离)作为颜色值,使用了默认的彩虹色系,色系也可以在UI中进行切换。颜色值除了距离以外,也可以设置为高度或者反射率。

脑洞部分(开蛤)

首先来说,思路:Lidar数据是稀疏数据,按(x, y, z)点存储在笛卡尔坐标系。

但是实际上Lidar的工作原理是激光从左到右旋转,每个角度从上到下扫描。

所以依此来思考,应该会有很多点在相同角度(换句话说应该能看到很多的"竖线"),同理高度也可能会这样。

参考下两张图,可以发现,对于墙这个物体,是存在明显的竖线和横线。

那么能否能把稀疏的Lidar数据转化为二维图像数据,并解决稀疏的问题?

比如,把角度和高度离散化作为像素的位置,用距离作为灰度来绘制一张灰度图。bcf55f2219ff61879943e153992644cb.png数据集编号000000,红圈内是Lidar探测到的一面墙

fa963b0efa6f1190350205ae28f13e96.png透过Lidar扫描到的墙,来看墙外面的东西

展示步骤:先计用xy计算角度a,用z来代表高度h,再通过xyz计算出深度d。

对角度进行筛选、对高度进行筛选

用plt.scatter进行展示

展示效果:e57cdcfb547d66a3856bbc296c879e92.png数据集编号000001,横纵坐标分别为角度和高度,颜色代表深度

效果差强人意。希望得到的是方方正正的一张图,每个点都按照横竖完美的对齐排列好,但是并没有。

在后续的数据分析中发现:因为lidar的光点的误差,没有看到竖线,但是点是正态分布在线上和左右,通过一些方法应该能还原出线。

横线这边,图里虽然有明显的线,但是是曲线,这代表高度不适合作为纵轴。采用yz计算出来的角度应该会更合适一点。

总的来说,嗯,挺失败的。

你们想蛤就蛤吧5ca5f088d4f5648cb6aa0b03a5473418.png

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

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

相关文章

php mysql 排名_mysql中如何实现排名

mysql中实现排名的方法:使用demo函数,语法为【SELECT banji,avg(score) as AvgS FROM table_test GROUP BY banji ORDER BY AvgS DESC】。mysql中实现排名的方法:可用Demo实现注意里面的A,属于嵌套查询,所以排名会正确…

mysql三表where查询_mysql三表查询sql语句

表结构:Student学生表(学号、姓名、性别、年龄、编辑)Course课程表(编号、课程名称)sc选课表(选课编号、学号、课程编号、成绩)(1)写一个SQL语句,查询选修了“计算机原理”的学生学号和姓名(2)写一个SQL语句,查询“小明”同学选修的课程名称(…

mysql语句创建临时表并存入数据_mysql创建临时表,将查询结果插入已有表中 | 学步园...

今天遇到一个很棘手的问题,想临时存起来一部分数据,然后再读取。我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些。然后还需要将查询的结果存储到…

mysql数据库查询笔记_MySql数据库基础笔记(一)

一、表与库的概念数据库管理数据,它是以什么样的形式组成的?生活中的表---->表 table多行多列,传统的数据库都是这样的;声明了表头,一个表创建好了,剩下的就是往表中添加数据多张表放在档案中--->库 database学生信息表,成绩表,记过表 -> 都是这个班级的信息,将这几张…

figtree如何编辑进化树_iTOL快速绘制颜值最高的进化树

iTOL简介大家在看高分文章时,总会惊叹于,为什么人家能做出那么好看而且高大上的系统发育树,而且好看的图也能直接提升文章的档次,冲击高分文章。人家的树不管是从配色还是各种注释信息都让人无可挑剔,而你每次花了半个…

java怎么碰到异常跳过继续执行_Java异常处理很难吗?BAT大厂的架构师是怎么处理Java异常的?...

欢迎关注专栏《Java架构筑基》——专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基——专注于Java技术的研究与分享!后续文章将首发此专栏!欢迎各位Java工程师朋友投稿和关注# 链接 Java程序员福利"常用资料分…

mysql 回滚之后抛出异常_在PHP中 开始事务后,程序抛出异常 没有执行commit也没有执行rollback mysql事务会回滚吗?...

网上有人说开启事务后 sql语句执行错误或程序出错 没有执行rollback的情况下,下一次运行就会自动commit程序出错不会回滚rollback但是也有人说抛出异常等 程序如果MySQL存在没有提交的事务,那么这时候 AUTOCOMMIT 自动提交的参数应该是为 0 的。不过如果…

python列表常用方法实践_python 列表list 常用方法

stus [] #空的列表stu2 list() #空的列表stus ["fff", "zzz", "aaa"]#增stus.append("ppp") #在列表的末尾增加一个元素# print(stus)stus.insert(9, "qqq") #当指定的索引不存在,则默认插入元素到最后# prin…

python 2x可以打么_Python打基础一定要吃透这68个内置函数

内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。截止到python版本3.6.2 ,python一共提供了68个内置函数,具体如下abs() dict() help() min() setattr()all() dir() hex() next() slice()any() di…

mygeneration mysql_利用Mygeneration 自动生成maping文件和entity类文件

利用Mygeneration 自动生成maping文件和entity类文件Mygeneration下载要下载1.3.0.3版本, 默认支持mysql了,不用再安装mysql的驱动了。Template Code : 主要使用的模板代码,会实时展示在Template Source选项卡中Interface Code : 根据Templat…

mysql explain字段含义_史上最全的explain常见结果含义分析,值得收藏

概述对于MySQL执行计划的获取,我们可以通过explain方式来查看,explain方式看似简单,实际上包含的内容很多,尤其是输出结果中的type类型列。理解这些不同的类型,对于我们SQL优化举足轻重。今天主要介绍一下常见的type结…

mysql schema命名规范_数据库设计 命名及编码规范

http://blog.csdn.net/seusoftware/archive/2010/04/24/5524414.aspx引用一、综述命名和编码过程中,定义有意义的名称,以易于理解、方便书写为原则。(1)避免使用中文,尽量使用全拼音或全英文,以方便国际化;(2)避免拼音…

mysql 大表 备份_MySQL大表备份的简单方法

MySQL大表备份是一个我们常见的问题,下面就为您介绍一个MySQL大表备份的简单方法,希望对您学习MySQL大表备份方面能有所帮助。这里所说的大表是超过4G以上的表,我目前见到过最大为60多G的单表,对于这种表每…

mysql多数据源切换_CI 多数据库操作 切换数据库

CI 切换数据库是很方便的,如:连接多数据库如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:$DB1 $this->load->database(group_one, TRUE);$DB2 $this->load->database(group_two, TRUE);注意&#xff…

mysql用的cap中哪两个_分布式事务CAP定理和BASE理论

课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程。对于难以理解的知识点,全部用画图实战的方式讲解。彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景…

怎么检测mysql主从正常_使用pt-table-checksum检查主从复制是否正常

其实对于一个小小的DBA来说,有时候是无法避免这些问题的。于是我们就需要一个工具,来检查主从复制是否正常,是否出现了错误。pt-table-checksum。相关阅读:MySQL 主从复制事件校验 MySQL Replic…

java 自动类型_java类型自动转换

package com.kevin.basic;/** java类型自动转换方面的知识点* int类型 double类型 默认类型*/public class Test {/*** param args*/public static void main(String[] args) {// TODO Auto-generated method stub/* int类型是整数的默认类型。* (1)第一种:正确运行…

java 不显示控制台_命令行启动java程序不显示控制台窗口

关键:start javaw –jar xxx.jar一个例子:ECHO OFFREM "zcx eclipse help script"set ehome"f:\eclipse"pushd %ehome%if "%1" "start" (explorer http://localhost/help/index.jsp)start javaw -classpath pl…

java 修改ini文件_Java读取和修改ini配置文件

/*** 修改ini配置文档中变量的值* param file 配置文档的路径* param section 要修改的变量所在段名称* param variable 要修改的变量名称* param value 变量的新值* throws IOException 抛出文档操作可能出现的io异常*/public static boolean setProfileString(String file,St…

java定义接口规范_关于java的接口的一些规范

一、Api请求及响应规范 为了严格按照接口进行开发,提高效率,对请求及响应格式进行规范化。1、get 请求时,采用key/value格式请求,SpringMVC可采用基本类型的变量接收,也可以采用对象接收。2、Post请求时,可…