标定学习笔记(二)-- 张正友论文学习笔记

        这篇学习笔记主要用于记录在学习张正友的标定文献时的一些需要进行记录的要点,张正友的文章最初发表于1998年2月,在如今看来依旧具有进一步学习的意义,本文多以翻译与概述前人文献为主,重温其标定过程的核心思想,若有不妥当的地方,欢迎斧正。


摘要

        张正友(下文谨记为 张)提出了一种灵活的标定技术,用于标定相机:这种标定方式只需要通过相机获得一个包含至少两个轴向的平面图象,并且无论是相机还是用于进行标定的平面都可以进行自由移动(这些移动可以是未知的),同时还模拟了径向畸变(Radial lens distortion is modeled)。这项标定技术的提出过程包括一个封闭形式的解,且基于最大似然准则的非线性细化

        张的文章中给出了对这项标定技术进行计算机模拟与实际数据检验的结果,这些结果都非常出色。比起传统的标定方式(需要使用两到三个正交平面),张所提出的标定方式更加简单且灵活不需要使用者具备丰富的立体几何与计算机视觉的知识。这项标定技术的提出极大地推进了3D计算机视觉走出实验室的进程。

1  研究的动机

        相机的标定在3D计算机视觉中是非常重要的一步,以便于能在2D图像中获取所需的度量信息。在标定上,前人做出的贡献大致可以分为以下两类:标定块标定自标定

        标定块标定:这种标定方式需要在三维空间中获取一个非常精准的几何体,这种标定的方式非常的高效。用于进行标定的物体通常需要具有两到三个相互正交的平面,有时还需要一个已知精准转换的平面。这样的标定方法需要非常昂贵的标定块以及复杂的设置

        自标定:自标定不需要使用任何的标定物,只需要移动一个静态场景中的相机通过图像的位移刚性的场景从一个相机的移动中为相机的内参提供了两个约束。因此,如果图像都是由同一个带有复杂内参的相机拍摄所得的话,三张图像之间的对应关系就足以恢复出所有的内外参数,以便于进行高度相似的三维重建。尽管,这种方法非常的灵活,但它并不成熟,因为有太多的参数需要进行估计,我们不可能总是获得可信的结果

        其他的标定方法包括:正交方向上的消失点标定法,以及纯旋转的标定法

        张的研究聚焦于桌面级视觉系统(desktop vision system,简称为DVS),因为其具有巨大的发展潜力,而相机也正在变得越来越便宜和普遍。DVS主要针对不具备专业计算机视觉知识的人士,他们只愿意重复性地执行相应的视觉任务,并不会愿意为昂贵的设备投入大量的金钱。因此,灵活性鲁棒性以及价格低廉都是非常重要的。张所提出的标定方法正是考虑到了这些因素。

        张做提出的标定方式仅需要通过相机获取一张包含至少两个轴向的平面图像(即棋盘格图像)。该图像可以被打印出来,并且贴在一个可靠的平面上(例如一本厚厚的书)。无论是用于进行拍摄的相机还是用于标定的棋盘格图像都可以进行移动,且这样的移动可以是未知的。张所提出的标定方式介于标定块标定自标定之间,因为这种标定方式使用了2D的度量信息,而非3D信息(相机测量标定)或是纯粹的隐藏信息(自标定)。为了对这一标定方法进行检验(下文中将张所提出的标定方式,简述为棋盘格标定法),张不仅进行了计算机模拟,还利用实际数据进行计算,都取得了很好的结果。与传统的标定方式(标定块标定)相比,棋盘格标定法具有更好的灵活性;与自标定相比,棋盘格标定法考虑到了鲁棒性的角度。棋盘格标定法极大地推动了3D机器视觉走向实际应用


        在三维的计算机视觉中通常会制作一定数量的精确的标定块用于对激光传感器进行标定,利用相应的软件,这样的标定也可以非常的迅速和稳定,但是利用标定块进行标定对传感器与标定块的位置有很高的要求。

        自标定虽然不依赖于外部的标定物的设置,但是自标定对于内外参数较多的情况,缺乏很好的应对方式,当需要进行标定的参数较多时,往往不太稳定。

        在二维的机器视觉中,也存在一种原理类似于棋盘格标定的标定方式,这种标定方式依赖于精确制作的菲林片(可以理解为一种包含相应特征的图像板,且这些特征之间的距离经过专业设备进行测试),通过对菲林片进行拍摄后可以建立起二维图像中的像素距离与菲林片中的特征距离(真值)之间的关系。


