2. 3D相机选型与成像原理:结构光、双目视觉、ToF原理对比、分辨率与精度权衡、选型实战建议

做3D视觉项目,第一步不是写代码,而是选相机。选错了,后面所有算法都是白搭。我见过太多团队,算法调得天花乱坠,最后发现相机本身精度就不够,白忙一场。

今天咱们就把三种主流3D相机的原理掰开揉碎,讲清楚它们各自适合干什么,不适合干什么。最后我会给出一套我自己用了多年的选型流程。

2.1 三种主流3D成像原理

目前工业3D测量领域,主流方案就三种:结构光、双目视觉、ToF。它们的底层逻辑完全不同。

对比维度 结构光 双目视觉 ToF(飞行时间)
基本原理 投射已知图案,通过图案变形计算深度 模拟人眼,通过两幅图像视差计算深度 发射光脉冲,测量光往返时间
核心硬件 投影仪 + 相机 两个相机(双目) 激光器 + 传感器
精度水平 0.01mm ~ 0.1mm(最高) 0.1mm ~ 1mm(中等) 1mm ~ 10mm(较低)
测量速度 慢(需多次曝光) 中等(取决于图像处理) 快(实时帧率)
环境光敏感度 高(怕强光) 高(依赖纹理) 低(抗干扰强)
典型应用 精密测量、3C检测 机器人抓取、SLAM 避障、大范围测距

2.1.1 结构光:精度之王,但娇气

结构光的原理,说白了就是「主动投射特征」。相机拍到的图案变形了,变形量就是深度信息。我最早接触结构光是在2016年做手机中框平面度检测,当时用的就是DLP投影加工业相机。

优点很明显:

  • 精度极高,微米级不是梦
  • 对被测物表面纹理没要求,光滑表面也能测

缺点也很要命:

  • 怕环境光。太阳光一照,投影图案直接看不见
  • 测量速度慢。多频外差需要拍多张图,不适合产线高速节拍
  • 对反光表面敏感。镜面、高反光工件容易产生飞点
避坑指南: 我曾经在汽车漆面检测项目上吃过亏。结构光打在清漆表面,反射光太强,点云全是空洞。后来被迫加了偏振片,才勉强能用。如果你测高反光件,慎选结构光。

2.1.2 双目视觉:最像人眼,但依赖纹理

双目视觉的原理,就是模拟人的两只眼睛。左右相机看到同一个点,位置有偏差(视差),通过三角测量算出深度。这个方法最自然,成本也最低——两个普通相机就行。

但问题来了:如果被测物是一面白墙,左右相机看到的图像一模一样,视差算不出来。这就是双目视觉的致命伤——依赖纹理。

我做过一个项目,用双目视觉测纸箱堆叠高度。纸箱表面是牛皮纸色,纹理很弱,匹配点太少,点云稀疏得没法用。后来被迫在纸箱上贴了随机花纹贴纸,才解决问题。你想想看,产线上贴贴纸,这方案能推广吗?

我的建议: 双目视觉最适合有自然纹理的场景,比如PCB板、铸件表面、布料。如果被测物是纯色、光滑、无纹理,别用双目,换结构光或ToF。

2.1.3 ToF:速度最快,精度最差

ToF的原理最简单:发射光,等它反射回来,算时间差。光速是常数,时间差就是距离。所以ToF天生就是干「快活」的料——实时帧率,30fps甚至更高。

但精度嘛……说实话,工业测量场景里,ToF的精度基本不够看。消费级的ToF传感器(比如手机上的)精度在厘米级,工业级的也只能做到毫米级。而且ToF有「多路径干扰」的问题——光线在物体之间来回反射,测距会偏大。

我记得有一次,客户想用ToF测传送带上包裹的尺寸。包裹之间距离很近,ToF的光线在包裹缝隙里乱弹,测出来的尺寸忽大忽小。最后我们换成了结构光方案,虽然慢了点,但数据靠谱。

一句话总结: 要精度选结构光,要速度选ToF,要低成本且纹理丰富选双目。没有万能的方案,只有合适的方案。

2.2 分辨率与精度的权衡

很多新手容易混淆两个概念:分辨率和精度。它们不是一回事。

  • 分辨率: 点云中相邻点的间距。分辨率越高,点越密。
  • 精度: 测量值与真实值的偏差。精度越高,数据越准。

举个例子:一台相机分辨率是1920×1080,但镜头畸变严重,标定没做好,测出来的数据可能偏差0.5mm。这就是「高分辨率、低精度」。反过来,分辨率低但标定精准,精度反而可能更高。

选型时,你需要权衡三个因素:

  1. 视场大小(FOV): 视场越大,单点分辨率越低。想看清小细节,就得缩小视场。
  2. 测量距离: 距离越远,精度越差。这是所有光学测量系统的物理规律。
  3. 点云密度: 点云越密,计算越慢。产线上节拍紧张时,别盲目追求高分辨率。
应用场景 推荐分辨率 推荐精度 说明
手机中框平面度 0.01mm ±0.005mm 必须结构光,高精度
汽车钣金间隙 0.05mm ±0.02mm 结构光或双目均可
物流包裹体积 1mm ±2mm ToF或双目都行
AGV避障 10mm ±20mm ToF最合适
个人经验: 选型时,精度指标要留余量。客户要求±0.02mm,你最好选标称精度±0.01mm的相机。因为实际使用中,温度变化、振动、标定误差都会吃掉一部分精度。

2.3 选型实战建议

说了这么多理论,最后给一套我自己的选型流程。这套流程我用过不下20个项目,基本没翻过车。

第一步:明确需求

  • 被测物是什么材质?反光吗?有纹理吗?
  • 测量精度要求多少?
  • 产线节拍多少秒一个?
  • 工作距离多远?

第二步:排除法选原理

  • 精度要求<0.05mm → 结构光
  • 精度要求0.05~0.5mm,有纹理 → 双目
  • 精度要求>1mm,需要实时 → ToF

第三步:看环境

  • 产线有强光?避开结构光,考虑双目或ToF
  • 被测物会动?考虑ToF或高速结构光
  • 空间有限?注意相机尺寸和安装角度

第四步:做验证

别光看参数表。借样机回来,拿实际工件测一下。我习惯用Halcon自带的3D标定板做精度验证,跑一遍标定流程,看看点云偏差。这一步省不了。

核心原则: 选型不是选最好的,是选最合适的。结构光再好,用错了地方也是白搭。ToF精度再低,用在避障上就是神器。
3D相机选型决策流程 明确测量需求 精度要求 多少? <0.05mm 结构光 0.05~0.5mm 双目视觉 >1mm ToF 环境条件 是否恶劣? 强光/振动 优先ToF 室内可控 结构光/双目 样机验证 → 确认选型 别忘了留精度余量 实际测工件再决定

这张图是我自己画选型决策流程时常用的。从需求出发,按精度分叉,再考虑环境,最后一定要做样机验证。别偷懒,这一步能帮你省下后面几个月的返工时间。