Kinect摄像头简介
1 RGBD深度摄像头简介
目前RGBD深度摄像头获取深度图像的方法主要有立体视觉,激光雷达测距和结构光三大类。
①立体视觉。获取深度信息,指的是通过获取同一场景不同视角的多张图像,利用图像的匹配和一定的三维重建算法来计算场景对象的深度信息,如利用处同一轴线上的两个摄像头获取场景对象的两张视差图以及相机的内参和外参数计算深度信息的双目摄像头。
②激光雷达测距则采用TOF 技术(Timeof flight,飞行时间),它通过记录光源投射到每个像素点的光线发射与反射间的相位变化来计算光线飞行时间,进而计算光源到每个像素点的距离,比如微软推出的最新的 Kinect 2代(京东价格1459)。
③结构光,获取深度数据的方式是通过结构光投射器向对象物体表面投射可控制的光点、光线或者光面,将返回的光斑与参考光斑进行对比,利用三角测量原理计算物体的三维空间信息。与其他深度获取技术相比,结构光技术具有计算简单、体积小、经济性好、大量程且便于安装维护的优点,因此在实际深度三维信息获取中被广泛使用。如微软Kinect1(淘宝价格625)、Prime Sensor 以及华硕的Xtion。
2 Kinect摄像头参数介绍
Kivect V1 for PC
Kinect v1的Depth传感器,采用了「Light Coding」的方式,读取投射的红外线pattern,通过pattern的变形来取得Depth的信息。为此,Depth传感器分为投射红外线pattern的IR Projector(左)和读取的这个的IR Camera(右)。还有Depth传感器中间还搭载了Color Camera。(Light Coding是以色列的PrimeSense公司的Depth传感器技术,于2013年被美国苹果公司收购。)
Kinect V2 for PC
Kinect V2预览版的Depth传感器,采用的是「Time of Flight(TOF)」的方式,通过从投射的红外线反射后返回的时间来取得Depth信息。Depth传感器看不到外观,不过Color Camera旁边是红外线Camera(左)和投射脉冲变调红外线的Porjector(右)。
| Kinect V1 | Kinect V2 | |
颜色(Color) | 分辨率(Resolution) | 640x480 (32bits) | 1920x1080(32bits) |
帧率(fps) | 30fps | 30fps | |
深度(depth) | 分辨率(Resolution) | 320x240 (16bits) | 512x424 (16bits) |
帧率(fps) | 30fps | 30fps | |
检测范围(Range of Detecton) | 0.8–6.0m | 0.5 –4.5m [1] | |
深度误差(depth Uncertainty) | 2mm-30mm | <0.5% of range | |
角度(Angle) | 水平(Horizontal) | 57o | 70o |
垂直(Vertical) | 43o | 60o |
(注:v1的要求是USB2.0理论传输速率是60MB/s,v2是USB3.0理论传输速率是500MB/s。可以计算一下,以XRGB Color为例,30fps,那么每秒所需传输的数据大小为640 x 480 x 4 x 30约为35M;再加上USHORT格式的Depth Color,30fps,大小为320 x 240 x 2 x 30约为4M。总计约为40MB/s,因为带宽有限,所以在保证画面帧率稳定的情况下,分辨率只能如此,而且基本上必须独占一个USB Controller。再算算v2的情况,Color = 1920 x 1080 x 4 x 30约为237M,Depth = 512 x 424 x 2 x 30约为12M,总计约为250M/s。所以非USB3.0不可,否则传输不了这么大的数据量。显而易见,Color Map是最占带宽的,其实可以通过一些其他格式,比如I420或MJPG来减少数据量,然后通过CPU或GPU来进行解压和回放。)
Reference
[1] A 0.13 μm CMOS System-on-Chip for a 512 × 424Time-of-Flight Image SensorWith Multi-Frequency Photo-Demodulation up to 130 MHz and 2 GS/s ADC