HALCON深度相机标定与点云验证实战 - 第1节

1.1 从二维到三维:为什么我们需要深度图与点云

做机器视觉这些年,我接触过不少刚入行的工程师。他们总觉得2D视觉能解决大部分问题——定位、测量、缺陷检测,听起来确实够用了。但有一次,我在一个汽车零部件项目上栽了跟头:一个曲面工件的平面度检测,2D相机怎么拍都拍不准,因为高度信息根本不在图像里。

说白了,2D图像就是一张“投影”。你把三维世界压扁到二维平面上,高度信息自然就丢了。而深度图和点云,就是用来补上这个维度的。

深度图:每个像素都是一个距离值

深度图长得跟普通灰度图很像,但含义完全不同。普通灰度图的像素值代表亮度,深度图的像素值代表距离——通常是相机到物体表面某点的距离。

关键区别:

  • 灰度图:像素值 0-255,表示明暗
  • 深度图:像素值通常是 16 位或 32 位浮点数,表示毫米级距离
  • 深度图不包含颜色信息,只包含几何信息

我在项目里经常把深度图当成“高度地图”来看。你想想看,一个平面工件在深度图上就是一片均匀的灰度,而一个有凹陷的工件,凹陷处颜色明显不同。这种直观性,在缺陷检测中特别有用。

点云:三维空间的离散采样

点云就更好理解了——它就是一堆三维坐标点的集合。每个点包含 (X, Y, Z) 三个值,有些还带颜色或反射强度。

我记得第一次处理点云数据时,打开一看密密麻麻几百万个点,心里直犯怵。后来才明白,点云其实就是对物体表面的离散采样。采样越密,细节越丰富,但计算量也越大。

特性 深度图 点云
数据结构 二维矩阵(行列) 无序点集
存储格式 16/32位浮点图像 XYZ 坐标列表
空间关系 隐含邻域关系 需额外建立索引
处理速度 较快(类图像操作) 较慢(需搜索)
典型应用 高度测量、平面度检测 三维重建、位姿估计

我的经验:能先用深度图解决的问题,就别急着转点云。深度图可以直接用很多成熟的2D图像算法,效率高得多。只有需要三维空间操作时(比如拟合平面、计算法向量),才转成点云处理。

1.2 Halcon 3D 视觉库:它到底能做什么

Halcon 的 3D 模块,我用了快五年。说实话,它是我见过把 2D 和 3D 融合得最自然的视觉库。你不需要在两个软件之间来回倒数据,一个 Halcon 就能搞定从深度图采集到三维重建的全流程。

核心功能模块

  • 深度图采集:支持结构光、双目视觉、ToF 等多种传感器
  • 点云生成:从深度图 + 相机标定参数生成三维点云
  • 点云滤波:去噪、下采样、离群点移除
  • 三维匹配:基于点云或表面模型的物体识别与定位
  • 测量与检测:平面度、圆度、角度、距离等三维尺寸测量
  • 深度图标定:将深度图像素坐标映射到真实世界坐标

我个人最常用的是 xyz_to_world_plane 和 depth_to_point_cloud 这两个算子。前者做深度图标定,后者生成点云,基本是每个3D项目的起点。

注意:Halcon 的 3D 功能需要单独的 license。如果你用的是 Halcon 18 以后的版本,3D 模块已经集成在 Progress 版本里了,但 Still 版本需要额外购买。做项目前先确认好授权,别等到现场才发现跑不了。

1.3 课程项目背景:一个真实的深度图标定验证任务

这个课程的灵感,来自我去年做的一个锂电池极片检测项目。客户要求检测极片涂布边缘的厚度,精度要求 0.02mm。我们用了一台结构光 3D 相机,但问题来了——相机输出的深度图,像素值和真实高度之间不是简单的线性关系。

为什么会这样?因为深度图受相机内参、外参、畸变、温度等多种因素影响。如果不做标定,你测出来的高度值就是“假”的。

项目目标

整个课程围绕一个核心任务展开:对深度图进行精确标定,并验证标定结果的准确性。具体来说:

  1. 采集标准量块的深度图
  2. 建立深度图像素值与真实高度之间的映射关系
  3. 用标定参数校正深度图
  4. 验证标定后的测量精度

你想想看,如果标定做不好,后面所有三维测量都是空中楼阁。我在现场吃过这个亏——标定参数差 0.1%,最终测量结果可能差 0.5mm,对于精密检测来说就是废品。

1.4 本章知识体系总览

下面这张图,是我做课程设计时画的。它把本章的核心概念和它们之间的关系串了起来。建议你保存下来,后面每学完一章都回来对照一下,看看自己走到了哪一步。

3D视觉知识体系框架图 第1章:3D视觉知识体系框架 3D视觉 深度图 点云 像素值=距离 隐含邻域关系 无序点集 XYZ坐标 Halcon 3D视觉库 深度图标定验证实战 核心逻辑:深度图 → 点云 → Halcon处理 → 标定验证

1.5 你需要准备什么

在开始之前,我建议你先确认一下手里的工具。这个课程会用到以下环境:

工具 版本要求 备注
Halcon ≥ 18.11 Progress 需要 3D 模块授权
3D 相机 任意结构光/双目相机 课程提供模拟数据
标定量块 已知高度精度 ±0.001mm 可用标准块替代
开发环境 Windows 10/11 或 Linux Halcon 跨平台支持

没有3D相机怎么办?别担心,我会在课程资料里提供一组真实的深度图数据,你直接用 Halcon 加载就能跟着做。我自己当年学的时候,也是先用公开数据集练手的。