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

原创 2013年12月03日 17:58:14

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

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

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

    这里我们回到2D投影转换来说一说,对于2D平面上的两个对应点<x, x'>,我们可以找到一个单应矩阵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的矩阵:

 

      齐次坐标系的第三维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。也就是奇异向量矩阵的最有一个向量。


直接线性变换(DLT)求解单应性矩阵

在图像拼接中,得到了两张图像的特征匹配,两个点集分别记作XX和X′X'。用单应性变换来拟合二者的关系,可表达为 c⎛⎝⎜uv1⎞⎠⎟=H⎛⎝⎜xy1⎞⎠⎟(1)c\begin{pmatrix}u\\...
  • czl389
  • czl389
  • 2017年05月10日 14:32
  • 2525

【实验室:DLT】DLT算法的易错之处

DLT算法的基本说明如下: DLT+牛顿法 基本思路: 通过DLT法求出初值,再用牛顿法迭代求解。   DLT法的思路: 摄像机矩阵P是3*4的矩阵,共12个参数。如果不考虑12个参数之间的关系,认...
  • qq_27372933
  • qq_27372933
  • 2015年12月22日 11:17
  • 1523

三维重建学习(三)相机的标定(下)

前言 这一部分主要讲解相机的标定在matlab中的具体实现方法。 由于特殊原因,现在实现的具体代码找不到了,我会在以后重新补上。 Computation of Camera 相机矩阵的计算 Direc...
  • DzReal
  • DzReal
  • 2016年09月25日 19:02
  • 1413

近景摄影测量-直接线性变换算法(DLT)含数据

  • 2014年01月04日 14:51
  • 1.85MB
  • 下载

近景摄影测量中的直接线性变换(DLT算法)写成,内含有两个版本

  • 2015年01月10日 10:34
  • 1.85MB
  • 下载

图像处理-基本算法之线性变换

线性变换是灰度变换的一种,图像的灰度变换通过建立灰度映射来调整源图像的灰度从而达到图像增强的目的。      其公式可以表示为y(x, y) = k * x(x, y) + b;其中y(x, y)表...
  • fuyun_613
  • fuyun_613
  • 2012年06月13日 12:43
  • 1743

三维重建学习(三)相机的标定(下)

前言 这一部分主要讲解相机的标定在matlab中的具体实现方法。 由于特殊原因,现在实现的具体代码找不到了,我会在以后重新补上。 Computation of Camera 相机矩阵的计算 Direc...
  • DzReal
  • DzReal
  • 2016年09月25日 19:02
  • 1413

【实验室:DLT】DLT算法的易错之处

DLT算法的基本说明如下: DLT+牛顿法 基本思路: 通过DLT法求出初值,再用牛顿法迭代求解。   DLT法的思路: 摄像机矩阵P是3*4的矩阵,共12个参数。如果不考虑12个参数之间的关系,认...
  • qq_27372933
  • qq_27372933
  • 2015年12月22日 11:17
  • 1523

Homography单应矩阵

在计算机视觉的背景下,2d affine是2D homography的子集。 从几何意义上讲, 2D homography是用来计算一堆在同一个三维平面上的点在不同的二维图像中的投影位置的,是一个...
  • yjl9122
  • yjl9122
  • 2016年03月24日 15:45
  • 7060

Direct3D 坐标转换

  • 2011年01月29日 07:27
  • 102KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Triangulation求解3D坐标-直接线性转换(Direct Linear Transformation-DLT)算法
举报原因:
原因补充:

(最多只允许输入30个字)