二维与三维之间的桥梁——点云

在做图像配准时就听闻过一些点云的方法,却没对其有太多的认识,只是知道点云point cloud顾名思义就是一些离散点的集合。现在在无人驾驶中一些激光雷达的作用其实就是生成点云数据,接下来介绍一下点云数据的含义和基础的使用方法。

虽然特斯拉是坚定的纯视觉自动驾驶路线的支持者,但其实更多的无人驾驶公司同时还会使用激光雷达LiDAR。经常见到无人驾驶的车顶会有一个旋转的圆柱体,其实就是机械式激光雷达,通过旋转镜面将激光反射到不同角度,得到360度的数据:

雷达有很多种,激光雷达只是其实一种,它的全称是light detection and ranging,就是使用激光进行探测和测距。

先来讲测距的原理。

因为同时有发射器和接收器,而光速是已知的,所以很明显可以利用波束传播的时间来得到距离。那么怎么得到传播时间呢?一个方法就大名鼎鼎的TOF,time of fly,又叫做光束法。这种方法依靠物体的漫反射,对脉冲宽度和接收器时间分辨率要求高,所以总体效果一般。第二种方法是相位法phase difference,这是一种相对的方法:不是发射一束而是成周期地发射,所以回波会产生相位差,从而可以估计传播时间。

除了基于时间段测距,还有基于几何的测距。三角测量法triangulation principle利用了三角形相似原理。

探测是基于测距的,目的是得到物体的三维坐标。以什么坐标系?

得到三维坐标及每个点对应的反射强度就构成了点云数据。接下来看一下真实的点云数据是什么样子。从阿波罗项目页可以下载到一些点云数据。这里百度提供了两种数据格式:一种是.pcd,一种是.bin文件。.pcd是PCL库官方指定的格式,每一个.pcd文件都会有一个文件头,就和Opencv中的Mat一样,会有一个数据头去描述这个点云图的一些基础信息:

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7                        #指定PCD文件版本
FIELDS x y z intensity timestamp   #指定一个点可以有的每一个维度和字段的名字
SIZE 4 4 4 1 8                     #用字节数指定每一个维度的大小
TYPE F F F U F                     #一个字符指定每一个维度的类型,F是浮点
COUNT 1 1 1 1 1                    #每一个维度包含的元素数目,一般都是1,但是描述子可能是128
WIDTH 101045                       #无序点云的数目或者有序点云一行的数目
HEIGHT 1                           #无序点云时设置为1,有序时表示一列的数目
VIEWPOINT 0 0 0 1 0 0 0            #视点信息被指定为三维平移+ 四元数,默认值为0001000
POINTS 101045                      #指定点云中点的总数
DATA binary_compressed             #指定存储点云数据的数据类型:ASCII或者Bin,bin更快速

按道理它就是一个文本,但是直接以文本打开的话除了刚才讲到的文件头,其余数据都是乱码,python中使用utf-8和ISO-8859-1和rb都无法看到正常的点坐标。所以兜兜转转半天,还是通过安装第三方库轻松解决。

import open3d as o3d
print("Load a ply point cloud, print it, and render it")
pcd = o3d.io.read_point_cloud("20期.pcd")
print(pcd)
print(o3d.np.asarray(pcd.points))
o3d.visualization.draw_geometries([pcd])

可以得到坐标及可视化结果:

[[ -8.39819813  -5.66665173  -0.9710691 ]
 [ -8.13930702  -5.81639719  -0.9073652 ]
 [-22.42602539 -21.35739517   0.32076412]
 ...
 [ -6.15335035  -5.64766216  -1.15699255]
 [ -6.67443991  -5.32205296  -1.74743378]
 [ -6.31309557  -5.57189178  -1.63395274]]

也可以安装PCL,似乎需要自己编译,暂未实现。

Reference:

1.https://www.zhihu.com/question/418827194/answer/1451606698

2.旋转https://baijiahao.baidu.com/s?id=1695602953340739196&wfr=spider&for=pc

3.readhttps://www.cnblogs.com/zyber/p/9578240.html

4.格式https://blog.csdn.net/weixin_46098577/article/details/111594733

5安装pclhttps://blog.csdn.net/McEason/article/details/105195285

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

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

相关文章

python刷题+leetcode(第一部分)

