一、结构光三维测量概述

大家好,我是老张。在3D视觉这行摸爬滚打了十几年,今天跟大伙聊聊结构光。说实话,这技术看着高大上,其实核心思想挺朴素的——就是给被测物体打上「记号」,然后通过分析这些记号的变化来还原三维形状。

1.1 结构光技术发展史

结构光这个概念,最早可以追溯到上世纪70年代。那时候大家还在用激光点扫描,一个点一个点地测,效率低得让人抓狂。我记得刚入行时,老师傅跟我说:「以前测一个汽车前盖,得花大半天。」

到了90年代,出现了条纹投影技术。这算是个里程碑——从「点」变成了「面」,测量速度一下子提上来了。2000年以后,随着DLP投影仪和CMOS相机的普及,结构光才算真正走进了工业界。

最近十年,结构光的发展更是突飞猛进。从单目到双目,从单频到多频,从静态到动态……说白了,就是越来越快、越来越准、越来越智能。

关键时间节点:

  • 1970s:激光点扫描,精度高但速度慢
  • 1990s:条纹投影技术出现,面扫描成为可能
  • 2000s:DLP+CMOS组合,消费级应用起步
  • 2010s:相移法+格雷码,工业级成熟方案
  • 2020s:深度学习加持,自适应编码成为热点

1.2 基本原理

结构光的原理,说白了就是「三角测量」。你想想看,投影仪把已知图案打到物体上,相机从另一个角度拍下来。物体表面的凹凸,会让图案发生变形。我们通过分析这个变形,就能算出每个点的三维坐标。

这里有个关键问题:怎么把投影仪和相机对应起来?

嗯,这就是编码要做的事。我们给每个投影像素一个「身份证」,相机拍到了,就知道这个像素是从投影仪哪个位置来的。有了对应关系,再结合标定参数,三维坐标就出来了。

我个人习惯:做结构光系统,第一步不是调算法,而是把投影仪和相机的同步做好。同步不好,后面全是白费功夫。我曾经在一个项目中,因为触发延迟没处理好,折腾了整整一周。

基本公式其实不复杂:

Z = (B * f) / (d + Δd)

其中B是基线距离,f是焦距,d是视差,Δd是系统误差补偿项。当然,实际系统里要考虑畸变、色差、噪声等因素,公式会复杂得多。

1.3 典型应用场景

结构光的应用场景,我归纳为三大类:

工业检测

这是结构光最成熟的应用领域。比如汽车钣金件的尺寸检测、PCB焊点的三维测量、手机中框的平面度检测……说白了,就是代替人工卡尺和千分表。

我做过一个项目,给某手机厂商检测中框的平面度。要求精度0.02mm,节拍2秒一个。刚开始用单频相移,效果不理想。后来换成多频外差法,才勉强达标。这里有个坑——环境光干扰。工厂里的灯光五花八门,有的频闪,有的偏色,都会影响测量结果。

避坑指南:我曾经在一条产线上,发现测量结果时好时坏。排查了三天,最后发现是旁边工位的电焊机在作怪。电焊产生的电弧光,虽然肉眼看着不明显,但相机拍下来全是噪声。从那以后,我每次做方案都会先评估现场的光环境。

人脸识别

这个大家应该不陌生。iPhone的Face ID就是典型的结构光方案。它用的是点阵投影器,在人脸上投射约3万个红外点,然后通过计算这些点的深度信息来识别人脸。

说实话,消费级的人脸识别对精度要求没那么高,但对速度和安全性要求极高。我建议做这类应用时,重点关注两点:一是投影模组的稳定性,二是算法的防伪能力。

文物数字化

这个领域很有意思。故宫、敦煌、兵马俑……很多文物都用结构光做过三维扫描。为什么不用激光?因为激光能量高,可能对文物造成损伤。结构光用的是普通白光或近红外光,相对安全。

我记得有一次,帮博物馆扫描一尊青铜器。那件文物表面有复杂的纹饰和锈迹,普通方法根本拍不清楚。后来我们用了多频相移+自适应曝光,才把细节还原出来。嗯,这里要注意,文物扫描不能接触,不能加标记点,对算法要求很高。

下面这张图,是我整理的结构光技术知识体系:

结构光三维测量 发展历史 基本原理 应用场景 点扫描时代 面扫描时代 三角测量 编码解码 工业检测 人脸识别 文物数字化 核心:编码方法决定系统性能

从这张图可以看出来,结构光技术虽然分支很多,但核心始终是编码方法。编码方法决定了系统的精度、速度和鲁棒性。后面几章,我会详细讲解各种编码方案,包括它们的设计思路、优缺点和适用场景。

小结一下:

  • 结构光本质是三角测量,核心在于编码
  • 发展经历了点→线→面三个阶段
  • 工业检测追求精度,人脸识别追求速度,文物数字化追求安全
  • 选型时,先看应用场景,再定编码方案

好了,第一章就聊到这儿。下一章我们深入讲讲编码方法的分类,看看各种方案到底是怎么工作的。


公众号:蓝海资料掘金营,微信deep3321