Triangulation求解3D坐标-直接线性转换(Direct Linear Transformation-DLT)算法

    在做多视觉的3D重建的时候,当找到多帧的匹配点和对应相机姿态时,我们需要求得的匹配点 x 和 x' 以及对应的 P 和 P’我

们得到 x = PX, x' = P’X。

    得到了上述的两个等式,我们如何求方程组求解呢?

    这里我们回到2D投影转换来说一说,对于2D平面上的两个对应点,我们可以找到一个单应矩阵H来建立二者的关系x'  =

 Hx。H是一个 3x3 的矩阵,所以 x 和 x‘ 是齐次坐标系下的2D坐标,他们的数量级不一样,那么 x'  = Hx 不一定成立,但满足

叉积关系 x' x Hx = 0。很显然,x 和 x'

    在同一个方向上,叉积为0)。此时,设

    于是, x' x Hx = 0满足

    

      由于 ,所以我们可以将上式写成 AX = 0 的形式


   如果我们用xi'乘以第一行,yi'乘以第二行并相加,就得到了第三行,所以只有前两行是线性独立的。那么最终的A为2X9的矩阵:

 Triangulation求解3D坐标-直接线性转换(Direct Linear Transformation-DLT)算法_第1张图片

      齐次坐标系的第三维w可以设为1。那么一组匹配点可以得到两个等式。

      A的解有三种:

1. 给4个匹配点可以得到一个 8X9 公式,且 rank(A) = 8。那么A的null-space即为一个解。

2. 当多于4个点的时候,我们需要求解超定解。我们所要的解就是A的最小奇异值对应的奇异向量。

3. 由于h的解取决于一个系数scale,我们可以通过改变系数来约束h。如果我们令h3,3为1,那么我们得到

 

     对于n个点,我们的到一个 2nx9 的矩阵 A, h的解就是最小奇异值对应的奇异向量。


     那么回到我们的Triangulation问题上,发现两个公式 x' = PX 和 x‘ = Hx  是非常相似的。令 x x (PX) = 0,我们可以得到 AX=0 ,其中A为

Triangulation求解3D坐标-直接线性转换(Direct Linear Transformation-DLT)算法_第2张图片

     求解的方法就和上面一样啦。

     由于我也是初学者,所以对求解 AX = 0 比较有兴趣。上面说 X 的最小二乘的解为什么是SVD最小奇异值对应的奇异向量?

     对于 AX = 0 我们感兴趣的是 X 的非 0 解。如果 X 为解那么 kX 也是解。为了使解唯一化。我们加入约束 。

 对A做SVD分解, 。我们的目标是最小化,即。由于U 和 V 里面都是单位向量,所以

 且 我们令,那么,我们最终优化。这里面D是对角矩阵,对线上存放了奇异值且从上到下依次递减。那么这个解就是y = (0,0,...,1)';所以 x = Vy。也就是奇异向量矩阵的最有一个向量。


你可能感兴趣的:(Structure,from,Motion,3D)