2. Halcon三维测量基础

三维视觉测量技术的工程落地,首先取决于对数据获取原理与数据组织形式的深刻理解。Halcon作为工业机器视觉领域的专业算法库,其三维测量模块(SurfaceModel、XYZAttrib、Disparity等)并不直接产生原始三维数据,而是对上游传感器输出的点云、深度图或视差图进行高效处理与精密测量。本章将系统梳理结构光、激光三角、立体视觉三种主流3D数据获取方式的技术本质,并深入解析点云、深度图、三角网格三种模型表示的数据结构与Halcon中的对应算子,为后续精度验证方法建立坚实的知识基座。

Halcon三维测量数据获取与模型表示总览 结构光 (Structured Light) • 投影编码光栅/散斑 • 三角测量原理 • 高精度、全场测量 • Halcon: calibrate_cameras reconstruct_surface_stereo • 适用:PCB、连接器、精密件 激光三角 (Laser Triangulation) • 激光线/点投射至物体 • 相机斜视采集光条 • 光条中心提取 • Halcon: calibrate_photometric lines_gauss, contour_to_world_plane • 适用:焊缝、轮廓、在线检测 立体视觉 (Stereo Vision) • 双/多相机同步采集 • 特征匹配/极线约束 • 视差图→深度图 • Halcon: binocular_disparity disparity_to_point_cloud • 适用:大视野、远距离、室外 3D模型表示 点云 XYZ + 属性 深度图 Z值图像 三角网格 顶点 + 面片拓扑 Halcon 3D算子库

上图清晰展示了三种获取方式与三种模型表示之间的映射关系。在实际工程中,结构光与立体视觉通常直接生成深度图或视差图,再通过相机标定参数转换为点云;激光三角则直接输出轮廓点云或深度图。Halcon通过统一的3D对象模型(Object3D)封装这些数据,使得后续的测量、配准、比较操作与具体传感器解耦。

2.1 结构光三维测量:编码光场与相位解算

核心原理

结构光技术通过投影仪向被测物体表面投射已知编码图案(正弦光栅、格雷码、散斑等),相机从另一角度拍摄被物体表面调制后的变形图案。由于投影仪与相机之间存在固定的几何基线,物体表面的高度变化会引起图案相位或位置的偏移,通过解算相位偏移量并结合三角测量原理,即可恢复物体表面的三维坐标。Halcon中,结构光测量通常借助多视图立体匹配(Multi-View Stereo)或专用结构光标定流程实现。

判断方法与操作流程

  1. 系统标定:使用Halcon的calibrate_cameras算子对投影仪和相机进行联合标定,获取内外参数与畸变系数。标定板通常采用非对称圆点或棋盘格,需在不同高度和姿态下采集10-15组图像。
  2. 光栅投影与采集:依次投射N步相移光栅(通常3步或4步),同步触发相机采集。Halcon通过grab_image系列算子控制采集时序。
  3. 相位解算:利用多幅相移图像计算包裹相位(phase_shift),再通过时间相位展开(多频外差法)获得绝对相位。
  4. 三维重建:将绝对相位映射到投影仪像素坐标,结合标定参数,通过reconstruct_surface_stereo或xyz_to_object_model_3d生成点云。
关键参数典型值对精度影响
光栅频率16/32/64周期频率越高,相位解算越精确,但噪声敏感度增加
相移步数3/4/8步步数越多,抗噪性越好,但采集时间增加
投影仪-相机基线100-300mm基线越长,高度分辨率越高,但遮挡越严重
标定重投影误差<0.1像素直接决定三维坐标的绝对精度

实战场景:精密PCB焊点高度测量

某电子制造企业需对BGA封装芯片的焊点高度进行100%在线检测,要求高度测量重复性≤±5μm。采用DLP投影仪(分辨率1280×720)与500万像素工业相机组成结构光系统,基线距离150mm,工作距离200mm。使用Halcon标定流程后,重投影误差为0.08像素。投影4步相移光栅(频率分别为16、32、64周期),采集时间约120ms。通过多频外差法展开相位,重建焊点表面点云。实际测试表明,对标准陶瓷量块(高度1.000mm)的测量误差为+3.2μm,重复性(3σ)为4.1μm,满足产线要求。但发现当焊点表面反光强烈时,局部相位解算出现跳变,通过增加偏振片和调整投影亮度后,缺陷率从2.3%降至0.4%。