2  公式推导

        张通过观察一个单一平面来检测相机固有参数约束条件,下面是在论文中所用到的一些符号与公式

2.1  符号

        一个二维的点可以表示为 m=\left [ u,v \right ]^T。一个三维的点可以表示为 M=\left [ X,Y,Z \right ]^T。张利用\tilde{x}来表示为上述元素的增广向量形式:\tilde{m}=\left [ u,v,1 \right ]^T和 \tilde{M}=\left [ X,Y,Z,1 \right ]^T相机模型可以用小孔成像模型进行模拟三维点M与二维点m之间的关系可以表示为:

s\tilde{m}=A\begin{bmatrix} R &t \end{bmatrix}\tilde{M}

        上式记为公式(1)。其中,s 是一个任意比例因子;\begin{bmatrix} R & t \end{bmatrix} 是外部参数,它由世界坐标系到相机坐标系旋转与平移矩阵构成;而 A 则称为相机的内部参数,可表示为:

A=\begin{bmatrix} \alpha & \gamma &u_{0} \\ 0 & \beta & v_{0}\\ 0 & 0 & 1 \end{bmatrix}

        其中 \left ( u_{0},v_{0} \right ) 是图像坐标系的原点\alpha 和 \beta 是图像坐标系下 u v 轴的比例因子,而 \gamma 是描述图像坐标系两轴的倾斜参数

        张利用 A^{-T} 来作为 (A^{-1})^T和 (A^T)^{-1}的缩写。

2.2  模型平面与其图像之间的单应性

        为了保证一般性,张假设棋盘格平面位于世界坐标系Z=0 的位置,并将旋转矩阵 R 中的第i 列元素表示为 r_{i}。从公式(1),我们可以得出:

\begin{matrix} s\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = A\begin{bmatrix} r_{1} & r_{2} & r_{3} & t \end{bmatrix}\begin{bmatrix} X\\ Y\\ 0\\ 1 \end{bmatrix}\\ =A\begin{bmatrix} r_{1} & r_{2} & t \end{bmatrix}\begin{bmatrix} X\\ Y\\ 1 \end{bmatrix} \end{matrix}

        张仍旧利用 M 来表示棋盘格平面中的一点,由于模型平面位于世界坐标系下 Z=0 处,因此M = \left[X,Y\right]^T。同样,其增广矩阵可写作:\tilde{M}=\left[X,Y,1\right]^T。因此,模型点 M 与其图像点 m 之间存在单应性矩阵 H

\begin{matrix} s\tilde{m}=H\tilde{M}\\ H = A\begin{bmatrix} r_{1} & r_{2} & t \end{bmatrix} \end{matrix}

        上式可记为公式(2)3 \times 3 的矩阵 H 可以认为是一个比例因子

2.3  内参的约束

        通过给定平面的图像,可以估计单应性矩阵,该单应性矩阵可以表述为 H=\begin{bmatrix} h_{1} & h_{2} & h_{3} \end{bmatrix} 。根据公式(2),可以得出:

\begin{bmatrix} h_{1} & h_{2} & h_{3} \end{bmatrix} = \lambda A\begin{bmatrix} r_{1} & r_{2} & t \end{bmatrix}

        其中 \lambda 是一个任意的标量。已知 r_{1} 和 r_{2} 是正交的,可以得出公式(3)公式(4)

\begin{matrix} h_{1}^{T}A^{-T}A^{-1}h_{2}=0\\ h_{1}^{T}A^{-T}A^{-1}h_{1}=h_{2}^{T}A^{-T}A^{-1}h_{2} \end{matrix}

        这两个公式是针对内参的两个基本约束,并可通过一个单应性矩阵给出。由于一个单应性矩阵拥有8个自由度6个外参3个旋转参数3个平移参数),因此我们只能获得内参两个约束。需要指出的是 A^{-T}A^{-1} 实际上是一条绝对二次曲线,在下一部分中,将进行几何描述

2.4  几何描述

        现在可以将公式(3)公式(4)通过绝对二次曲线联系起来。

        不难进行验证的是,在张的描述下,模型平面相机坐标系下可以用下列公式进行描述:

\begin{bmatrix} r_{3}\\ r_{3}^{T}t \end{bmatrix}^T\begin{bmatrix} x\\ y\\ z\\ w \end{bmatrix} = 0

        当在无穷远点处 w=0 而在其他位置的点处 w=1 。该平面在无穷处可以被视作是一条直线,且可以非常容易地得出 \begin{bmatrix} r_{1}\\ 0 \end{bmatrix} 和 \begin{bmatrix} r_{2}\\ 0 \end{bmatrix} 是这条直线上的两个特殊的点任何在这条直线上的点都是这两个点的线性组合,也就是说:

X_{\infty} = a\begin{bmatrix} r_{1}\\ 0 \end{bmatrix}+b\begin{bmatrix} r_{2}\\ 0 \end{bmatrix}=\begin{bmatrix} ar_{1}+br_{2}\\ 0 \end{bmatrix}

        下面,可以计算绝对二次曲线与该直线交点。根据定义可以得,点 X_{\infty} 是一个圆点,满足:X_{\infty}^TX_{\infty}=0,即:

\begin{matrix} (ar_{1}+br_{2})^T(ar_{1}+br_{2})=0\\ a^2+b^2=0 \end{matrix}

        上式可以解出 b=\pm aii^2=-1 。也就是说,两个交点的坐标如下:

X_{\infty}=a\begin{bmatrix} r_{1} \pm ir_{2}\\ 0 \end{bmatrix}

        他们在图像平面上的投影点坐标,可以根据比例因子写作:

\tilde{m_{\infty}}=A(r_{1} \pm ir_{2})=h_{1} \pm ih_{2}

        点 \tilde{m_{\infty}} 位于绝对双曲线的图像上,可以通过 A^{-T}A^{-1} 来进行描述,由此可以得出:

(h_{1} \pm ih_{2})^TA^{-T}A^{-1}(h_{1} \pm ih_{2}) = 0

        该等式仅在公式(3)和公式(4)的实部与虚部均为0时成立。

3  解决图像标定

        该部分提供了如何有效解决相机标定问题的详细描述。张首先给出了相应的解析解,其次提供了基于最大似然估计的非线性优化方法,在考虑了径向畸变后,不仅提供了解析解还给出了非线性的解决方式

3.1  解析解

        首先,给出如下定义,记为公式(5)

\begin{matrix} B=A^{-T}A^{-1}\equiv \begin{bmatrix} B_{11} & B_{12} & B_{13}\\ B_{12} & B_{22} & B_{23}\\ B_{13} & B_{23} & B_{33} \end{bmatrix}\\ =\begin{bmatrix} \frac{1}{\alpha^2} & -\frac{\gamma}{\alpha^2\beta} & \frac{v_{0}\gamma-u_{0}\beta}{\alpha^2\beta}\\ -\frac{\gamma}{\alpha^2\beta} & \frac{\gamma^2}{\alpha^2\beta^2}+\frac{1}{\beta^2} & -\frac{\gamma(v_{0}\gamma-u_{0}\beta)}{\alpha^2\beta^2}-\frac{v_{0}}{\beta^2}\\ \frac{v_{0}\gamma-u_{0}\beta}{\alpha^2\beta} & -\frac{\gamma(v_{0}\gamma-u_{0}\beta)}{\alpha^2\beta^2}-\frac{v_{0}}{\beta^2} & \frac{(v_{0}\gamma-u_{0}\beta)^2}{\alpha^2\beta^2}+\frac{v_{0}^2}{\beta^2}+1 \end{bmatrix} \end{matrix}

        其中,B 是一个对称矩阵,可以用一个六维向量来定义,记为公式(6)

b=\begin{bmatrix} B_{11} & B_{12} & B_{22} & B_{13} & B_{23} & B_{33} \end{bmatrix}^T

        将矩阵 H 中的第 i 列元素定义为 h_{i}=\begin{bmatrix} h_{i1} & h_{i2} & h_{i3} \end{bmatrix}^T,由此可以得到公式(7)

