直接線性變換法是建立像點坐標和相應物點物方空間坐標之間直接的線性關系的算法。特點:不需要內外方位元素;適合於非量測相機;滿足中、低精度的測量任務;可以標定單個相機。
1 各坐標系之間的關系推導直接線性變換解法
1.1 像素坐標系與像平面坐標系

圖 1 像素坐標系與像平面坐標系間的關系
兩坐標系的關系式如下:
像素坐標系即CCD坐標系,是以左上角為原點,水平向右為$u$方向,豎直向下為$v$方向;像平面坐標系是影像平面內的直角坐標系,用以表示像點在像平面上的位置,其以像主點$o$為原點,$x$方向與$u$方向平行,$y$方向與$v$方向平行。其二者的關系如右圖所示,
$u= \frac{x}{dx}+u_{0}\\v=\frac{y}{dy}+v_{0}$
式中,$dx$為在$x$方向上每個像素的寬度;$dy$為在$y$方向上每個像素的高度。
將上式化為齊次坐標矩陣形式為
$\begin{bmatrix}u\\ v\\ 1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx} & 0 & u_{0}\\ 0 & \frac{1}{dy} & v_{0}\\ 0 & 0 & 1\end{bmatrix}\begin{bmatrix}x\\ y\\ 1\end{bmatrix}$
1.2 像平面坐標系與像空間坐標系
像空間坐標系是以攝站點$S$為坐標原點,攝影機的主光軸$SO$坐標系的$Z_{C}$軸,像空間坐標系的$X_{C}$、$Y_{C}$軸分別與像平面坐標系的$x$、$y$軸平行。

