30 三维成像概论
前面二十九章的全部内容,都建立在同一个前提之上:一幅二维图像。灰度图能告诉你”哪里暗、哪里亮”,经过本书前七个部分的武装,你已经能把这点信息用到极致——定位到 0.02 像素、量出 5 微米的宽度、抓出 0.1% 面积的缺陷。但有一类问题,二维图像从原理上就无能为力:相机成像是一次投影(projection),三维世界沿光轴方向压扁成平面的那一瞬间,高度信息就永久丢失了。一颗虚焊的锡球和一颗饱满的锡球,从正上方看可能是两个几乎一样的亮斑;手机中框两段金属的接缝平不平齐(段差),俯视图里完全是同一条线。
工业界对三维的需求清单很具体:连接器引脚的共面度(coplanarity)——几十根引脚的脚尖是否落在同一平面内,差 0.05 mm 就插不进焊盘;装配件的段差(step height)与间隙(gap);点胶与锡膏的体积(volume)——胶量多少直接决定粘接强度,而体积是面积乘高度,2D 只能给前一半;划痕与压伤的深度——同样一道划痕,深 2 μm 可以出货、深 20 μm 必须报废,灰度图里两者可能一样黑。这些判定的共同点是:被测量就是高度本身,任何二维方法都只能间接猜测,猜错的代价由产线买单。
于是本书进入第三个维度。Part VIII 共七章:本章是地图,之后六章每章一种三维成像技术——双目立体、结构光、激光三角、光度立体、相位偏折、聚焦法。六种技术没有优劣之分,只有适配之分:同一个测高需求,换一种表面材质,最优方案可能完全不同。本章的任务就是把”怎么选”讲清楚:先统一三维数据的语言,再给每种技术一个物理直觉,最后落到一张选型表和几条真实的决策路径上。
需要说明:本章是理论章(技术选型概论),没有独立的配套实验工程与插图;每种技术的原理实验、真实数据与实现代码,都在各自的专章中给出。本章的核心交付物是 小节 30.3 的选型对照表。
30.1 三维数据的形态
讨论技术之前,先统一”三维数据长什么样”。工业三维视觉中有三种主要表示,它们承载的信息量与适用的算法各不相同。
深度图(depth map),也称距离图像(range image),是最贴近 2D 思维的表示:仍然是一幅规则网格的”图像”,只是每个像素存的不再是灰度,而是该位置的高度或距离值(通常为 32 位浮点,单位 mm)。前面所有章节的工具——滤波、阈值、Blob、卡尺——几乎可以原封不动地搬过来用,只是”灰度差”变成了”高度差”。这种表示也叫 2.5D:每个 \((x, y)\) 位置只有一个高度值,表达的是”从某个视角看到的表面”,而非完整的三维实体——杯子的内壁、零件的侧面与底面,在单视角深度图里统统不存在。
点云(point cloud)是一组无序的三维坐标点 \(\{(x_i, y_i, z_i)\}\),可附带法向、颜色等属性。它不依赖规则网格,能表达任意视角、任意拓扑的表面,多视角数据合并后可以逼近真 3D;代价是失去了”邻居在隔壁像素”这一隐含结构,找近邻要靠空间索引(kd 树),算法成本整体上升。网格(mesh)在点云之上补回连接关系——以三角面片描述表面拓扑,是 CAD 比对与可视化的通用语言。
三者可以互相转换:深度图按标定参数逐像素反投影即得有序点云;点云经表面重建得到网格;网格沿某方向重采样又回到深度图。工业测量的主流路径是”传感器输出深度图或有序点云 → 必要时转无序点云做配准与比对”。本章之后的六个技术专章,输出基本都是深度图;点云的数据结构与运算从 章节 37 开始系统展开。
“2.5D 还是真 3D”是选型时的第一个澄清问题。多数在线检测(共面度、段差、体积)单视角 2.5D 就够;需要完整轮廓(如逆向工程、复杂曲面比对)才需要多视角拼接,成本与节拍都要另算。把需求错估成真 3D,预算可能直接翻几倍。
30.2 六种技术的物理原理
六种技术看似五花八门,底层逻辑只有一句话:高度本身不可直接成像,但可以用已知的几何或光学约束,把高度变换成某个可测量的图像量——视差、相位、位移、明暗、斜率或清晰度——再反解回去。逐一过一遍这个”图像量”是什么。
双目立体(stereo vision,章节 31):图像量是视差(disparity)。两台相机隔开一段基线(baseline)同时拍摄,同一空间点在左右图像中的列坐标之差与深度成反比——近处的点”跳”得多,远处的点”跳”得少,和人眼判断远近是同一个机制。它是被动(passive)技术,不投射任何光,结构最简单;但”同一点在两图中对应”要靠图像内容自身匹配,依赖表面纹理——光滑均匀的表面(白墙、抛光金属)找不到对应点,深度图上就是成片的空洞。
结构光(structured light,章节 32):图像量是相位(phase)。既然被动匹配怕没纹理,那就主动给表面”印”上纹理——投影仪向物体投射正弦条纹,相机从另一角度观察:表面有高度起伏,条纹就发生扭曲,扭曲量编码在条纹的相位里。相移法可在每个像素独立解出相位,空间分辨率高、面阵单次成像,是漫反射表面全场测量的主力。
激光三角(laser triangulation,章节 33):图像量是激光线的像素位移。一束线激光以已知角度照射表面,相机从另一角度看这条亮线:表面越高,亮线在图像中的位置偏移越大——三角形的两个角和一条边已知,高度随之确定。一次成像只得一条高度剖面(profile),完整表面靠工件或传感器扫描运动逐条拼接,因此天然适合传送带与机械臂场景,是工业在线 3D 检测装机量最大的方案。
光度立体(photometric stereo,章节 34):图像量是明暗(shading)。相机与工件都不动,从多个已知方向轮流打光拍多幅图:朝向光源的面亮、背向的面暗,多幅明暗联立可解出每个像素的表面法向(surface normal)。注意它直接测的是法向(斜率)而非高度,绝对高度要靠积分恢复、误差会累积;但它对微观起伏极其敏感——划痕、压伤、字符浮雕这类”高度变化微小但斜率变化剧烈”的特征,在法向图里纤毫毕现。
相位偏折术(phase measuring deflectometry,PMD,章节 35):图像量是反射条纹的相位畸变,对应表面斜率(slope)。前面几种技术都默认表面漫反射,遇到镜面(手机玻璃、抛光金属、车漆)集体失效——投上去的光按反射定律弹走,相机看到的是环境的镜像而非表面本身。PMD 反其道而用之:让屏幕显示的条纹经表面镜面反射进入相机,表面有一丁点斜率变化,反射像中的条纹就明显畸变——镜面越”完美”,测量反而越灵敏。它是镜面与类镜面表面的专用方案。
聚焦法与共聚焦(focus variation / confocal,章节 36):图像量是清晰度(sharpness)。镜头景深有限,物面只有落在对焦面上才清晰。沿光轴方向逐层扫描采集图像栈,对每个像素找出”最清晰”出现在第几层,该层的 Z 位置就是该点高度。共聚焦用针孔在物理上拒绝离焦光,轴向分辨率可达亚微米。这一族方案速度慢(要扫整个高度范围)、视场小,但精度是六者之冠,主攻显微尺度的粗糙度与微结构测量。
按”图像量”归类还能预判各技术的失效模式:靠视差的怕无纹理,靠相位的怕反光与互反射,靠位移的怕遮挡,靠明暗的怕非朗伯表面,靠斜率的只认镜面,靠清晰度的怕透明与速度。选型的第一轮排除,往往就是拿失效模式对照工件表面。
30.3 选型决策
选型的核心维度有四个。表面类型:漫反射、镜面还是透明?这是最硬的约束,直接排除掉一半候选。测量范围与分辨率:视场是毫米级还是米级?高度分辨率要微米还是亚微米?两者大体成正比——视场越大,单点精度越粗。速度与运动形态:单帧成像、需要工件扫描、还是需要原地多帧?决定了能否跟上节拍、能否测运动中的工件。抗环境光:主动投光的信噪比有保证,被动技术在车间杂光下要格外小心。
六种技术对照如下(数值为典型工业产品的量级,具体型号有出入):
| 维度 | 双目立体 | 结构光 | 激光三角 | 光度立体 | PMD | 聚焦/共聚焦 |
|---|---|---|---|---|---|---|
| 测得的图像量 | 视差 | 相位 | 线位移 | 明暗→法向 | 反射相位→斜率 | 清晰度 |
| 主动/被动 | 被动 | 主动 | 主动 | 主动 | 主动 | 主动 |
| 漫反射表面 | 要纹理 | 优 | 优 | 优 | 不可 | 优 |
| 镜面表面 | 不可 | 差 | 差 | 差 | 专长 | 可 |
| 透明表面 | 不可 | 差 | 差 | 不可 | 可(表面) | 优(共聚焦) |
| 典型视场 | 0.1–10 m | 0.05–1 m | 0.01–1 m(宽)× 扫描长 | 同 2D 视场 | 0.05–0.5 m | 0.1–5 mm |
| 高度分辨率 | mm 级 | 5–50 μm | 1–20 μm | 法向灵敏/高度差 | 斜率 μrad 级 | 0.01–1 μm |
| 成像形态 | 单帧 | 多帧(投几幅条纹) | 逐线扫描 | 多帧(换光源) | 多帧(屏显条纹) | 沿 Z 扫描 |
| 能测运动工件 | 能 | 难 | 天然适合 | 难 | 难 | 不能 |
| 抗环境光 | 弱 | 中 | 强(窄带滤光) | 中 | 中 | 强 |
| 典型应用 | 物流体积、机器人引导 | 锡膏/点胶、外观全检 | 段差、毛刺、焊缝 | 划痕、浮雕字符 | 玻璃/车漆面形 | 粗糙度、微结构 |
拿几个典型场景把表格走一遍。手机中框段差(金属高反光,0.01 mm 量级,在线节拍):表面排除双目与结构光,候选 PMD 与激光三角——前者测斜率对段差这类台阶突变更敏锐,后者配合遮光与角度优化也常能落地,二者经常同台打样竞争。PCB 锡膏检测(漫反射膏体,要面积+高度+体积,节拍紧):结构光面阵单次覆盖整板,是 SPI 设备的主流方案;激光三角扫描式在高精度场合分庭抗礼。电池极片毛刺(卷材连续走带,毛刺高度几十微米):工件本身在运动,逐线扫描的激光三角是天然答案。抛光金属划痕(镜面、微米深、判深度而非判有无):PMD 看斜率突变,光度立体看法向突变,二选一或组合,其余技术基本无从下手。
可以看到,选型不是”哪个精度最高选哪个”,而是表面类型先砍一刀、精度与视场再砍一刀、节拍与运动形态砍第三刀,剩下的候选去打样。
30.4 共同的工程要素
六种技术各有专章,但有几件事是所有三维系统共通的,先在这里立好框架。
标定(calibration)。每种技术测到的原始量都是图像量——视差、相位、像素位移——换算成以毫米计的物理高度,靠的都是标定:双目要标两相机的内外参,激光三角要标光平面与相机的位姿,结构光要标投影仪,PMD 要标屏幕。章节 5 建立的那套相机模型与标定方法论,是整个 Part VIII 的地基;可以说,三维系统的精度上限在标定时就已写定。
遮挡与缺数据。凡是投射方向与观察方向不同的技术(三角法家族全体),都存在”投得到但看不到、看得到但投不到”的死角,深度图上表现为空洞;陡壁、深孔、反光飞点也都会制造无效数据。空洞要不要补、怎么补(保守地标记为无效,还是按邻域插值),是影响后续测量可信度的工程决策,系统的处理方法留给 章节 38。单视角不够时的多视角拼接——把不同视角的点云统一到同一坐标系——由 章节 39 的配准算法承担。
精度的语言。章节 20 区分过重复性(repeatability)与准确度(accuracy):前者是同一工件反复测量的散布,后者是测量均值偏离真值的程度。这套方法论原样平移到三维——评估一台 3D 传感器,用标准量块或台阶规反复测:重复性对应高度噪声(常以 Z 向 σ 表示),准确度靠溯源标准件验证。厂商标称的”分辨率”往往是理想条件下的最小可分辨量,与你的工件在你的现场能达到的重复性是两回事——这正是下面案例里”打样验证”的全部理由。
工业案例:一个段差测量的选型之旅
某结构件厂要求对装配后的金属中框做 0.02 mm 段差判定,集成商的选型走了三轮。第一轮按成本选了双目立体:方案最便宜,可中框表面均匀无纹理,立体匹配大面积失败,深度图在关键接缝处恰好是空洞——直接出局。第二轮换结构光:漫反射区域数据漂亮,但接缝附近恰是高反光的倒角,相位在反光处噪声染成片,0.02 mm 的判定线淹没在 0.05 mm 的噪声里。第三轮试激光三角:选短波长窄带激光配滤光片,调整入射角避开镜面反射主瓣,再加遮光罩隔离车间顶灯,台阶规实测 Z 向重复性 3 μm,余量充分,方案落地。复盘时项目经理的总结是:选型不是拿参数表打分,而是按”表面 → 精度 → 节拍”逐一排除;以及,打样验证永远先于采购——三轮里前两轮的参数表都”满足要求”。
30.5 小结
- 2D 图像是三维世界的投影,高度信息原理性丢失;共面度、段差、体积、划痕深度这类”被测量就是高度”的任务必须用三维成像。
- 三维数据有深度图(range image,2.5D,每像素一个高度)、点云、网格三种形态,可互相转换;多数在线检测单视角 2.5D 即够,真 3D 需多视角拼接、成本另计。
- 六种技术共享同一逻辑:用已知的几何/光学约束把高度变成可测的图像量——视差(双目)、相位(结构光)、线位移(激光三角)、明暗→法向(光度立体)、反射相位→斜率(PMD)、清晰度(聚焦法);图像量也决定了各自的失效模式。
- 选型按”表面类型 → 精度与视场 → 节拍与运动形态”三刀排除(见本节选型对照表):漫反射全场看结构光、在线扫描看激光三角、镜面看 PMD、微观形貌看光度立体、显微精度看共聚焦、大场景低成本看双目;候选方案必须打样验证后再采购。
- 所有三维系统共通三件事:标定决定精度上限(章节 5)、遮挡与缺数据需要明确的处理策略(章节 38、章节 39)、精度评定沿用重复性/准确度的语言(章节 20)。
接下来六章按表中顺序逐一展开:章节 31 讲对极几何与立体匹配,章节 32 讲相移与解包裹,章节 33 讲光平面标定与剖面拼接,章节 34 讲法向求解与积分,章节 35 讲镜面条纹反射,章节 36 讲清晰度评价与聚焦堆栈。三维成像的系统性论述可进一步参考 Steger 等人著作 (Steger, Ulrich, 和 Wiedemann 2018) 的 3D 成像与重建章节;Szeliski 的计算机视觉教材 (Szeliski 2022) 则从多视图几何与深度估计的角度,给出了被动与主动三维方法的统一视角。