RGB-D Camera 汇总
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程
1. RGB-D Camera
1)深度测量技术分类

2) 各种方案的比较

3)Three-dimensional vision sensor technology comparisons

1.1 双目摄像头 (Stereo Camera)
1)原理:
- Most stereo methods extract depth values at pixels where either corresponding features or texture information is available.
- Accuracy in stereo systems depends on the setup, where typical parameters are for example baseline, focal length, etc.
- Stereo Matching


2)特点:精度高,但是主要问题是体积较大,难以应用到移动端,如手机和VR头显上。结构光的方案则抗光性差,而且不能在近距离使用。
3)代表:Leap Motion
1.2 结构光 (Structured Light)
- 原理




 
- The accuracy depends on the setup and is depending on parameters likebaseline, focus, light pattern, etc.
2)代表:Kinect V1
1.3 TOF (Time of Flight)
1)原理:
- 测量发射与反射红外(IR)信号的相位延迟(phase-delay)
- 计算每个sensor像素到目标物体的距离

- 相位差(延迟)通过四个电荷值的关系进行计算,这四个相位控制信号之间有90度的相位延迟,c = 300,000,000m/s

- The operating range is between 0.8 meters to 3.5 meters, the spatial resolution is 3mm at 2 meters distance, and the depth resolution is 10mm at 2 meters distance. The FOV is 57×43 (HxV) degrees.
- ToF sensor is composed by a matrix of distance sensors. Despite these functional improvements (compared to conventional imaging sensors) the sensor itself is still a standard CMOS sensor. Therefore imaging and 3-D measurement capabilities can be placed next to system-relevant electronics like analog-digital converters, etc. All “intelligence” of the sensor is included on the chip, meaning that the distance is computed per pixel. Therefore ToF pixels are also called “smart pixels”.
2)主要问题:
- 精确度低、空间分辨率低
- 运动模糊 (motion blur 相机运动或目标运动)
3)特点: TOF虽然目前精度在厘米级,比Leap Motion等毫米级要低,但目前的设备已经比Leap Motion等更小也更便宜,未来可以做到更小,能够植入移动端。
4)代表:Kinect V2
目前主流的有TOF相机厂商有PMD、MESA、Optrima、微软等几家,其中MESA在科研领域使用较大,相机紧凑性好,而PMD是唯一一款能够在户内、户外均能使用的TOF相机,并且能够具有多种探测距离,可用于科研、工业等各种场合。而Optrima、微软的相机主要面向家庭、娱乐应用,价位较低。
1.4 光编码(Light Coding)
光编码(Light Coding)技术(由PrimeSense提出):不同于传统的ToF或者结构光测量技术,Light Coding使用的是连续的照明(而非脉冲),也不需要特制的感光芯片,而只需要普通的CMOS感光芯片,这让方案的成本大大降低。
Light Coding,顾名思义就是用光源照明给需要测量的空间编上码,说到底还是结构光技术。但与传统的结构光方法不同的是,他的光源打出去的并不是一副周期性变化的二维的图像编码,而是一个具有三维纵深的“体编码”。这种光源叫做激光散斑(laser speckle),是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。这些散斑具有高度的随机性,而且会随着距离的不同变换图案。 也就是Kinect说的空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。
当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源的标定。在PrimeSense的专利上,标定的方法是这样的:每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来。假设Natal规定的用户活动空间是距离电视机1米到4米的范围,每隔10cm取一个参考平面,那么标定下来我们就已经保存了30幅散斑图像。需要进行测量的时候,拍摄一副待测场景的散斑图像,将这幅图像和我们保存下来的30幅参考图像依次做互相关运算,这样我们会得到30幅相关度图像,而空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值一层层叠在一起,再经过一些插值,就会得到整个场景的三维形状了。
2. 目前主要RGB-D产品
| 产品 | 延迟 | FPS | DOF | 感应角度 | 使用距离 | 焦距 | 价格 | 技术方案 | 
|---|---|---|---|---|---|---|---|---|
| LeapMotion | 10ms | 120Hz | 26 | 120度 | 70cm以内 | 30cm | 699 | 双目摄像头 | 
| uSens | 16ms | 60Hz | 26 | 120度 | 70cm以内 | 30cm | 699 | 双目摄像头 | 
| 微动 | 10ms | 100Hz | 23 | 120度 | 70cm以内 | 40cm | 699 | 双目摄像头 | 
| Nimble | 25ms | 45Hz | 110度 | 0-1.2m | 无需定焦 | 699 | TOF | |
| ThisVR | 16ms | 60Hz | 26 | 110度 | 0-1.5m | 无需定焦 | 299 | TOF | 
| Kinect One | 30ms | 30Hz | 60度 | 0.5-4m | 无需定焦 | 999 | TOF | |
| Intel(Omek) | 33ms | 30Hz | 90度 | 1-3 | 1m外 | 1099 | 结构光 | |
| 奥比中光 | 33ms | 30Hz | 1-3 | 0.5m外 | 999 | 结构光 | 
ToF: SoftKinetics, PMD, MSFT
SL(Structured Light): PS, Intel, Mantis, Morvidius
Stereo: Intel
3. Kinect V1 VS Kinect V2
3.1 Sensor配置比较
| Kinect V1 | Kinect V2 | ||
|---|---|---|---|
| 颜色(Color) | 分辨率(Resolution) | 640×480 | 1920×1080 | 
| fps | 30fps | 30fps | |
| 深度(Depth) | 分辨率(Resolution) | 320×240(upsample:640x480) | 512×424 | 
| fps | 30fps | 30fps | |
| 人物数量(Player) | 6人 | 6人 | |
| 人物姿势(Skeleton) | 2人 | 6人 | |
| 関節(Joint) | 20関節/人 | 25関節/人 | |
| 手的開閉状態(Hand State) | △(Developer Toolkit) | ○(SDK) | |
| 检测範囲(Range of Detection) | 0.8~4.0m | 0.5~4.5m | |
| 角度(Angle)(Depth) | 水平(Horizontal) | 57度 | 70度 | 
| 垂直(Vertical) | 43度 | 60度 | |
| (Tilt Motor) | ○ | ×(手動) | |
| 複数的App | ×(単一的App) | ○ | 
(注: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来进行解压和回放。)
3.2 Kinect V1的关节图

3.3 Kinect V2的关节图
增加了头(Neck),指尖(HAND_TIP_LEFT,HAND_TIP_RIGHT),大拇指(THUMB_LEFT,THUMB_RIGHT)5个Joint。

3.4 应用架构

