1. 3D视觉系统概述:从2D到3D的跨越

各位同学,欢迎来到《Halcon3D测量与无序抓取标定精度优化实战》的第一章。

说实话,我刚开始做机器视觉那会儿,用的全是2D相机。检测有无、测量尺寸、识别字符,2D确实能解决不少问题。但后来遇到一个项目——要抓取堆叠在一起的刹车盘,2D直接懵了。为什么?因为没有高度信息,你根本分不清哪个零件在上层,哪个在下层。

这就是我们今天要聊的:从2D到3D的跨越。

1.1 为什么需要3D视觉?

2D视觉说白了就是拍一张平面照片。它只能提供X、Y两个维度的信息。而3D视觉多了一个Z轴——深度信息。

我遇到过不少工程师,觉得3D就是“高级一点的2D”。其实不是。3D能解决2D搞不定的三类场景:

  • 高度测量:比如检测芯片引脚共面性,2D根本看不到高度差
  • 无序抓取:零件乱堆在一起,2D无法区分前后遮挡关系
  • 三维轮廓检测:比如汽车钣金件的曲面间隙,2D只能测平面

核心观点:2D看的是“有没有”,3D看的是“在哪里、有多高、什么姿态”。

1.2 3D相机选型:结构光、双目、ToF

选3D相机,说白了就是选“怎么测深度”。目前主流方案有三种。我一个个说。

1.2.1 结构光

原理很简单:投影仪打出特定条纹或点阵图案,相机拍下图案变形,通过三角法算出深度。

优点:精度高,能达到微米级。我做过一个手机中框平面度检测项目,用的就是结构光,重复精度0.02mm。

缺点:怕环境光。在强光下,投影图案会被淹没。另外,对被测物体表面也有要求——太黑、太亮、透明的都不好搞。

1.2.2 双目立体视觉

模仿人眼。两个相机从不同角度拍同一物体,通过匹配左右图像中的对应点,算出深度。

优点:硬件成本低,两个普通工业相机就行。适合户外、大视野场景。

缺点:计算量大,对纹理要求高。纯色表面(比如白色墙壁)匹配会失败。我曾经在汽车内饰检测项目里踩过这个坑——黑色塑料件表面太光滑,双目根本匹配不上。

1.2.3 ToF(飞行时间法)

发射光脉冲,测量光返回的时间,直接算出距离。

优点:速度快,能到30fps以上。适合动态场景,比如AGV避障。

缺点:精度低,一般在厘米级。分辨率也低,不适合精密测量。

类型 精度 速度 抗环境光 典型应用
结构光 高(μm~mm) 中(1~10fps) 弱 精密测量、3C检测
双目 中(mm级) 中(取决于算法) 强 大视野、户外
ToF 低(cm级) 快(30fps+) 中 避障、人机交互

我的选型建议:做精密测量,优先结构光;做无序抓取,如果零件有纹理,双目性价比高;如果只做避障或粗定位,ToF够用。

1.3 Halcon3D模块简介

Halcon从13版本开始,把3D功能独立成一个模块。说实话,我用了这么多年,Halcon的3D模块在工业界确实算第一梯队。

它主要包含这几块:

  • 3D数据采集:支持结构光、双目、ToF、激光三角等多种传感器
  • 3D数据预处理:滤波、去噪、点云分割、法向量估计
  • 3D测量:平面度、圆度、距离、角度、体积等
  • 3D匹配与定位:基于点云或表面的模板匹配,用于抓取位姿计算
  • 3D标定:相机内参、手眼标定、多相机联合标定

嗯,这里要注意:Halcon的3D模块不是独立的,它和2D模块共享很多算子。比如你处理点云时,用的还是熟悉的read_object_model_3d、visualize_object_model_3d这些。

避坑提醒:我曾经在项目里直接用Halcon的默认参数处理点云,结果滤波过度,把零件边缘特征都滤掉了。后来我习惯先做小范围测试,调好参数再批量处理。

1.4 3D视觉系统知识框架

下面这张图,是我自己总结的3D视觉系统知识框架。你把它记在心里,后面30章的内容,都是围绕这个框架展开的。

3D视觉系统知识框架 3D视觉系统知识框架 3D视觉系统 3D相机选型 3D标定 3D算法处理 结构光 双目 ToF 相机内参标定 手眼标定 点云预处理 3D测量 3D匹配与抓取 应用:精密测量 / 无序抓取 / 缺陷检测 说明: 本课程30章内容,全部围绕“选型→标定→算法→应用”这条主线展开。 每一章都会结合我实际做过的项目案例,帮你避开那些我踩过的坑。

1.5 本章小结

这一章,我们聊了三个核心问题:

  1. 为什么需要3D?——因为2D搞不定高度、遮挡、姿态问题
  2. 3D相机怎么选?——结构光精度高但怕光,双目便宜但挑纹理,ToF快但精度低
  3. Halcon3D能做什么?——从采集、预处理、测量到匹配定位,一条龙

我个人习惯,每开始一个新项目,第一件事就是画上面那张框架图。把选型、标定、算法、应用四个环节理清楚,后面才不会走偏。