Home / 机器人经典基础 / 张正友标定:一块平板怎样提供三维相机的信息

042|张正友标定:一块平板怎样提供三维相机的信息

总览 · 目录 · 上一篇 · 下一篇

论文:Zhengyou Zhang,A Flexible New Technique for Camera Calibration,2000,IEEE TPAMI 22(11):1330–1334,十一月期。DOI · 期刊原文 · 作者出版页。方法此前以 MSR-TR-98-71 技术报告公开,后来修订的长报告与这篇五页期刊文在实验组织上不同。

先接住前作的问题

Tsai标定建立米制投影联系,采集装置和操作仍影响门槛。Zhang用已知平板的不同朝向降低采集负担;五点法可使用这些内参,手眼标定另解传感器装配关系。

五个前置概念

五个前置概念是:内参描述相机自身成像;外参描述当前位姿;单应性映射两个平面坐标;旋转正交性提供欧氏度量约束;重投影误差把预测点与实际像素作比较。

一、问题设定:不测平板运动时怎样由多姿态图像恢复相机内参

相机把三维世界压成二维图像。要让机器人从图像中计算角度、距离或位姿,需要知道相机内参,例如焦距尺度、主点和镜头畸变。传统标定常依赖精确制作的三维参照物,普通使用者搭建成本较高。

问题定义:内参共用,外参每张不同

针孔相机模型为

sm~=K[R∣t]M~,K=[fxγcx0fycy001].s\widetilde m=K[R\mid t]\widetilde M,\qquad K=\begin{bmatrix}f_x&\gamma&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}.

MM 是世界点,mm 是图像点,波浪号表示齐次坐标,ss 是投影比例。fx,fyf_x,f_y 是图像两轴焦距尺度,γ\gamma 是斜切,(cx,cy)(c_x,c_y) 是主点;R,tR,t 是某张图中平板相对相机的位姿。

多张图共享同一个 KK,但各自拥有 Ri,tiR_i,t_i。这要求拍摄期间焦距、缩放和相关成像配置保持一致。平板坐标的尺度还决定平移估计的长度单位。若把格子边长输入大了一倍,重投影仍可能很好,但恢复的平移尺度会随之错误。

机器人中的用途包括视觉伺服、立体重建、位姿估计和视觉里程计。不过内参标定不等于相机到机械臂的手眼标定,也不等于相机与 IMU 的时间同步。它解决的是成像模型中的一组参数。

二、先求单应性,再用旋转正交性约束内参

方法第一步:平面把投影变成单应性

将标定板设为 Z=0Z=0,则

s[uv1]=K[r1 r2 t][XY1]=H[XY1].s\begin{bmatrix}u\\v\\1\end{bmatrix}=K[r_1\ r_2\ t]\begin{bmatrix}X\\Y\\1\end{bmatrix}=H\begin{bmatrix}X\\Y\\1\end{bmatrix}.

每张图的 HH 是一个只确定到比例的 3×33\times3 单应矩阵。只要有足够且非退化的对应点,就能从已知平板坐标和检测到的图像坐标估计它。角点多可以提高抗噪能力,但一张图里再多的角点也不会让平面突然提供所有三维方向的独立信息。

原文附录说明先用线性方程获得初值,再按图像误差改进单应性。因为方程同时含常数、像素坐标、世界坐标及其乘积,数值尺度不同,先做坐标归一化有助于条件数。把原始大坐标直接塞入 SVD,可能在模型正确时仍产生数值问题。

方法第二步:旋转正交性给出内参约束

定义

B=K−TK−1.B=K^{-T}K^{-1}.

若 H=[h1 h2 h3]H=[h_1\ h_2\ h_3],由 r1Tr2=0r_1^Tr_2=0 和 r1Tr1=r2Tr2r_1^Tr_1=r_2^Tr_2 得到

h1TBh2=0,h1TBh1−h2TBh2=0.h_1^TBh_2=0,\qquad h_1^TBh_1-h_2^TBh_2=0.

虽然式子对 hh 是二次的,但 hh 已从图像估计出来,对对称矩阵 BB 的六个独立元素是线性的。把多张图的两条约束叠起来,得到 Vb=0Vb=0,用最小奇异值对应的右奇异向量求 bb,再恢复 KK。

为什么摘要说至少两种姿态,而一般实现又常说至少三张?因为未知数和假设不同。一般五内参模型通常需要至少三组独立单应性约束;原文 §3.1 明确说明两张图时可加入零斜切约束。无论计数够不够,若各姿态退化或近乎重复,方程仍可能缺秩或病态。