h_{i}^TBh_{j}=v_{ij}^Tb

        其中:

v_{ij}=\begin{bmatrix} h_{i1}h_{j1} & h_{i1}h_{j2}+h_{i2}h_{j1} & h_{i2}h_{j2} & h_{i3}h_{j1}+h_{i1}h_{j3} & h_{i3}h_{j2}+h_{i2}h_{j3} & h_{i3}h_{j3} \end{bmatrix}^T

        因此,通过给定的单应式矩阵获得的两个基本约束(如公式(3)公式(4)所示),可以进一步表述为公式(8)

\begin{bmatrix} v_{12}^T\\ (v_{11}-v_{22})^T \end{bmatrix}b=0

        假设,一共获取了 n 幅棋盘格图像,通过叠加 n 个公式(8),我们可以得到公式(9)

Vb=0

        其中 V 是一个 2n \times 6 次的矩阵。如果 n\geq 3,可以得到一个由比例因子确定唯一解 b。如果 n=2,可以推导出非偏态约束 \gamma = 0,即 \begin{bmatrix} 0 & 1 & 0 & 0 & 0 & 0 \end{bmatrix}b=0,可以作为公式(9)的补充。(如果 n=1 的话,我们只能解出相机的两个内部参数,即 \alpha 和 \beta,假设 u_{0} 和 v_{0} 已知(即位于图像的中心)且 \gamma = 0)。公式(9)的解,可以认为是 V^TV 的特征向量与最小特征值(等价于,矩阵 V 的右奇异向量及最小奇异值)。

        一旦 b 被估算出来,我们可以求解包含相机所有内参的矩阵 A

        一旦 A 被求解出来,那么每张图片的外部参数也就可以被估算出来。从公式(2)中,可以得出:

\begin{bmatrix} r_{1}=\lambda A^{-1}h_{1}\\ r_{2}=\lambda A^{-1}h_{2}\\ r_{3}=r_{1}\times r_{2}\\ t=\lambda A^{-1}h_{3} \end{bmatrix}

        其中:\lambda = 1/\left \| A^{-1}h_{1} \right \|=1/\left \| A^{-1}h_{2} \right \|。当然,由于图像中的噪声,进行计算的矩阵R=\left [ r_{1},r_{2},r_{3} \right ] 并不具备一个旋转矩阵的相应属性。在附录C中提供了一种估计最佳旋转矩阵的方法。

3.2  最大似然估计

        上面所描述的解决办法是通过计算最小代数距离所获得的,这样的方法并不具备一定的物理意义。张提出可以通过极大似然推断来改善它。

        给出 n 幅棋盘格图像并且这上面存在 m 个角点。假设这些图像上的角点被独立的同分布的噪声所污染。该最大似然估计可以通过求解下列方程(10)的最小值来获取:

\sum_{i=1}^{n}\sum_{j=1}^{m}\left \| m_{ij}- \tilde{m}(A,R_{i},t_{i},M_{j}) \right \|^2

        其中 \hat{m}(A,R_{i},t_{i},M_{j}) 是根据公式(2)计算所得的点 M_{j} 在第 i 幅棋盘格图像上的投影点。一个旋转矩阵 R 可以由一个三个参数的向量 r 进行参数化,该向量平行于旋转主轴,其大小等于旋转的角度R 和 r 可以通过罗德里格斯方程相关联。方程(10)的极小值求解是一个非线性的最小值问题,可以通过LM(Levenberg-Marquardt)算法进行求解。这需要一个对于 A 的初始猜测,通过前向讨论的方式可以计算出\left \{ R_{i},t_{i}|i=1..n \right \}

3.3  径向畸变处理

        到目前为止,相机的径向畸变尚未被纳入考虑。但是,一个桌面级的相机通常存在明显的径向畸变。在下面这部分,仅讨论前两项径向畸变。相关资料表明,畸变函数很可能完全由径向分量控制,特别是由第一项控制。研究还发现,任何更详细的建模不仅不会有帮助(与传感器量化相比可以忽略不计),而且还会导致数值不稳定

        不妨假设 (u,v) 是理想(无可观测的畸变)的像素坐标系(\breve{u},\breve{v}) 则是其对应的真实观测图像坐标理想中的点棋盘格模型上的点根据针孔模型成像所得。同样的,(x,y) 和 (\breve{x},\breve{y}) 分别对应理想与实际情况下的图像坐标系。根据相关资料可知:

