1. 写在前面
在诸如CSDN、知网和Github上,乐于分享结构光研究成果的少之又少,更不用说是完整的结构光3D相机教程。原因或是代码简陋而羞于示人,亦或是闲暇时间较少。希望未来的这系列文章和代码,能够帮助新入该方向的同学们少走弯路,快速进入课题状态。鉴于本人写作能力一般,若有晦涩难懂之处,还望海涵。
2. 摘要
随着人工智能的高速发展,三维重建技术已逐渐成为智能感知中不可或缺的一环。例如,智能机器人焊接作业需要高精度的三维点云数据作为输入,并对点云进行分割以获取期望的轨迹信息;智能驾驶需要通过激光雷达获取到高精度的三维地图,再通过AI进行识别感知。当前的3D相机依据实现原理主要可以分为3类:TOF、被动式、结构光。典型的实例有如下几款相机:
名称 | 相机实物 | 实现原理 | 工作距离/m | 帧率/fps | 精度 | 特点 |
---|---|---|---|---|---|---|
RealSense D435i | ![]() | TOF | 0.3~3 | Up to 90 | <2% at 2m | 硬件简单,成像速率极高,鲁棒性较好,但精度与成本不可兼得 |
ZED 2i | ![]() | 被动式 | 0.3~20 | (2208×1242) @15fps | <1% up to 3m | 精度高,成像较快,硬件较为简单,但在弱纹理区域等信息缺失场合鲁棒性较差 |
OptimScan 9M | ![]() | 结构光 | deal 0.5 | ≤ \le ≤ 3s | 0.015mm at 0.5m | 精度高、鲁棒性较好,成像速率较低且但硬件较为复杂 |
- 1)TOF(时间飞行法)
TOF是飞行时间(Time of Flight)技术的缩写,即传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息,此外再结合传统的相机拍摄,就能将物体的三维轮廓以不同颜色代表不同距离的地形图方式呈现出来,如图1所示1。TOF技术能够以极简单的硬件方式获取深度信息,然而其精度受制于硬件水平,导致精度较高的TOF设备价格极其昂贵,而价格极低的TOF设备精度又较差。
图 1. TOF原理
- 2)被动式(立体视觉)
如图2所示2,被动式立体视觉利用多幅图象来恢复三维信息的方法。普通立体视觉研究的是由两摄像机同时拍摄下的两幅图象,然后通过立体匹配算法恢复图片所欠缺的深度信息。被动式立体视觉具有精度较高、成像视野大和硬件较为简单的优点,然而在弱纹理等场景下表现较差,常见的如单一纹理的白墙,由于图片信息单一,导致左目与右目无法有效计算视差。
图 2. 立体视觉原理
- 3)结构光
如图3所示3,结构光是一组由投影仪和摄像头组成的系统结构。用投影仪投射特定的光信息到物体表面后及背景后,由摄像头采集。根据物体造成的光信号的变化来计算物体的位置和深度等信息,进而复原整个三维空间。其可以看作是被动立体视觉的一种改进,通过将双目立体视觉中的一个相机替换为投影仪,并通过投影编码信息为被测物体添加纹理信息。这种方式大幅度提升了被动式立体视觉在弱纹理区域的成像效果。因此结构光技术具有精度高和鲁棒性强的优点,但由于引入了额外的投影仪器件,其精度较被动式立体视觉有所下降,同时硬件复杂度较高。

图 3. 结构光原理
可见,目前的三种主流三维重建方法皆有优缺点。在三维重建技术中,成像速率、成像精度二者不可兼而得之,舍短取长是面对各种应用场景的有效策略。3D相机的成像速率、成像精度和成像范围与生产速率息息相关,随着当前工业生产自动化水平的提高,上述二点典型特征有了更高的要求,工厂生产过程中,无法容忍由于精度较低而导致的产线停滞事故,亦无法容忍由于速率较低而导致的产线生产效率大幅下降。亟需一种能够同时满足成像速率与成像精度的解决方案,由于结构光在成像精度和成本上具有较好的优势,如果能将其速率提升,则具有较强的应用价值。
3. 系列文章安排
在接下来的系列文章中,博主将逐一对相关的解决方案进行介绍,并通过代码加以实践。系列文章的大致主题安排如下:
- 1:相机与投影仪硬件介绍与搭建
- 2:算法实践
- 3:软件平台搭建
4. 目标
系列文章的最终目标是实现一个能够以高帧率进行三维重建的高精度结构光3D相机,在学习完本系列文章之后(当然是认真学完咯外),你能收获以下内容:
-
- 规范的C/C++代码编写风格
-
- 完整的C/C++项目开发流程
-
- Qt(QML)软件编写
-
- 相关的核心算法
-
- CUDA编程
-
- CMake与项目配置
让我们展示一下最终的效果,编写的软件平台以60多帧速率进行实时三维重建的效果:
该项目位于Github的SLMaster仓库,欢迎follow和fork并给项目献上你的Star⭐。以下是相关资源:
- Github:https://github.com/Practice3DVision
- QQ群:229441078
- 公众号: