3、相机标定原理:标定的目的与意义、标定板设计、内参与外参、畸变模型

相机标定,说白了就是给相机做「体检」。

我刚开始做视觉测量那会儿,总觉得相机买回来就能直接用。结果呢?测出来的尺寸偏差大得离谱。后来才明白——每台相机都有自己的「脾气」,标定就是摸清它的脾气。

3.1 标定的目的与意义

为什么要标定?核心就两件事:

  • 建立映射关系:把像素坐标和真实世界坐标对应起来
  • 消除畸变误差:修正镜头带来的图像变形

我在项目中遇到过最典型的案例:一个精密装配项目,要求定位精度0.1mm。没标定前,边缘检测误差直接飙到0.5mm。标定完成后,误差降到0.05mm以内。你看,标定前后差了整整一个数量级。

标定的核心意义:

  • 将像素单位转换为物理单位(mm、cm等)
  • 消除镜头畸变带来的测量误差
  • 确定相机在空间中的位置和姿态
  • 为多相机系统提供统一坐标系

3.2 标定板设计

标定板是标定的「尺子」。我见过有人用A4纸打印棋盘格,结果边缘翘曲,标定出来全是错的。

常见的标定板类型:

  • 棋盘格标定板:黑白相间,角点检测容易,最常用
  • 圆点标定板:圆心定位精度高,适合高精度场景
  • ChArUco标定板:带编码信息,支持部分遮挡

设计标定板时,有几个坑要注意:

避坑指南:

  • 棋盘格边长精度要控制在0.01mm以内,别用普通打印机
  • 格子数量建议7×9或9×11,太少标定不稳定
  • 标定板要平整,贴在玻璃或铝板上最好
  • 我曾经用亚克力板做底板,结果热胀冷缩严重,标定结果随温度漂移

3.3 内参与外参

相机参数分两类:内参和外参。我习惯这么理解——内参是相机的「先天条件」,外参是相机的「后天位置」。

内参矩阵

内参描述的是相机内部的光学特性:

内参矩阵 K = [fx  0  cx]
              [0  fy  cy]
              [0   0   1]

其中:
fx, fy: 焦距(像素单位)
cx, cy: 主点坐标(光轴与成像平面交点)

fx和fy通常不相等,因为传感器像素不一定是正方形。我遇到过一台工业相机,fx和fy差了0.3%,看似很小,但在大视场下误差会累积。

外参矩阵

外参描述的是相机在世界坐标系中的位置和朝向:

外参 = [R | t]
R: 旋转矩阵(3×3)
t: 平移向量(3×1)

旋转矩阵有3个自由度,可以用欧拉角或四元数表示。我个人习惯用罗德里格斯公式,计算起来更稳定。

小技巧:标定完记得检查重投影误差。如果大于0.5像素,说明标定质量有问题。我一般要求重投影误差在0.1像素以内。

3.4 畸变模型

镜头不是完美的,总会带来畸变。常见的畸变有两种:

径向畸变

光线通过透镜边缘时弯曲更严重,导致图像边缘变形:

  • 桶形畸变:图像向外凸出,广角镜头常见
  • 枕形畸变:图像向内凹陷,长焦镜头常见

切向畸变

镜头和成像平面不平行导致的变形:

  • 表现为图像倾斜或拉伸
  • 通常由镜头安装误差引起

畸变模型用多项式来描述:

径向畸变:Δr = k1*r³ + k2*r⁵ + k3*r⁷
切向畸变:Δx = 2*p1*x*y + p2*(r² + 2*x²)
          Δy = p1*(r² + 2*y²) + 2*p2*x*y

其中:
k1, k2, k3: 径向畸变系数
p1, p2: 切向畸变系数
r: 像素到主点的距离

嗯,这里要注意——k3通常只在鱼眼镜头中使用。普通镜头用k1和k2就够了,加k3反而会过拟合。

我曾经踩过的坑:标定完发现畸变校正后图像边缘出现奇怪的波浪。排查了半天,原来是标定板只拍了中心区域,边缘畸变没采到。后来我要求标定板必须覆盖视场的四个角和中心,问题就解决了。

3.5 标定流程与知识体系

整个标定流程,我画了张图帮你理清思路:

相机标定知识体系 标定目的与意义 标定板设计 内参与外参 畸变模型 棋盘格 / 圆点 / ChArUco 精度要求:0.01mm 内参:fx, fy, cx, cy 外参:旋转R + 平移t 径向畸变:k1, k2, k3 切向畸变:p1, p2 标定结果:内参 + 外参 + 畸变系数

标定完成后,你会得到一组参数:内参矩阵、外参矩阵、畸变系数。这些参数就是相机在三维世界中的「身份证」。

实用建议:

  • 标定板至少拍15-20张不同角度和位置的图片
  • 标定后一定要做验证——用标定板测一个已知尺寸,看误差
  • 如果换了镜头或调整了光圈,必须重新标定
  • 我习惯每次项目开始前都重新标定一次,哪怕相机没动过

标定这件事,看起来简单,做起来全是细节。但只要你把内参、外参、畸变这三个概念吃透了,后面的测量工作就会顺风顺水。


公众号:蓝海资料掘金营,微信deep3321