得到 KK 后,可按比例恢复 r1,r2,tr_1,r_2,t,再令 r3=r1×r2r_3=r_1\times r_2。带噪声时这些列不完全构成旋转矩阵,还需投影到合法旋转集合,例如用 SVD 处理。正交化不是装饰,它避免把测量噪声形成的剪切错误当成物体旋转。

方法第三步:从代数误差转向重投影误差

线性初始化最小化代数方程残差,但其数值没有直接的像素几何含义。最终优化目标是

min⁡K,d,{Ri,ti}∑i,j∥mij−π(K,d,Ri,ti,Mj)∥2,\min_{K,d,\{R_i,t_i\}}\sum_{i,j}\|m_{ij}-\pi(K,d,R_i,t_i,M_j)\|^2,

其中 dd 表示畸变参数,π\pi 是投影函数。独立同方差高斯图像噪声下,平方重投影误差对应最大似然估计;仅有“独立同分布”并不足以对任意噪声分布推出最小二乘。

径向畸变的教学模型可表示为归一化坐标乘以 1+k1r2+k2r41+k_1r^2+k_2r^4。离中心越远,径向项的影响越明显。期刊正文将畸变纳入最终优化,细节指向技术报告;这里用该形式解释参数可观测性,不把长报告所有推导都当成本页正文原式。

残差空间分布是理解结果的检查方式,不是原文统一接口。仅报告一个很小的总残差,可能看不出误差都集中在画面边缘。

多拍几张正面图,为何不等于多获得几条独立约束

将 BB 的六个独立元素写成 bb,每张单应性只提供两条齐次线性式。未知整体尺度后仍有五个自由度,因此一般五内参情形需要约束矩阵 VV 达到秩5;图像数量只是必要计数,独立倾角才决定实际秩。重复拍同一姿态一百次可以平均像素噪声,却不会把同一行空间变成新约束。

教学例若所有平板均正对相机、只改变未知距离,图像尺度为 f/Zif/Z_i。把焦距和各距离同时乘2,投影尺度不变,这直接暴露一种焦距—深度歧义。倾斜板面使不同方向的透视缩短加入信息;覆盖图像边缘又有助于辨认径向畸变,两者解决的病态不同。

原文摘要和动机要求不同朝向、板上米制几何已知而运动无需已知。它与Tsai标定是实验装置与估计流程的平行路线;与手眼标定是模块组合。小重投影误差只说明所选图像拟合好,还需新姿态验证,不能消除板不平或焦距变化造成的系统偏差。

旋转正交约束先提供代数初始化,重投影优化才联合细化参数。下面核对平板尺寸、姿态和图像覆盖,再读远近图案为什么给出不同畸变信息。

三、联合细化重投影误差,检查图案姿态与覆盖

输入:已知平面点坐标,多张不同倾角的图像
逐图检测并正确匹配特征点
归一化点坐标,估计各图单应矩阵 H
为每个 H 建立正交和等长约束
叠成 Vb=0,以 SVD 求内参矩阵初值
由内参和 H 恢复逐图外参,投影到合法旋转
联合优化内参、各图外参和径向畸变
输出参数、逐图重投影残差及其空间分布

教学例子与五个前置概念

自构例子,未运行。 同样拍十张平板图,方案一只让板在图像中心前后移动,方案二改变倾角并覆盖中心与边缘。第一种的角点很多,但平面方向几乎重复,畸变信号也弱;第二种让约束提供更不同的信息。有效实验设计不是把数量加大,而是让未知参数的影响能够被分开。

四、读远近图案对照,分开焦距和畸变信息

Table 1:分别比较近距离图像组 A、远距离组 B 与合并组 A+B 的参数,关注图案覆盖改变后的差异
原论文结果图/表摘引:Zhengyou Zhang(2000),Table 1,PDF 第 5 页;核对原文。原版权保留。

读图:分别比较近距离图像组 A、远距离组 B 与合并组 A+B 的参数,关注图案覆盖改变后的差异。低重投影残差并不能单独保证所有内参和畸变参数都准确。

实验:用远近图案检查可观测性

远近两组标定图与表 1 属于这份五页期刊版;长技术报告的额外图像和模拟参数不能混作同一张表。

项目 2000 年期刊版设置
相机 PULNiX CCD,6 mm 镜头,640×480 图像
标定板 9×9 方格及九个用于对应识别的特殊点,A4 纸,600 DPI 激光打印,贴在纸板上
图像 共十张;近距离 Set A 五张,远距离 Set B 五张
估计对照 分别使用 A、B、A+B 标定,比较所得参数
求解 小型 SVD 初始化,Levenberg–Marquardt 联合优化;正文报告通常 3–5 次迭代收敛
指标性质 参数一致性和图像拟合;表中参数不是已知真值误差
其他实验 期刊明确因篇幅限制将更多模拟与实测结果指向技术报告

