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

工业 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 重新标定
相关推荐
老歌老听老掉牙7 天前
圆柱端面四平面交线及其在yoz面投影的几何解析与 Python 实现
开发语言·python·平面
无言听风雨丶8 天前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
Solange__11 天前
AI世界模型、3D场景生成和游戏引擎怎么选?按5类任务比较交互、物理与导出
开发语言·人工智能·游戏·平面·3d·自然语言处理·游戏引擎
国科安芯11 天前
商业光学遥感载荷焦平面供电链的低噪声稳压器研究综述——以国科安芯ASP7A84AS型3A低压差线性稳压器为器件级参照
大数据·网络·嵌入式硬件·平面·卫星·商业航天·抗辐射
希和202712 天前
考研高数综合题|微分方程 + 平面面积 + 旋转体体积
考研·平面
Evand J13 天前
【MATLAB例程】平面下,5基站对待定位点的定位。基于距离辅助下的AOA。完整代码下载链接
开发语言·matlab·平面·定位·导航·测距·aoa
网络小江18 天前
组网第21课:初登交换机——管理平面三板斧
平面·ssh·console·华为交换机
天人合一peng20 天前
Catia数控加工平面铣削
平面
Suprman21 天前
从 B/S 到 Electron:平面排版套料系统桌面版开发实战
javascript·平面·electron·排序算法
qq_2842740525 天前
间歇运动机构与机械设计概论:棘轮与槽轮机构运动系数、零件失效与强度刚度准则、结构工艺性清根及标准件(含考点)
笔记·学习·平面·自动化·制造