深度图像计算三维点云

在PCL的库函数中是有关于深度图到点云数据之间的转化的函数,所以这里首先说清楚深度图像与点云之间的关系,

1.深度图像(depth image)也叫距离影像(range image),是指将从图像采集器到场景中各点的距离(深度)值作为像素值的图像。获取方法有:激光雷达深度成像法、计算机立体视觉成像、坐标测量机法、莫尔条纹法、结构光法。它直接反映了景物可见表面的几何形状。


2.点云:当一束激光照射到物体表面时,所反射的激光会携带方位、距离等信息。若将激光束按照某种轨迹进行扫描,便会边扫描边记录到反射的激光点信息,由于扫描极为精细,则能够得到大量的激光点,因而就可形成激光点云。点云格式有*.ply ;*.pcd; *.txt等。点云的处理我们经常使用的开源库PCL,当然这里可以延伸一下,三维的CAD 文件数据也是可以填充点云形成不同角度的点云数据,这种CAD文件到点云之间的转化,经常用在binpicking,用于机械臂的抓取时,对模型点云生成各个角度的点云,以适应对不同场景中,种种姿态的匹配,

两者之间的关系:
深度图像经过坐标转换可以计算为点云数据,有规则及必要信息的点云数据也可以反算为深度图像数据。深度数据流所提供的图像帧中,每一个像素点代表的是在深度感应器的视野中,该特定的(x, y)坐标处物体到离摄像头平面最近的物体到该平面的距离。

对于深度图像主要集中在:深度图像的分割技术、深度图像的边缘检测技术、基于不同视点的多幅深度图像的配准技术、基于深度数据的三维重建技术、基于深度图像的三维目标识别技术、深度数据的多分辨率建模和几何压缩技术等等。在PCL中深度图像与点云最主要的区别在于,其近邻的检索方式不同,并且可以相互转换。

深度图像是物体的三维表示形式,一般通过立体照相机或者TOF照相机获取。如果具备照相机的内标定参数,可将深度图像转换为点云,所以以上的研究点也是点云的主要研究点

深度图转点云的计算过程主要是多视图几何的知识,其原理是根据内外参矩阵变换公式得到:

                                             

以上这个图是非常经典的针孔模型结构示意图,在相机标定这一章节都需要了解这个模型,具体的推导,可以百度相机标定的基本推导,我之前也写过,但是编辑的不太好看,,,

其中u,v为图像坐标系下的任意坐标点。u0,v0分别为图像的中心坐标。xw,yw,zw表示世界坐标系下的三维坐标点。zc表示相机坐标的z轴值,即目标到相机的距离。R,T分别为

外参矩阵的3x3旋转矩阵和3x1平移矩阵。

 

对外参矩阵的设置:由于世界坐标原点和相机原点是重合的,即没有旋转和平移,所以

因为相机坐标系和世界坐标系的坐标原点重合,因此相机坐标和世界坐标下的同一个物体具有相同的深度,即zc=zw.于是公式可进一步简化为

 

从以上的变换矩阵公式,可以计算得到图像点[u,v]T 到世界坐标点[xw,yw,zw]T的变换公式:

 

 https://github.com/ros-perception/depthimage_to_laserscan

具体需要做实验说明

 

 关注微信公众号,加入群聊

posted @ 2018-09-12 15:52  Being_young  阅读(8578)  评论(0编辑  收藏  举报