一、简介
随着机器视觉,自动驾驶等颠覆性的技术逐步发展,采用 3D 相机进行物体识别,行为识别,场景 建模的相关应用越来越多,可以说深度相机就是终端和机器人的眼睛,那么什么是深度相机呢,跟之前的普通相机(2D)想比较,又有哪些差别? 深度相机又称之为3D相机,顾名思义,就是通过该相机能检测出拍摄空间的景深距离,这也是与普通摄像头最大的区别。
目前市面上常有的深度相机方案有以下三种:
(1) 结构光(Structured-light),代表公司有奥比中光,苹果(Prime Sense),微软 Kinect-1,英特尔 RealSense, Mantis Vision 等;
(2) 双目视觉(Stereo),代表公司 Leap Motion, ZED, 大疆;
(3) 光飞行时间法(TOF),代表公司微软 Kinect-2,PMD,SoftKinect, 联想 Phab。
本文介绍的便是英特尔公司推出的一款消费级深度相机 -- Intel RealSense D435i,它的主要构成如下图所示。它主要包含一个RGB相机、两个红外相机以及一个红外发射器,此外还有一个IMU单元(这也就是D435i和D435的区别,i就表示imu)。
- 最高 1280×720 双目深度分辨率
- 最高 1920×1080 RGB 分辨率
- 最高 90 FPS 深度视频流。深度流与普通 RGB 视频流类似,只不过每个像素点的值不再是 RGB 或灰度值,而是物体相对于相机的距离。
- 只能对相同帧率的 RGB 与深度视频流做同步设置
- 双目 baseline 为 50 mm
- 深度探测范围 0.2 m ~ 10 m
- 深度坐标系以左侧相机为中心(上图中 centerline of 1/4-20 是指三脚架螺丝空的中心)
- 内含一个 6 自由度的 IMU,对应刚体在三维空间中 6 种运动方式:前后、左右、上下的平移,以及绕刚体三个轴的旋转 —— 绕前后方向轴旋转 roll, 绕左右方向轴旋转 pitch, 绕上下方向轴旋转 yaw
二、测距原理
Interl RealSence D4×× 系列,包括 D435i,都是采用经典的双目视觉的方式测量深度。尽管具有红外投射器,但并不是采用红外反射测距。它的作用仅仅是投射不可见的固定的红外纹理样式,提高在纹理不明显的环境中(例如白墙)的深度计算精度,辅助双目视觉测距。左右两个相机将图像数据送入内置的深度处理器,在其中基于双目测距的原理计算每个像素的深度值。
下图显示的是红外投射在白纸上的纹理模式:
三、相关参数:
双目测距相机的参数
Parameter | Camera Sensor Properties |
Image Sensor | OmniVision OV9282 |
Active Pixels | 1280 × 800 |
Sensor Aspect Ratio | 8 :5 |
Format | 10-bit RAW |
F Number | f / 2.0 |
Focal Length | 1.93 mm |
Filter Type | IR Cut - D420, None - D430, D435/D435i |
Focus | Fixed |
Shutter Type | Global Shutter |
Signal Interface | MIPI CSI -2, 2× Lanes |
Horizontal Field of View | 91.2° |
Vertical Field of View | 65.5° |
Diagonal Field of View | 100.6° |
Baseline | 50 mm |
Depth FOV HD | H:87±3,V:58±1,D:95±3 |
Depth FOV VGA | H:75±3,V:62±1,D:89±3 |
Distortion | <=1.5% |
红外投射器参数
Parameter | Properties |
Projector | Infrared |
Pattern Type | Static |
Illuminating Component | Vertical-cavity surface-emitting laser(VCSEL) + optics |
Laser Controller | PWM |
Optical Power | 360 mW average, 4.25 W peak |
Laser Wavelength | 850 nm ± 10 nm nominal @20° |
Laser Compliance | Class 1, IEC 60825-1:2007 Edition 2, IEC 60825-1:2014 Edition 3 |
Horizontal Field of Projection | 90°± 3° |
Vertical Field of Projection | 63°±3° |
Diagonal Field of Projection | 99°±3° |
RGB 相机参数
Parameter | Camera Sensor Properties |
Image Sensor | OmniVision OV2740 |
Color Image Signal Processor | Discrete |
Active Pixels | 1920 × 1080 |
Sensor Aspect Ratio | 16:9 |
Format | 10-bit RAW RGB |
F Number | f/2.0 |
Focal Length | 1.88mm |
Filter Type | IR Cut Filter |
Focus | Fixed |
Shutter Type | Rolling Shutter |
Signal Interface | MIPI CSI-2, 1 Lane |
Horizontal Field of View | 69.4° |
Vertical Field of View | 42.5° |
Diagonal Field of View | 77° |
Distortion | <=1.5% |
RGB图像分辨率与支持的帧率
Resolution | Frame Rate(FPS) |
1920 × 1080 | 6,15,30 |
1280 × 720 | 6,15,30 |
960 × 540 | 6,15,30,60 |
848 × 480 | 6,15,30,60 |
640 × 480 | 6,15,30,60 |
640 × 360 | 6,15,30,60 |
424 × 240 | 6,15,30,60 |
320 × 240 | 6,30,60 |
320 × 180 | 6,30,60 |
四、RealSense SDK安装以及使用
1、下载安装包
可以直接下载zip格式解压到home目录下,也可以通过终端命令下载
注意:因为最新的SDK可能有bug,我选择下载以前的版本,通过tags标签选择历史版本,我下载的是v2.50.0版本。
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense
2.更新依赖库
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
3.安装依赖库
安装一些编译所需的依赖,不同版本系统安装依赖不同,以ubuntu18.04为例需要安装的是:
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
4.运行脚本
进入到librealsense文件夹目录下,运行Intel Realsense 的许可脚本
./scripts/setup_udev_rules.sh
5.下载并编译内核模块
这一步会非常慢,我笔记本1W+,都运行了大概一个小时。
./scripts/patch-realsense-ubuntu-lts.sh
6.编译SDK2.0
cd librealsense
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install
make这一步也会非常慢,大概需要半个小时
7.测试
测试SDK2.0是否成功安装,使用usb3.0接口连上相机,进入到build/examples/capture文件夹中,执行
cd examples/capture
./rs-capture
或者直接在终端运行:
realsense-viewer
参考链接
基于深度相机 RealSense D435i 的 ORB SLAM 2 - 简书