1. 深度图基础与标定概述

各位同学好,我是老张。做机器视觉十几年了,从2D做到3D,踩过的坑比走过的路还多。今天咱们聊聊深度图标定这件事。

说实话,我刚接触3D视觉那会儿,觉得深度图挺神奇的——一张图里居然能存每个点的距离信息。但后来发现,光有深度图远远不够,标定才是真正让数据变准的关键。嗯,咱们一步步来。

1.1 深度图到底是什么?

深度图,说白了就是一张灰度图。每个像素点的灰度值,代表物体到相机之间的距离。你想想看,普通RGB图存的是颜色,深度图存的是距离。

举个例子:

  • 像素值 0 → 距离无限远(或无效点)
  • 像素值 255 → 距离最近(比如 100mm)
  • 中间值 → 按比例映射实际距离

我在项目里遇到过一种情况:客户拿来的深度图,看着挺清楚,但一量尺寸全偏。后来发现是标定参数不对,深度值映射关系完全错了。所以理解深度图的本质,是第一步。

核心概念:深度图 = 距离矩阵。每个像素的灰度值,代表该点到相机参考平面的垂直距离,而不是斜线距离。

1.2 为什么要做深度图标定?

你可能会问:相机买回来不就能用吗?为什么还要标定?

我刚开始也这么想。直到有一次,我用一台标称精度0.1mm的3D相机,测一个标准量块,结果偏差了0.5mm。查了两天,最后发现是相机出厂参数和实际安装环境不匹配。

标定的目的,说白了就三个:

  1. 消除畸变——镜头不是完美的,边缘会有扭曲
  2. 建立映射——把像素坐标和世界坐标对应起来
  3. 统一基准——多台相机、多个视角的数据能拼到一起
标定类型 解决什么问题 我踩过的坑
内参标定 镜头畸变、焦距偏差 用错标定板尺寸,白忙一天
外参标定 相机位置、姿态 安装后没固定好,震动导致偏移
深度映射标定 灰度值→实际距离 环境温度变化,映射曲线漂移

注意:千万不要跳过标定直接做测量。我曾经图省事,结果项目验收时数据全废,返工成本是标定成本的十倍。

1.3 Halcon 标定流程概览

Halcon 的标定流程,我总结为五个步骤。你跟着走一遍,基本不会出大问题。

  1. 准备标定板——Halcon 推荐用圆点标定板,精度高
  2. 采集图像——至少拍 10-15 张不同角度
  3. 提取特征点——用 find_caltab 或 find_marks_and_pose
  4. 计算参数——camera_calibration 算子搞定
  5. 验证精度——重投影误差小于 0.1 像素才算合格

我个人习惯,每次标定完都会保存一份标定日志。这样出了问题,还能回溯是哪一步不对。

小技巧:标定板不要用手拿着拍,容易抖动。用支架固定,或者贴在平板上移动,效果会好很多。

1.4 深度图标定的特殊之处

和2D标定不同,深度图标定多了一个维度——Z轴。这意味着:

  • 不仅要标定XY平面的映射关系
  • 还要标定深度方向的线性度
  • 环境光、物体表面材质都会影响深度值

我记得有一次,标定完发现深度值在边缘区域偏差特别大。排查了半天,原来是标定板表面反光太强,导致深度传感器误判。后来换了哑光材质的标定板,问题就解决了。

所以做深度图标定,选对工具和方法,比盲目追求算法更重要。

深度图标定知识体系 深度图标定 深度图原理 标定目的 Halcon流程 内参标定 外参标定 深度映射标定 标定是3D视觉的基石,跳过这一步,后面全是白费功夫

1.5 本章小结

这一章咱们把深度图标定的基础捋了一遍。记住几个关键点:

  • 深度图存的是距离,不是颜色
  • 标定解决畸变、映射、基准统一三个问题
  • Halcon 标定流程清晰,但细节决定成败
  • 深度图标定比2D多了一个Z轴维度,要格外小心