\begin{matrix} \breve{x}=x+x[k_{1}(x^2+y^2)+k_{2}(x^2+y^2)^2]\\ \breve{y}=y+y[k_{1}(x^2+y^2)+k_{2}(x^2+y^2)^2] \end{matrix}

        其中 k_{1} 和 k_{2} 是径向畸变的系数径向畸变的中心与光心一致。从 \breve{u}=u_{0}+\alpha \breve{x} + c\breve{y} 和 \breve{v}=v_{0}+\beta \breve{y} 可以得出公式(11)公式(12)

\begin{matrix} \breve{u}=u+(u-u_{0})[k_{1}(x^2+y^2)+k_{2}(x^2+y^2)^2]\\ \breve{v}=v+(v-v_{0})[k_{1}(x^2+y^2)+k_{2}(x^2+y^2)^2] \end{matrix}

利用交替估计径向失真:由于径向畸变预计是很小的,人们希望估计其他五个内在参数,使用第3.2节中描述的技术,简单地忽略畸变是合理的。其中一个策略是在估计了其他参数后去估计 k_{1} 和 k_{2},这样做可以提供理想的像素坐标系 (u,v)。接着,通过公式(11)和公式(12),可以得出每幅图像中每个点的两个等式:

\begin{bmatrix} (u-u_{0})(x^2+y^2)& (u-u_{0})(x^2+y^2)^2\\ (v-v_{0})(x^2+y^2)& (v-v_{0})(x^2+y^2)^2\end{bmatrix}\begin{bmatrix} k_{1}\\ k_{2} \end{bmatrix}=\begin{bmatrix} \breve{u}-u\\ \breve{v}-v \end{bmatrix}

        通过给出 n 幅棋盘格图像中的 m 个点,可以获得 2mn 个方程。或者以矩阵的形式呈现,如:Dk=d,其中 k=\left [ k_{1},k_{2} \right ]^T。其线性最小二乘解如下:

k=(D^TD)^{-1}D^Td

        一旦 k_{1} 和 k_{2} 得以估计,就可以改进对于其他参数的估计,通过用方程(11)和(12)代替利用 \hat{m}(A,R_{i},t_{i},M_{j}) 来求解方程(10)。我们可以交替使用这两种方法直到收敛。

计算最大似然估计:实验发现,上述交替技术的收敛速度较慢。一种对于方程(10)自然延伸,可以通过最小化以下函数来估计完整的参数集,记为方程(14):

\sum_{i=1}^{n}\sum_{j=1}^{m}\left \| m_{ij}-\breve{m}(A,k_{1},k_{2},R_{i},t_{i},M_{j}) \right \|^2

        其中 \breve{m}(A,k_{1},k_{2},R_{i},t_{i},M_{j}) 是点 M_{j} 根据公式(2)在第 i 幅图像上的投影点,其次是根据方程(11)和(12)的变形。这是一个非线性最小值的问题,可以通过LM算法进行求解。一个旋转矩阵可以如第3.2节中所言,用三个向量进行初始化。对于 A 和 \left \{ R_{i},t_{i}|i=1..n \right \} 可以通过第3.1或3.2节中介绍的技术进行初始猜测。k_{1} 和 k_{2} 的初始猜想可以通过上一段描述的方法获得,或者简单地将它们设为 0

3.4  小结

推荐的校准程序如下:

1)打印棋盘格图案并将其附着在平面上;

2)通过移动模型平面或摄像机,拍摄几张不同方向下的模型平面图像;

3)检测图像中的特征点

4)使用第3.1节中描述的封闭解估计5个内在参数和所有外在参数

5)通过方程(13)求解线性最小二乘估计径向畸变系数

6)通过方式(14)最小化优化所有参数。

你可能感兴趣的:(机器视觉学习笔记,标定学习笔记,单目相机标定,经典论文)