常见误区:结构光系统对环境光敏感,尤其是阳光或强红外干扰。Halcon中可通过set_framegrabber_param设置相机曝光时间与增益,但更有效的方式是使用窄带滤光片匹配投影仪波长。此外,投影仪散焦会导致相位误差,需在标定时将投影仪光圈调至最佳焦深。

2.2 激光三角测量:光条中心提取与轮廓重建

核心原理

激光三角法利用激光器发射一条或多条激光线(或点)照射物体表面,激光在物体表面发生漫反射,相机以一定角度(通常30°-60°)拍摄激光光条。物体高度变化导致光条在相机图像中的位置发生横向位移,位移量与高度变化呈几何三角关系。Halcon中,核心步骤是精确提取光条中心线(亚像素精度),再通过标定矩阵将像素坐标转换为世界坐标。

操作流程与关键算子

* 光条图像采集
grab_image (LaserImage, AcqHandle)
* 提取光条中心(亚像素)
lines_gauss (LaserImage, Lines, 1.5, 5, 'dark', 'true')
* 将光条点转换为世界坐标(需预先标定)
contour_to_world_plane (Lines, WorldContours, CameraParam, Pose, 'ml')
* 生成轮廓点云
get_contour_xld (WorldContours, X, Y)
* 创建3D对象模型
gen_object_model_3d_from_points (X, Y, Z, ObjectModel3D)

光条中心提取的精度直接决定测量分辨率。Halcon的lines_gauss算子基于高斯核的尺度空间方法,能够抑制噪声并实现亚像素定位。对于强反光表面(如金属拉丝),可结合threshold预处理或使用多线激光融合。

案例拆解:锂电池极片涂布厚度在线测量

锂电池极片涂布厚度一致性直接影响电池容量与安全。某厂商采用激光三角传感器(点激光,采样频率10kHz)配合振镜扫描,对宽度500mm的极片进行横向扫描。Halcon负责光条中心提取与坐标转换。初始测量数据显示厚度波动达±8μm,超出工艺规格(±5μm)。分析发现,极片边缘存在毛刺导致激光散射,光条中心提取偏移。解决方案:在lines_gauss前增加形态学开运算去除毛刺干扰,并将高斯尺度参数从1.5调整至2.0。优化后,测量波动降至±3μm,且与离线接触式千分尺对比,偏差≤2μm。该案例表明,激光三角测量的精度不仅取决于硬件,更依赖于图像处理算法的鲁棒性。

经验提醒:激光三角测量中,相机与激光器的夹角越大,高度分辨率越高,但阴影效应也越严重。对于深孔或陡峭斜面,建议采用双相机对称布局(左右各一个),Halcon支持多相机联合标定与数据融合。

2.3 立体视觉:视差计算与深度恢复

核心原理

立体视觉模拟人眼双目感知,通过两个(或多个)相机从不同视角拍摄同一场景,利用图像匹配算法找到对应点,计算视差(disparity),再根据三角测量原理恢复深度。Halcon提供完整的双目立体视觉流程,包括极线校正、视差计算、深度图生成与点云重建。该方法无需主动光源,适合室外或大视野场景,但对纹理贫乏区域(如白色墙面)匹配困难。

判断方法与参数选择

  • 极线校正:使用calibrate_cameras和gen_binocular_rectification_map生成校正映射,使左右图像极线水平对齐,将二维搜索降为一维。
  • 视差范围设定:根据工作距离与基线长度估算最小/最大视差。Halcon的binocular_disparity算子支持设置MinDisparity和MaxDisparity,范围过大会增加计算量并引入误匹配。
  • 匹配代价与聚合:选择SAD、NCC或Census变换作为匹配代价,Halcon默认使用改进的Semi-Global Matching (SGM)算法,在精度与速度间取得平衡。
  • 后处理:通过disparity_to_point_cloud将视差图转换为点云,并使用中值滤波或一致性检查剔除误匹配点。
