激光三角 光平面标定-多高度

工业 3D 视觉最高精度、最稳定的标定方案

我会从 0 推导到最终平面方程 ,包含:多高度平台定义 → 几何约束 → 联立方程 → SVD 求解 → 测量公式 → Halcon 算子对应 全程无跳步、无黑箱、纯数学

多高度平台标定 = 利用 N 个已知高度的标准平面,直接建立激光平面约束,不依赖标定板外参 R、t,直接求解

AXc​+BYc​+CZc​+D=0

1、问题分析

1.1 相机坐标系(Cam)

  • 原点:相机光心
  • Xc:向右
  • Yc:向下
  • Zc:光轴向前(深度)

1.2 激光平面方程(待求)

π:AXc​+BYc​+CZc​+D=0(1)

  • (A,B,C):单位法向量
  • D:光心到平面的有向距离
  • 目标:求 (A,B,C,D)

1.3 多高度平台定义

你有 K 个固定高度平台 :Zw​=h1​, h2​, ..., hK​每个高度 h 已知、精确、固定

2. 多高度平台标定的 3 个强约束

对任意激光点 (u,v),必须同时满足

约束 1:点在激光平面上

AXc​+BYc​+CZc​+D=0

约束 2:点在已知高度平台上

Zw​=hk​

约束 3:针孔相机投影

3. 数学推导

1、像素->归一化坐标

2、带入光平面方程

3、高度平台的关键约束

4、联立约束(最关键)

5、构建超定方程组

6、SVD分解

Halcon 使用 SVD 最小二乘 解这个方程:

M=UΣVT

V 的最后一列 作为最优解:β=V(:,end)

即得到:β=A,B,C,DT

最后 Halcon 会自动归一化法向量:A2+B2+C2=1

4、多高度平台的几何意义

  • 平台 1 高度 h1 → 提供一条直线约束
  • 平台 2 高度 h2 → 提供第二条直线约束
  • 平台 3 高度 h3 → 提供第三条直线约束

三条直线确定唯一平面!

这就是为什么 多高度平台 ≥3 个才能标定

算子解释

算子 数学功能
create_calib_data 创建标定模型
set_calib_data_height 设置平台高度 h1​,h2​,h3​
find_laser_line 提取激光线 (u,v)
image_points_to_world_plane 计算 x,y
create_planar_laser_plane SVD 求解 A,B,C,D
get_laser_plane_param 获取平面参数
intersect_ray_with_plane 计算深度 Zc​=−D/(Ax+By+C)

多高度平台标定 最终测量公式

为什么多高度平台精度远高于棋盘格?

  • 不计算外参 R、t少一层误差传递,精度提升 50%~300%
  • 高度 h 是物理真值约束极强
  • 不受姿态影响不会出现标定板倾斜误差
  • SVD 直接求解平面,数值稳定

多高度平台标定 = 用多个已知高度平面 → 构建直线约束 → 拟合激光平面 测量 = 像素射线与平面求交点 核心公式:

Zc​=−D/(Ax+By+C)

5、多高度标定调试步骤

1、准备工作

1. 硬件

  1. 线激光 + 相机 固定好,绝对不能动
  2. 3~5 个已知高度的标准平台 (平面度 < 0.01mm)
    • 例:h1=0mm,h2=10mm,h3=20mm,h4=30mm
  3. 平台表面哑光黑,避免反光
  4. 相机已标定内参 + 畸变

2. 软件(Halcon)

  1. 加载相机内参
  2. 准备好激光提取算法(高斯拟合 / 重心法)

2、步骤

第 1 步:放置第 1 个高度平台(h1)

  • 平台放平稳
  • 激光线完整打在平台上
  • 激光线清晰、不断裂、无反光
  • 拍摄 1 张图

第 2 步:提取激光线(亚像素)

  • 阈值分割
  • 亚像素重心拟合
  • 输出:一行整齐的 (u, v) 亚像素点

第 3 步:记录平台高度 h1

  • 在 Halcon 中设置: plaintext

    复制代码
    set_plane_height (h1)
  • 保存当前所有激光点坐标

第 4 步:更换第 2 个高度平台(h2)

  • 相机、激光绝对不动
  • 只换平台高度
  • 激光线依然清晰完整
  • 提取激光点 → 保存
  • 设置高度 h2

第 5 步:更换第 3 个高度平台(h3)

  • 同上
  • 至少 3 个高度 才能标定
  • 推荐 4~5 个高度 精度最高

第 6 步:Halcon 开始标定

算子:

plaintext

复制代码
create_planar_laser_plane (CameraParam, HeightList, LaserPointsList, LaserPlanePose)

内部数学:

  • 把所有高度的激光点代入
  • 构建超定方程组
  • SVD 求解平面 A,B,C,D
  • 归一化法向量

第 7 步:查看标定结果(现场必查)

plaintext

复制代码
get_laser_plane_param (LaserPlanePose, A, B, C, D)

检查:

  1. 平面残差 < 0.01mm
  2. 法向量单位化 A²+B²+C²=1
  3. 无明显倾斜突变

第 8 步:验证测量(现场必做)

  • 放一个已知高度的标准块
  • 测量高度
  • 误差 < 0.02mm 为合格
  • 误差 > 0.05mm 重新标定
相关推荐
Σίσυφος19008 小时前
激光三角 光平面标定
平面
胡摩西5 天前
立体电子围栏如何实现?毫米级室内定位让安全生产从“平面”走向“空间”
人工智能·安全·平面·室内定位
weixin_397574096 天前
Agent OS治理平台:资源平面、执行平面与控制平面的架构
人工智能·平面·架构
kaikaile19957 天前
平面桁架 Matlab 刚度矩阵计算程序
matlab·平面·矩阵
思茂信息8 天前
CST对一种用于中型无人机 433MHz 通信的宽带共形贴片天线
开发语言·单片机·嵌入式硬件·平面·无人机·cst
IT策士10 天前
第19篇 Kubernetes 架构解读:控制平面与工作节点
平面·架构·kubernetes
大江东去浪淘尽千古风流人物11 天前
【Structure PLP-SLAM】点-线-面三基元融合SLAM:从Plücker坐标到Graph-Cut平面重建的完整技术解析
平面·slam·视觉slam·点线面融合·plücker坐标·平面重建
Upsy-Daisy14 天前
OpenClaw 源码解析(七):Gateway 控制平面与 WebSocket RPC 机制
websocket·平面·gateway
BullSmall19 天前
Promtheus和Alertmanager 之间是通过管理平面还是业务层面IP交互
网络协议·tcp/ip·平面