DLT(Direct Linear Transform)算法

1、DLT定义

           DLT是一个 用于解决包含尺度问题的最小二乘问题 的算法。

          DLT解决问题的标准形式为:

                               {x_k}{\propto}A{y_k}       (1)

         另一种表现形式为:

                         {x_k}={\alpha}A{y_k}   或者 {\alpha}{x_k}=A{y_k}    (2)

         这种模型在投影几何中会经常遇到。

         例如,针孔相机投影模型,3D点到图像平面的投影关系;

                 两视图几何中的单应性矩阵(Homography);

2、DLT求解

           因为尺度\alpha的存在,因为不能用线性齐次最小二乘法直接求解。

         由(1)(2)式子可知:x_kAy_k的方向是相同的,即叉乘结果为0:

                                  {x_k}{\times}A{y_k}=0       (3)

            对(3)用叉乘矩阵来表示:

                           {\left[{{x_k}}\right]_\times}A{y_k}=0      (4)

          对于(4)式,可参考:向量叉乘与叉乘矩阵

          对(4)式进行变型就可以得到一个线性齐次最小二乘求解问题。可以参考:最小二乘法

3、举例

                          {\alpha}{x_k}=A{y_k}

                       {x_k}=\left[{\begin{array}{*{20}{c}}
{{x_{1k}}}\\
{{x_{2k}}}
\end{array}}\right]      {y_k}=\left[{\begin{array}{*{20}{c}}
{{y_{1k}}}\\
{{y_{2k}}}\\
{{y_{3k}}}
\end{array}}\right]     

           由公式(4):

                      

           展开:

                       \begin{array}{l}
{\left[{{x_k}}\right]_\times}A{y_k}=\;{a_{11}}{x_{2k}}{y_{1k}}-{a_{21}}{x_{1k}}{y_{1k}}+{a_{12}}{x_{2k}}{y_{2k}}\\
\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;-{a_{22}}{x_{1k}}{y_{2k}}+{a_{13}}{x_{2k}}{y_{3k}}-{a_{23}}{x_{1k}}{y_{3k}}
\end{array}

           写成矩阵的形式:

                                 {\left[{{x_k}}\right]_\times}A{y_k}={b_k}a=0

           其中:

                      {b_k}=\left[{\begin{array}{*{20}{c}}
{{x_{2k}}{y_{1k}}}\\
{-{x_{1k}}{y_{1k}}}\\
{{x_{2k}}{y_{2k}}}\\
{-{x_{1k}}{y_{2k}}}\\
{{x_{2k}}{y_{3k}}}\\
{-{x_{1k}}{y_{3k}}}
\end{array}}\right]         a=\left[{\begin{array}{*{20}{c}}
{{a_{11}}}\\
{{a_{21}}}\\
{{a_{12}}}\\
{{a_{22}}}\\
{{a_{13}}}\\
{{a_{23}}}
\end{array}}\right]

posted @ 2016-04-03 15:44  neu博  阅读(11899)  评论(0编辑  收藏  举报