参数名称推荐范围说明
相机基线50-500mm基线越大,深度分辨率越高,但遮挡区域增大
视差搜索范围10-200像素需根据实际场景标定后确定
SGM惩罚项P1/P2P1=8, P2=32P2越大,深度图越平滑,但细节丢失
纹理阈值5-20低于阈值的区域视为弱纹理,不参与匹配

实战场景:大型铸件毛坯尺寸检测

某铸造厂需对尺寸约1m×0.8m的发动机缸体毛坯进行快速三维扫描,精度要求±0.5mm。采用两台1200万像素工业相机,基线400mm,工作距离1.5m。Halcon标定后重投影误差0.12像素。由于铸件表面为灰色喷砂状态,纹理适中,SGM算法匹配效果良好。但铸件内腔区域光照不足,视差图出现空洞。解决方案:增加辅助LED光源,并采用多视角扫描(4个视角)后通过object_model_3d_to_mesh进行拼接。最终测量结果与三坐标测量机对比,最大偏差0.38mm,满足出厂检验要求。该案例验证了立体视觉在中大尺寸、中等精度场景下的工程可行性。

风险提示:立体视觉对光照变化敏感,同一场景在不同光照下可能产生不同匹配结果。在Halcon中,建议使用preprocess_image进行直方图均衡化或对比度归一化,以增强匹配鲁棒性。此外,对于反光表面(如未加工金属),可喷涂显影剂或使用偏振光源。

2.4 3D模型表示:点云、深度图与三角网格

核心原理与数据结构

Halcon通过统一的ObjectModel3D句柄管理三维数据,但底层数据组织方式不同,直接影响处理效率与算法选择。

  • 点云(Point Cloud):无序的XYZ坐标集合,可附加法向量、颜色、灰度等属性。Halcon中通过gen_object_model_3d_from_points创建,适合散乱点处理(如ICP配准、表面拟合)。
  • 深度图(Depth Map):规则网格存储的Z值图像,每个像素对应一个空间点的深度。深度图与2D图像共享坐标系,可直接使用图像处理算子(如滤波、边缘提取)加速处理。Halcon通过xyz_to_depth_map或disparity_to_depth生成。
  • 三角网格(Triangular Mesh):由顶点和面片(三角形)构成,包含拓扑连接关系。Halcon通过object_model_3d_to_mesh或triangulate_object_model_3d生成,适合表面测量、体积计算和3D打印。

数据转换与选择策略

* 点云转深度图(需指定相机参数)
xyz_to_depth_map (ObjectModel3D, CameraParam, Width, Height, DepthMap)
* 深度图转点云
depth_map_to_xyz (DepthMap, CameraParam, X, Y, Z)
* 点云三角化
triangulate_object_model_3d (ObjectModel3D, 'greedy', MeshModel)
* 网格简化
reduce_object_model_3d (MeshModel, 'preserve_structure', 0.5, ReducedMesh)
表示方式内存占用处理速度适用场景
点云高(每点12-24字节)慢(需邻域搜索)配准、自由曲面测量
深度图低(每像素2-4字节)快(图像算子直接处理)实时检测、表面缺陷分析
三角网格中(顶点+索引)中(拓扑遍历)体积计算、CAD比较

案例拆解:汽车冲压件回弹检测中的模型选择

某汽车零部件厂需检测冲压件回弹量,精度要求±0.1mm。初始方案采用结构光获取点云(约200万点),直接与CAD数模进行ICP配准。但点云数据量大,配准耗时达8秒,无法满足节拍(5秒/件)。优化方案:先将点云转换为深度图(分辨率1024×768),利用Halcon的xyz_to_depth_map将Z值映射为灰度,然后通过surface_normals计算法向量,最后使用compare_variation_model与标准深度图进行逐像素比较。处理时间降至1.2秒,且回弹量检测精度达到±0.08mm。该案例说明,在满足精度要求的前提下,深度图的数据结构更适合高速在线检测。

总结复盘:三种获取方式各有优劣——结构光精度高但环境敏感,激光三角速度快但覆盖范围小,立体视觉灵活但依赖纹理。三种模型表示各有侧重——点云灵活但计算量大,深度图高效但丢失拓扑,三角网格适合表面分析。在Halcon中,应根据测量任务的具体需求(精度、速度、范围、表面特性)选择最合适的获取方式与数据表示,必要时可在不同表示间灵活转换。