前言
这一部分主要讲解相机的标定在matlab中的具体实现方法。
由于特殊原因,现在实现的具体代码找不到了,我会在以后重新补上。
Computation of Camera 相机矩阵的计算
Direct Linear Transform
相机矩阵的计算运用了一个很重要的方法,叫做DLT (Direct Linear Transform),即“直接线性变换”。这种方法的核心思维就是将所求矩阵转化成一个列向量,即将AB=0(A,B都是矩阵)转化成A‘b=0,这里b变成了一个向量,但是它储存的信息并没有减少,比如假设B是5x6的矩阵,那么b就是30x1的向量。这种方法的作用是巨大的,简单一点说,DLT的作用就是通过重组方程,得到一种比较好求解的形式。原本要求解AB=0方程中的矩阵B,现在要求解A’b=0中的向量b,即矩阵A’的right null space(零空间)。
补充完方法后,现在进入正题
x=PX即投影方程,我们的目的是从这个方程中解出P,即相机矩阵。PX的运算结果是一个向量,即x,那么我们就可以运用向量的Cross Product(叉积)来构造方程。显然一个向量与自己的叉积是为零的。
接下来,将对应的值代入。注意在三维空间的线性代数中,有一个convention(不成文但大家都遵循的规则),即任意一个向量a,默认其为列向量。所以在PX的展开式中,可以看到,其实p1,p2,p3应该代表行向量,分别表示矩阵P的1,2,3行,它们储存的信息是一行的信息,但是只要用p1来表示一个向量,它就是列向量。所以我们强行要表示行向量的时候,就要用它的transpose(转置),即p1T