别再混淆了!一文讲透Halcon中激光三角测量的‘视差图’与双目视觉的差异

张开发
2026/4/21 21:08:43 15 分钟阅读

分享文章

别再混淆了!一文讲透Halcon中激光三角测量的‘视差图’与双目视觉的差异
激光三角测量与双目视觉中的视差图本质差异与Halcon实战解析在工业3D视觉领域激光三角测量和双目立体视觉是两种广泛应用的技术它们都能生成被称为视差图的数据输出。然而这两种技术产生的视差图在物理意义、数据结构和应用方式上存在根本性差异。本文将深入剖析这两种视差图的本质区别并重点解读Halcon中Sheet-of-Light模块的视差数据特性。1. 技术原理的本质分野激光三角测量和双目立体视觉虽然都涉及三维信息获取但其工作原理存在根本差异激光三角测量系统的核心组件通常包括线激光发生器发射特定波长的激光平面工业相机以一定角度通常30°-60°拍摄激光条纹运动平台实现被测物体的扫描移动当激光平面投射到物体表面时表面高度变化会导致激光条纹在相机成像平面发生位移。这个位移量与高度变化呈三角关系通过标定参数可计算出精确的三维坐标。双目立体视觉系统则采用双相机模拟人眼视差两个同步相机从不同视角拍摄同一场景通过特征匹配计算对应点的水平位移视差根据基线距离和焦距换算深度信息下表对比两种技术的关键特性特性激光三角测量双目立体视觉工作原理主动式三角测距被动式立体匹配数据维度单次获取一条轮廓线单次获取整个视场深度测量精度亚微米级毫米级适用场景高反光/复杂表面纹理丰富场景视差图物理意义激光线中心的亚像素行坐标左右图像素匹配的灰度差异2. Halcon中的视差图解析Halcon的Sheet-of-Light模块通过get_sheet_of_light_result算子可输出多种数据类型其中disparity结果常引起使用者困惑* 典型使用流程 create_sheet_of_light_model(ProfileRegion, [min_gray], [80], SheetOfLightHandle) measure_profile_sheet_of_light(ProfileImage, SheetOfLightHandle, Profile, GrayValues) get_sheet_of_light_result(Disparity, SheetOfLightHandle, disparity)这里的Disparity图像存储的是激光条纹中心的亚像素行坐标而非传统意义上的灰度差异。具体表现为每个像素值表示对应列中激光线中心的精确行位置值为实数类型可实现亚像素级测量精度未标定时仅表示相对位移需配合image_points_to_world_plane转换为物理坐标* 坐标转换关键代码 get_region_points(DisparityDomain, Rows, Columns) get_grayval(Disparity, Rows, Columns, Disparities) image_points_to_world_plane(CameraParameters, LocalCameraPose, Disparities, ColumnsColumn1, 1.0, X, Y)3. 双目视觉视差图的本质传统双目视觉的视差图反映的是左右图像素匹配的困难程度每个像素值表示最佳匹配的搜索代价通常为整数类型精度受限于图像分辨率需要额外的后处理转换为深度图Halcon中双目视差的计算流程示例* 双目视差计算典型流程 create_stereo_model(least_squares, 0.3, 50, StereoModelID) find_stereo_correspondence(ImageLeft, ImageRight, Disparity, Score, StereoModelID)这种视差图与激光三角测量的视差数据在以下方面存在差异数据内涵匹配代价 vs 几何位置精度等级像素级 vs 亚像素级应用方式需代价聚合优化 vs 直接几何转换4. 三维坐标计算的实现路径激光三角测量通过视差数据计算三维坐标的过程涉及多个坐标系的转换图像坐标系获取激光线的亚像素位置相机坐标系通过内参矩阵消除镜头畸变世界坐标系结合光平面位姿计算3D坐标Halcon中的完整转换链* 完整的三维重建流程 create_sheet_of_light_model(ProfileRegion, [min_gray,num_profiles], [70,290], ModelID) set_sheet_of_light_param(ModelID, lightplane_pose, LightPlanePose) set_sheet_of_light_param(ModelID, movement_pose, MovementPose) apply_sheet_of_light_calibration(Disparity, ModelID) get_sheet_of_light_result(X, ModelID, x) get_sheet_of_light_result(Y, ModelID, y) get_sheet_of_light_result(Z, ModelID, z) xyz_to_object_model_3d(X, Y, Z, ObjectModel3D)关键参数说明lightplane_pose定义激光平面在世界坐标系中的位姿movement_pose描述物体运动引起的坐标变换校准模式需选择xyz输出物理坐标而非像素位移5. 工程实践中的常见误区在实际项目应用中开发者常遇到以下典型问题误区1直接使用未标定的视差数据注意未经标定的视差图仅包含行坐标偏移量不能直接反映物理尺寸。必须通过apply_sheet_of_light_calibration应用标定参数。误区2混淆视差图的数值范围激光三角视差通常为100.0~300.0浮点数表示行坐标双目视觉视差通常为0~255整数表示匹配代价误区3错误理解坐标系关系激光三角测量中的视差数据基于图像坐标系最终三维点云默认输出在世界坐标系运动平台引入的坐标变换需通过movement_pose补偿优化建议标定阶段使用高精度靶标确保相机参数准确光平面标定时采集多个位姿的数据点以提高拟合精度实时应用中监控get_sheet_of_light_result返回的score值过滤低质量测量点通过深入理解两种视差图的本质差异开发者可以更准确地选择适合特定应用场景的技术方案并避免在数据处理流程中产生概念混淆。激光三角测量在工业检测领域的高精度优势与双目视觉在大范围场景重建的灵活性共同构成了现代3D视觉技术的丰富生态。

更多文章