这里对照主要是数据覆盖条件,不是与十种标定算法在同一公开数据集上的排名。图案更小、更靠近中心,既改变角点分布,也降低对畸变的约束;不能只按图像数量相同就说两组信息量相同。

五处关键证据

1.p.1331 式 (3)–(4)。 单幅平面图提供两条内参约束。它直接解释为什么角点数量、图像数量和姿态多样性扮演不同角色。

2.p.1332 §3.1。 三幅一般姿态对应一般模型;两幅需增加零斜切等假设。它限制了“随便两张即可完整标定”的说法。

3.p.1332 式 (10) 与 §3.3。 非线性优化对像素重投影误差求解,并指出平面相互平行会退化。它支持线性初值加几何优化的流程,不保证任意初始化都到达全局最优。

4.p.1333 Fig. 1。 展示远近两组中各三张图。它帮助观察图案覆盖差异,但不是六张图就是实验全集;总数为十张。

原论文 Figure 1:近距离和远距离平面标定图像
原论文图摘引:Zhang(2000),Figure 1,PDF 第 4 页;核对原文。点击图片可放大。原版权保留。

读图:左右两列分别来自近距离和较远距离拍摄,各展示三种板姿;视角改变提供约束,但照片本身不能给出表1中的标定误差。

5.p.1334 Table 1。 A 组 fx=834.01,fy=839.86f_x=834.01,f_y=839.86,B 组为 836.17、841.08,合并后为 834.64、840.32;这些值以像素尺度表示。更明显的变化是二阶径向系数 k2k_2:A 为 0.3761,B 为 1.3121,合并为 0.3643。作者解释远组只覆盖中心,畸变不明显,因此难以可靠估计。没有真值时,不能将组间差直接当成标定误差。

作者用结果支持低成本平面标定的可行性,同时承认采集几何的重要性。它没有证明普通打印纸在所有精密机器人测量任务中足够平,也没有验证鱼眼、滚动快门或拍摄中变焦的模型。

五、检查平面精度、尺度与参数可辨识性

贡献是利用已知二维度量和未知多姿态运动,在昂贵三维参照物与缺少强约束的自标定之间建立实用路线。闭式初值使非线性求解更容易开始,最终重投影优化又改善代数解的几何意义。

代价是把硬件要求转移到数据质量与模型假设。纸板弯曲、打印比例错误、角点对应错误、只拍平移、画面覆盖不足,都会影响可恢复的参数。拍更多相同姿态可能减小随机噪声,却不会消除结构退化。

一个重要但常被忽略的区别是拟合与验证。标定集残差很小,可能仍有未被激发的参数方向,或者畸变模型在边缘不合适。本文分析建议用未参与求解、覆盖不同位置的图像检查外推表现,并检查参数是否符合成像设置;这属于可执行的后续实验,论文没有报告已完成这一整套验证。

六、追问:标定板的两条轴同时换一个平面坐标基,哪些量应该变化?

标定板的两条轴同时换一个平面坐标基,哪些量应该变化?

参考答案:平板内点坐标和每帧平板到相机的外参表达会随坐标基改变;同一组实际图像的内参不应仅因这次重表达而改变。应把已知点、单应性和外参一起按同一约定转换,再比较重投影。OpenCV标定教程区分object points与image points的讲法在这里特别有用:数值坐标变化不等于物理相机变化。

七、把内参接入运动估计与手眼标定

八、自测与参考答案

问题 1:一张平板图有上百个角点,为什么还不能一般性地恢复所有内参?

参考答案:角点帮助准确估计这一幅单应性,但同一平面单应性中的外参占去相应自由度,最终只提供两条独立内参约束。增加同一幅的角点不会等同于增加不同平面姿态的约束。

问题 2:远处标定板得到相近焦距,为什么畸变系数可能差很多?

参考答案:板只占图像中心时径向半径小,r2,r4r^2,r^4 项弱,不同畸变参数可以产生几乎相同的中心投影。焦距得到约束不代表所有参数都可辨识,必须检查各参数对应的数据覆盖。

问题 3:把平板格子尺寸输入大一倍,为什么像素残差仍可能很小?

参考答案:平板和相机平移的尺度可以共同变化而保持投影比例。图像拟合无法自动恢复被错误输入的真实长度单位,因此尺度错误可能体现在外参平移而不明显体现在重投影残差中。