第三节:相机标定原理——标定板设计、张正友法与单应性矩阵

各位同学,今天我们聊一个绕不开的话题——相机标定

说实话,我入行头两年,一直觉得标定就是个“走流程”的事。直到有一次在产线上,一个视觉引导项目死活对不准,折腾了三天,最后发现是标定板打印尺寸输错了。嗯,从那以后,我再也不敢小看这一步。

相机标定,说白了就是给相机“配眼镜”。让相机知道:
它看到的像素坐标,到底对应真实世界的哪个位置。


一、标定板设计——棋盘格 vs 圆点阵

标定板是标定的“尺子”。没有一把好尺子,你量什么都不准。

1. 棋盘格标定板

这是最经典、最常用的方案。黑白格子交替排列,角点清晰,检测算法成熟。

  • 优点:角点检测精度高,亚像素提取稳定
  • 缺点:需要完整视野,边缘格子容易被裁切
  • 我个人的习惯:棋盘格尺寸选 7×9 或 9×11,格子边长 10mm~30mm 之间
小技巧:打印棋盘格时,一定要用激光打印机,喷墨的容易洇墨,角点会偏移。我吃过这个亏。

2. 圆点阵标定板

圆点阵在工业场景中也很常见,尤其是大视场或远距离标定。

  • 优点:圆心检测不受透视畸变影响,适合大角度标定
  • 缺点:需要精确知道圆心坐标,对光照敏感
  • 避坑指南:我曾经用圆点阵标定一个广角镜头,结果发现边缘圆点变成了椭圆,圆心偏移严重。后来加了畸变校正预处理才解决。
对比项 棋盘格 圆点阵
检测精度 高(亚像素角点) 中(圆心拟合)
抗畸变能力 一般 较好
实现难度
适用场景 常规视觉引导 大视场、大角度

二、张正友标定法原理

张正友教授在1998年提出的这个方法,可以说是视觉标定领域的里程碑。为什么?因为它让标定变得“接地气”了。

以前的标定方法需要高精度的三维标定块,又贵又难用。张正友的方法只需要一个平面棋盘格,拍几张不同角度的照片就行。

核心思想:利用平面标定板上的已知点,建立从世界坐标到像素坐标的映射关系,然后通过多张照片的约束,解出相机内参和外参。

关键步骤

  1. 拍摄 10~20 张不同姿态的标定板图像
  2. 提取每张图像的角点坐标
  3. 利用单应性矩阵求解内参初值
  4. 考虑畸变参数,进行非线性优化

你想想看,一个平面标定板,每张照片其实只能提供一个“单应性矩阵”的约束。但多张照片组合起来,就能把内参和外参解耦出来。这就是张正友法的精妙之处。


三、单应性矩阵求解

单应性矩阵(Homography Matrix),是连接标定板平面和图像平面的桥梁。

它的数学形式是 3×3 的矩阵,有 8 个自由度(最后一个元素归一化为 1)。

// 单应性矩阵的数学表达
// s * [u, v, 1]^T = H * [X, Y, 1]^T

// 其中:
// (u, v) 是图像像素坐标
// (X, Y) 是标定板上的世界坐标
// s 是尺度因子
// H 是 3×3 的单应性矩阵

求解方法

  • 至少需要 4 对匹配点(因为每个点提供两个方程,8 个未知数需要 8 个方程)
  • 实际中我会用 20~30 对点,用最小二乘法求解
  • 常用算法:DLT(直接线性变换)+ RANSAC 剔除误匹配
注意:单应性矩阵假设标定板是平面。如果你的标定板有翘曲或不平整,求解出来的 H 矩阵会有误差。我曾经遇到一个项目,标定板贴在墙上,墙表面有细微的凹凸,结果标定误差一直下不去。后来换了刚性背板才解决。

四、知识体系结构图

下面这张图,是我自己整理的相机标定知识脉络。你看一遍,心里就有谱了。

相机标定知识体系 标定板设计 张正友标定法 单应性矩阵 棋盘格 圆点阵 内参求解 外参求解 DLT算法 RANSAC 输出:相机内参 + 畸变系数 + 外参 应用:视觉引导定位、手眼标定、三维重建

五、实战建议

讲完理论,我给大家几个实在的建议:

  1. 标定板不要太小:至少占视野的 1/3 以上,否则角点检测不稳定
  2. 照片数量要够:我一般拍 15~20 张,覆盖视野的各个区域
  3. 姿态要多样:倾斜、旋转、平移都要有,不要只拍正面的
  4. 光照要均匀:避免反光和阴影,否则角点提取会飘

一句话总结:标定板是基础,张正友法是核心,单应性矩阵是工具。三者缺一不可。

好了,这一节的内容就到这里。下一节我们聊一聊手眼标定的具体实现,到时候我会分享一个我踩过的坑——标定顺序搞反了,结果机器人差点撞了相机。


专注资料整理