最近正在制作TOF相机相关的软件,近年来TOF相机的手机、车载设备、VR等APP应用开始增加,产业也开始量化,是个很好的三维相机方向。
让我简单介绍一下托福照相机。 tof是flight时间的缩写,直译为飞行时间的意思。 飞行时间法3D成像是向目标连续发送光脉冲,由传感器接收物体返回的光,通过检测光脉冲的飞行(往返)时间得到目标物距离。
具体原理介绍参考: http://www.ee trend.com/node/100074440
3359 www.Sohu.com/a/151732989 _ 385809
33558 www.cn blogs.com/fn dll-Jie/p/6596450.html
tof相机有单tof和RGB_D的区别。 也就是说,有仅输出深度信息tof的tof和输出3种颜色的深度数据的tof。 软件中反映的深度信息是二维深度点云信息。 即,从原始获得的信息是图像,各点的值表示照相机和物体的距离的值,二维照相机不一定是像素值。
要将tof相机的原始深度数据转换为所需的三维点云数据:
1 .对原始深度数据进行初步校正和温度校准(托福摄像机数据与摄像机温度有关,这也是数据精度不高的原因之一) )。
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代码:
importplotly.plotlyaspyimportplotly.graph _ objsasgoimportnumpyasnpx,y,z=NP.random.multivariate _ normal (200 mode='markers ',marker=dict ) size=12,line width=0.5 ),opacity=0.8 ) x2,y2,z2=NP.random.multivariarial y=y2,z=z2,mode='markers ',marker=dict (color=' RGB (127,127 ) ),size=12,symbol='circle ',opacicior trace2] layout=go.layout (margin=dict (l=0,r=0,b=0,t=0) ) fig=go filename=' simple-3d-scatttd
因为本人水平有限,如果有什么错误的话,请告诉大神。