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

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

http://blog.csdn.net/zzzblog/article/details/17097377优化

 

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

们获得 x = PX, x' = P’X。.net

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

    这里咱们回到2D投影转换来讲一说,对于2D平面上的两个对应点<x, x'>,咱们能够找到一个单应矩阵H来创建两者的关系x'  =blog

 Hx。H是一个 3x3 的矩阵,因此 x 和 x‘ 是齐次坐标系下的2D坐标,他们的数量级不同,那么 x'  = Hx 不必定成立,但知足get

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

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

 

 
 
 
 

 

    因而, x' x Hx = 0知足方法

    

 

      因为 ,因此咱们能够将上式写成 AX = 0 的形式

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

 

      齐次坐标系的第三维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为

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

 

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

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

 对A作SVD分解, 。咱们的目标是最小化,即。因为U 和 V 里面都是单位向量,因此

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

相关文章
相关标签/搜索