1. 设计前中后队列 思路:python代码直接利用list的insert特性 class FrontMiddleBackQueue:def __init__(self):self.queque []def pushFront(self, val: int) -> None:self.queque.insert(0, val)def pushMiddle(self, val: int) -> None:self.queque.insert(len(self…

LINQ基础概述

介绍LINQ基础之前,首说一下LINQ 的历史和LINQ是什么,然后说一下学习 LINQ要了解的东西和 LINQ基础语法LINQ 的历史从语言方面的进化 –委托 –匿名方法 –Lambda表达式 –Linq查询表达式 上边这四个我会在下边一一解说 从时间方面的演进 –2004年 –2005…

机器人“快递小哥”上岗了!京东配送机器人编队长沙亮相

11 月 22 日上午,京东物流配送机器人智能配送站启用仪式在长沙举行,随着载有用户订单的配送机器人编队从站内依次发出,全球首个由机器人完成配送任务的智能配送站正式投入使用。首个京东配送机器人智能配送站位于长沙市科技新城,占…

3D打印技术如何影响未来

来源:学习时报我们应该对3D打印技术保持谨慎态度,但过度反应和监管也可能会扼杀创新。历史经验表明,在技术的不利一面被应用之前进行规范构建对话是最有效的。因此,各国际主体,包括国家、商业领袖、政府官员和其他政策…

HDR简单介绍

问题定义 HDR字面意思是高动态范围High Dynamic Range,而动态范围是高图像质量的五个要素之一(其余是1. 分辨率,2.位深度,3.帧速率,4.色域),而画质直接关系到人眼的主观感受。 如果将动态范围理解为量化的…

争议中挺进全新里程——中国“超级对撞机”《概念设计报告》发布侧记

来源:科技导报2018 年11 月12 日下午6 点半,北京市玉泉路,中国科学院高能物理研究所,所有建筑和行人沐浴在初冬夜晚的清冷与安静之中。不同的是,主楼西侧一座新楼的大厅里,却充满了热望和兴奋。这里正进行着…

haar级联分类器--人脸检测和匹配

分类器链接,https://download.csdn.net/download/fanzonghao/10582586 代码: import numpy as np import cv2# 实例化人脸分类器 face_cascade cv2.CascadeClassifier(./haarcascades/haarcascade_frontalface_default.xml) # 实例化眼睛分类器 eye_c…

社会科技奖不是新鲜事?如何真正做大

来源:中国科学报我国的社会力量设立科学技术奖励起步于上世纪80年代。科技部网站上2018年9月5日更新的《社会科技奖励目录》显示,目前我国共有269个社会科技奖项登记在册,其中最后一个正是未来科学大奖。11月18日,2018未来科学大奖…

泊松融合——用了拉普拉斯但没有金字塔

图像融合的方式有alpha融合,拉普拉斯金字塔融合。 同样是基于拉普拉斯算子,我们可以直接用求解的方式得到融合后的图像。因为人眼对二阶导是更敏感的,所以只要我们指定了融合区域内部的梯度值,并且知道融合边界处的值&#xff0c…

三层神经网络实现手写字母的识别(基于tensorflow)

数据集的制作参考这篇文章: https://blog.csdn.net/fanzonghao/article/details/81229409 一,读取数据集 import tensorflow as tf import numpy as np import pickle import matplotlib.pyplot as plt #对于x变成(samles,pixs),y变成one_hot (sample…

(转)Kinect背景移除支持多人

原文:http://blogs.msdn.com/b/k4wdev/archive/2013/10/22/using-kinect-background-removal-with-multiple-users.aspx?utm_sourcetuicool Introduction: Background Removal in Kinect for Windows The 1.8 release of the Kinect for Windows Developer Toolkit…

德国汉堡科学院院士张建伟:信息物理系统驱动智能未来

来源:OFweek工控网随着第四次工业革命的到来,信息技术(IT)和运营技术(OT)的融合成为新趋势,工厂开始进入数字化转型阶段,而德国“工业4.0”战略给全球制造业发展带来启示&#xff0c…

两层卷积网络实现手写字母的识别(基于tensorflow)

可和这篇文章对比,https://blog.csdn.net/fanzonghao/article/details/81489049,数据集来源代码和链接一样。 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import read_pickle_datasettrain_dataset,train_label,vali…

焦李成教授谈深度神经网络发展历程

来源:西电人工智能学院摘要:焦李成教授谈深度神经网络发展历程2018年11月18日下午,计算机科学与技术学部主任、人工智能学院焦李成教授在成都参加了由中国人工智能学会主办的人工智能大讲堂并做特邀报告,焦李成教授在报告中回顾了…

KNN实现CIFAR-10数据集识别

cs231n链接:http://cs231n.github.io/linear-classify/, 训练集链接:https://download.csdn.net/download/fanzonghao/10592049 KNN缺点:每个测试样本都要循环一遍训练样本。 该数据集由5个data_batch和一个test_batch构成&…

近期苹果、Facebook等科技巨头股价缘何不断下跌?

来源:资本实验室近期,FAANG(Facebook、亚马逊、苹果、Netflix、谷歌)等科技巨头股价都出现了不同程度的下跌,而美国科技股整体的持续大跌,更是引发了全球股市振荡。其中,亚马逊在今年9月初达曾达到1万亿美元市值&#…

概率论基础知识各种分布

离散分布:伯努力分布,二项分布,possion分布 一,伯努力分布 #执硬币 x_arrnp.array([0,1]) #x为1的概率 p0.7 #0 1分布 #由PMF生成对应的概率 离散事件 pr_arrstats.bernoulli.pmf(x_arr,p) plt.plot(x_arr,pr_arr,markero,lines…

AI 芯片和传统芯片的区别

来源:内容来自「知乎汪鹏 」所谓的AI芯片,一般是指针对AI算法的ASIC(专用芯片)。传统的CPU、GPU都可以拿来执行AI算法,但是速度慢,性能低,无法实际商用。比如,自动驾驶需要识别道路行…

三层神经网络实现手写数字的识别(基于tensorflow)

数据集链接:https://download.csdn.net/download/fanzonghao/10598333 from tensorflow.examples.tutorials.mnist import input_data mnist input_data.read_data_sets("./mnist/", one_hotTrue)import tensorflow as tf# Parameters learning_rate 0…

鼠标终将消失,未来我们有哪些人机交互方式?

来源:资本实验室在人类发明史上,诞生了无数的英雄。他们的发明往往从一项前沿技术到家喻户晓、无处不在,但他们自己却又鲜为人知,美国发明家道格拉斯恩格尔巴特就是其中的代表。20世纪60年代,道格拉斯恩格尔巴特发明了…