最近在做TOF相机相关的软件,近年来tof相机开始在手机,车载设备,VR等应用开始增多,产业也开始量化,是一个不错的3维相机的方向。

简单介绍一下tof相机吧:TOF是Time of flight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。

具体原理介绍参考:http://www.eetrend.com/node/100074440

https://www.sohu.com/a/151732989_385809

http://www.cnblogs.com/Jessica-jie/p/6596450.html

tof相机又有单tof和RGB_D的分别,就是有只输出深度信息tof和输出三色图+深度数据的tof。反应到软件上深度信息其是一张二维的深度点云信息,也就是原始得到的信息是一张图像,每个点的值代表着相机和物体的距离的值,而不像二维相机是像素值。

tof相机原始深度数据到我们需要的3维点云数据的步骤:

1.对原始深度数据做初步校正和温度校准(tof相机的数据和相机的温度有关,这也是数据精度不高的一个原因)

2.图像的畸变校正。

3.深度图像坐标系(x0,y0,z0)转化成相机坐标系(x1,y1,z1),及把图像上的深度信息转化成以相机为原点的三维坐标系。

(没找到合适的参考资料,这个是介绍相机成像原理的,理论是一样的:https://blog.csdn.net/sunshine_zoe/article/details/73457686)

4.相机坐标系(x1,y1,z1)转化成需要的世界坐标系(x2,y2,z2),及把相机的坐标系转化成项目需要的坐标系,也就是最终的点云的坐标系。

一般用到对坐标系进行旋转,缩放和平移,一般用矩阵的运算求,对于(x1,y1,z1)可以放入一个【4*1】的矩阵中,变换矩阵是一个【4*4】的方阵

(1)平移:原始矩阵左乘一个变换矩阵,其中x,y,z是原始矩阵,x',y',z'是结果

(2)缩放:

用上面的变换矩阵左乘原始矩阵(x1,y1,z1)的【4*1】矩阵即可。

(3)旋转

参考这个博主的,写的很简明易懂:https://blog.csdn.net/swety_gxy/article/details/73087848

从图像坐标x0,y0,z0到相机坐标系x1,y1,z1,再转换到世界坐标系x2,y2,z2,第一个转换用标准的转换公式,第二个转换用旋转矩阵变化,包括相机的旋转和平移。

代码上可以写成如下的数学公式模型:

这样就能得到最终需要的点云数据,可以用python的pylotly进行可视化。

python代码:

import plotly.plotly as py
import plotly.graph_objs as goimport numpy as npx, y, z = np.random.multivariate_normal(np.array([0,0,0]), np.eye(3), 200).transpose()
trace1 = go.Scatter3d(x=x,y=y,z=z,mode='markers',marker=dict(size=12,line=dict(color='rgba(217, 217, 217, 0.14)',width=0.5),opacity=0.8)
)x2, y2, z2 = np.random.multivariate_normal(np.array([0,0,0]), np.eye(3), 200).transpose()
trace2 = go.Scatter3d(x=x2,y=y2,z=z2,mode='markers',marker=dict(color='rgb(127, 127, 127)',size=12,symbol='circle',line=dict(color='rgb(204, 204, 204)',width=1),opacity=0.9)
)
data = [trace1, trace2]
layout = go.Layout(margin=dict(l=0,r=0,b=0,t=0)
)
fig = go.Figure(data=data, layout=layout)
py.iplot(fig, filename='simple-3d-scatter')

使用plotly库的官网3d点云参考:https://plot.ly/python/3d-scatter-plots/

因本人水平有限,如果有哪里错误,希望大神指教。

tof相机简介及三维坐标转化,plotly画3D点云相关推荐

  1. 三维重建(5)之三角测量计算双目相机坐标系下三维坐标

    三角测量计算三维坐标 注:三角测量须在双目相机进行立体匹配之后进行计算,针对极线校正后图像 关于极线校正可以参考我的上篇博文:相机成像+单应性变换+相机标定+立体校正 1.双目相机成像原理详解 参考: ...

  2. 双目相机下目标三维坐标计算(四)

    本文来自公众号:机器人视觉 完成双目相机标定以后,获得双目相机的参数矩阵 包括左右相机的内参数矩阵.左右相机的畸变系数矩阵.右相机相对于左相机的旋转矩阵与平移矩阵 已知左右相机图像中的对应点坐标,获取 ...

  3. TOF相机-非扫描三维成像

    飞行时间法(TOF)3D成像,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离. 这种技术跟3D激光传感器原理基本类似,只不过3D激光传感器 ...

  4. 使用plotly画3d立方体

    关于plotly3D 方面(https://plotly.com/python/3d-charts/)没有可以直接画出立方体的方案,所以使用Mesh (https://plotly.com/pytho ...

  5. 三维点云数据处理软件供技术原理说明_基于三维激光扫描的粮仓储量测量中点云数据处理技术的研究...

    内容简介: 基于三维激光扫描的粮仓储量测量中点云数据处理技术的研究,毕业论文,共74页,30308字. 内容摘要 三维激光扫描仪(又称"激光雷达")能够快速.有效地获取空间点的三维 ...

  6. Python双目相机计算三维坐标(使用opencv自带图片)

    前言:虽然计算三维坐标已经很多大佬研究过了,但是网上能用的好少啊.原理不多解释了,直接上程序. 1.导入库 import numpy as np import cv2 包括矩阵处理和图像处理的两个基本 ...

  7. python画三维坐标图像_由RGB-D图像获取三维坐标(相机坐标) Python

    由RGB-D图像获取三维坐标(相机坐标) Python 由RGB-D图像获取三维坐标(相机坐标) Python 图像数据 获取相机坐标(本处是在深度摄像头下) 相信大家最感兴趣的 肯定是代码啦 由RG ...

  8. ROS:二维坐标映射到三维坐标上(彩色与深度图像匹配)(基于深度相机D415)

    最近在用D435做物体识别抓取的时候发现二维坐标到三维坐标没有一个直接能用的从二维像素点坐标转换到三维坐标的ROS节点,自己之前写过的kinect V2的坐标映射的通用性太差,所以这次写了一个节点,利 ...

  9. Realsense获取像素点在相机坐标系下的三维坐标

    系统:Windows10 设备:RealSense D435i 提前搭建好Python环境,安装pyrealsense2,numpy,opencv. python-代码 # -*- coding: u ...

最新文章

  1. 恢复误删的进程在使用的文件【转】
  2. 【C++快读快输详解(快速读入数字,快速输出数字)】
  3. 如何查看 phtml文件 并有代码颜色提示
  4. python什么是数据结构_〖Python〗-- 数据结构
  5. openssl / vs2019 编译 openssl 1.0.2u 过程说明
  6. .ne中的控制器循环出来的数据如何显示在视图上_【asp.net core 系列】3 视图以及视图与控制器...
  7. C#中IEnumerable.OfType()方法的简单使用
  8. Spring Bean生命周期-obtainFreshBeanFactory(三)
  9. python自学行吗-大家觉得自学python多久能学会?
  10. java json 替换属性值_java字符串转json取对象和属性值问题
  11. TextView设置跑马灯效果
  12. 计算机视觉 || Canny算子实现边缘分割并进一步处理
  13. SSM搭建-Spring之bean的属性值XML注入方式(4)
  14. vue打包多个html,vue多页面应用打包配置
  15. pytorch历史版本下载_Pytorch、Anaconda安装、Navidia版本更新
  16. 操作系统--01计算机系统概述
  17. 高手速成android开源项目[View篇]
  18. 【社区分享】专注移动端机器学习交流,TensorFlow Lite 中文兴趣小组招募中!
  19. 删除计算机系学生(在student表中),数据库原理及应用(第2版)习题参考答案
  20. 中国无花果市场供需形势与未来产值预测报告(新版)2022-2027年

热门文章

  1. 长城会十周年:文厨用故事讲述它的“前世今生”
  2. BIM的发展现状与技术优势
  3. Prometheus(十)Granfana 通过文件配置实现自动化
  4. 高德地图大头针功能_【iOS】高德地图MAMapKit的使用:地图显示、添加大头针、导航、定位功能介绍...
  5. 【组成原理-处理器】微程序控制器
  6. SQL Server计算一年中的第几周
  7. react手机端项目注意点,ant design-mobile框架
  8. 搜索引擎检索的一点经验
  9. @MapKey的使用
  10. 面试干货!21个必知数据科学面试题和答案