圖 2 像平面坐標系與像空間坐標系的關系
兩坐標系的關系如下式
$\left\{\begin{matrix}\frac{x}{f}=\frac{X_{C}}{Z_{C}}\\ \frac{y}{f}=\frac{Y_{C}}{Z_{C}}\end{matrix}\right.\Rightarrow \left\{\begin{matrix}Z_{C}\cdot x=f\cdot X_{C}\\ Z_{C}\cdot y=f\cdot Y_{C}\end{matrix}\right.$
將上式化為矩陣形式為
$Z_{C}\begin{bmatrix}x\\ y\\ 1\end{bmatrix}=\begin{bmatrix}f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0\end{bmatrix}\begin{bmatrix}X_{C}\\ Y_{C}\\ Z_{C}\\ 1\end{bmatrix}$
1.3 像空間坐標系與笛卡爾空間坐標系
笛卡爾空間坐標系即為所攝物體所在的空間直角坐標系。兩坐標系間的關系公式如下
$\begin{bmatrix}X_{C}\\ Y_{C}\\ Z_{C}\end{bmatrix}=R\begin{bmatrix}X\\ Y\\ Z\end{bmatrix}+\begin{bmatrix}X_{S}\\ Y_{S}\\ Z_{S}\end{bmatrix}$
化成齊次坐標矩陣形式為
$\begin{bmatrix}X_{C}\\ Y_{C}\\ Z_{C}\\1\end{bmatrix}=\begin{bmatrix}R & t\\ 0^{T} & 1\end{bmatrix}\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}=T\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}$
其中R,t為
$R=\begin{bmatrix}r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33}\end{bmatrix},t=\begin{bmatrix}t_{1}\\ t_{2}\\ t_{3}\end{bmatrix}$
1.4 四種坐標系的合成
由上述四個坐標系間的轉換可得像素坐標系和笛卡爾空間坐標系的轉換關系,見下式
$Z_{C}\begin{bmatrix}u\\ v\\ 1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx} & 0 & u_{0}\\ 0 & \frac{1}{dy} & v_{0}\\ 0 & 0 & 1\end{bmatrix}\begin{bmatrix}f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0\end{bmatrix}\begin{bmatrix}R & t\\ 0^{T} & 1\end{bmatrix}\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}=\begin{bmatrix}l_{1} & l_{2} & l_{3} & l_{4}\\ l_{5} & l_{6} & l_{7} & l_{8}\\ l_{9} & l_{10} & l_{11}& l_{12}\end{bmatrix}\begin{bmatrix}X\\ Y\\ Z\\1\end{bmatrix}$
由上式可得
$\left\{\begin{matrix}u=(l_{1}X+l_{2}Y+l_{3}Z+l_{4})/Z_{C}\\ v=(l_{5}X+l_{6}Y+l_{7}Z+l_{8})/Z_{C}\\ Z_{C}=l_{9}X+l_{10}Y+l_{11}Z+l_{12}\end{matrix}\right.\Rightarrow \left\{\begin{matrix}u=\frac{l_{1}X+l_{2}Y+l_{3}Z+l_{4}}{l_{9}X+l_{10}Y+l_{11}Z+1}\\ v=\frac{l_{5}X+l_{6}Y+l_{7}Z+l_{8}}{l_{9}X+l_{10}Y+l_{11}Z+1}\end{matrix}\right.$
$\left\{\begin{matrix}l_{1}=\frac{f\cdot r_{11}}{dx}+u_{0}\cdot r_{31} & l_{2}= \frac{f\cdot r_{12}}{dx}+u_{0}\cdot r_{32}& l_{3}= \frac{f\cdot r_{13}}{dx}+u_{0}\cdot r_{33}& l_{4}=\frac{f\cdot t_{1}}{dx}+u_{0}\cdot t_{3}\\ l_{5}= \frac{f\cdot r_{21}}{dx}+v_{0}\cdot r_{31}& l_{6}= \frac{f\cdot r_{22}}{dx}+v_{0}\cdot r_{32}& l_{7}= \frac{f\cdot r_{23}}{dx}+v_{0}\cdot r_{33}& l_{8}=\frac{f\cdot t_{2}}{dx}+v_{0}\cdot t_{3}\\ l_{9}= r_{31}& l_{10}= r_{32}& l_{11}= r_{33}& l_{12}=t_{3}\end{matrix}\right.$
式中,$(X、Y、Z)$為笛卡爾空間坐標系中的三維坐標,$(u,v)$為圖像上對應三維點的像素坐標,$l_{1}...l_{12}$為笛卡爾空間坐標系與像素坐標系之間的關系系數,此外令$l_{12}=1$,因為$l_{12}$的取值對其他參數的值沒有影響,顧上述兩式是等同的,可由后續的計算過程證明。
2 相機內參數計算
2.1 DLT求解
將1.4小節中的最后一個方程組進行變換可得到下列等式
$\begin{bmatrix}X & Y & Z & 1 & 0 & 0 & 0 & 0 & -Xu & -Yu & -Zu\\ 0 & 0 & 0 & 0 & X & Y & Z & 1 & -Xv & -Yv & -Zv \end{bmatrix}\begin{bmatrix}l_{1}\\ l_{2}\\ l_{3}\\ l_{4}\\ l_{5}\\ l_{6}\\ l_{7}\\ l_{8}\\ l_{9}\\ l_{10}\\ l_{11} \end{bmatrix}-\begin{bmatrix}u\\ v\end{bmatrix}=0\Rightarrow BL=C$
上式中有11個未知數,每對點(像素與對應的三維點)可列兩個等式,所以最少需要6對點才可解該方程。
未知數矩陣的解為
$L=(B^{T}B)^{-1}(B^{T}C)$
到此,即解出了$l_{1}...l_{11}$的值。
2.2 內參數計算
通過旋轉矩陣的特性可求得相機的內參數
$\left\{\begin{matrix}u_{0}=l_{1}l_{9}+l_{2}l_{10}+l_{3}l_{11}\\ v_{0}=l_{5}l_{9}+l_{6}l_{10}+l_{7}l_{11}\\ f_{u}=\sqrt{l_{1}^{2}+l_{2}^{2}+l_{3}^{2}-u_{0}^{2}}\\ f_{v}=\sqrt{l_{5}^{2}+l_{6}^{2}+l_{7}^{2}-v_{0}^{2}}\end{matrix}\right.$
