Multiple View Geometry(多视图几何)学习笔记(11)—直接线性变换(DLT)算法

             直接线性变换(DLT)算法

  首先讨论由给定 2 D 2 D 的四组点对应 x i x i 确定 H 的一种简单的线性算法。变换由方程 x i = H x i 给出。但因为这是一个齐次矢量方程; 因此 3 维矢量 x i H x i 不相等。可以用矢量叉乘: x i × H x i = 0 表示。
  如果将矩阵 H 的第 j 行记为 h j T x i = ( x i , y i , w i ) T ,则 x i × H x i = 0 可以转换成:

[ 0 T w i x i T y i x i T w i x i T 0 T x i x i T y i x i T x i x i T 0 T ] ( h 1 h 2 h 3 ) = 0

h 是由矩阵 H 的元素组成的 9 维矢量:

h = ( h 1 h 2 h 3 ) , H = [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ]

  • A i h = 0 是未知矢量 h 的线性方程.。矩阵 A i 的元素是已知点的坐标的二次多项式。
  • 虽然式中有三个方程,但仅有两个是线性独立的。在解 H 时常省去第三个等式。
  • 该方程组对 x i 的任何齐次坐标 ( x i y i w i ) T 成立。

求解 H

  每组点对应给出关于 H 元素的两个独立的方程。给定四组这样的点对应,便获得方程组 A h = 0

超定解

  如果给出的点对应 x i x i 多于四组,方程组 A h = 0 是超定的。如果点的位置是精确的,那么 A 的秩仍然为 8 并有一维零空间,并且存在精确解 h 。如果图像坐标的测量是不精确的,方程组将不存在精确解。我们需要求一个适当的代价函数取最小值的矢量 h 。通常附加范数条件,既然不存在 A h = 0 的精确解,很自然会在通常约束 h = 1 下最小化范数 A h 。这等价于求商 A h / h 的最小值问题。该解是 A T A 的最小特征值的(单位)特征矢量。由此所得到的算法称为基本 DLT 算法

非齐次解

  另 一种方法是把等式转成非齐次线性方程组,即给矢量 h 中的某个元素强加上 h i = 1 的条件。

[ 0 0 0 x i w i y i w i w i w i x i y i y i y i x i w i y i w i w i w i 0 0 0 x i x i y i x i ] h ~ = [ w i y i w i x i ]

  其中 h ~ 是由 h 的前 8 个元素组成的 8 维矢量。

扫描二维码关注公众号,回复: 1562240 查看本文章

  但是,如果事实上真正的解是 h i = 0 ,那么不存在一个因子 k 使 k h i = 1 .。这意味着令 h i = 1 得不到真解。

退化配置

  出现某种配置不能确定唯一解的情形称为退化。注意退化的定义既涉及配置也涉及变换类型。而且退化问题不仅限于最小配置解。如果多出来的( 精确的,即无误差的)点对应也共线,那么退化问题仍没有解决。

由线和其他,实体求解

  到目前为止以及本文的其余部分,都只讨论由点对应采计算单应。然而线对应和二次曲线的对应也可以来计算单应。于是就产生计算一个单应(或任何其他关系)需要多少组对应的问题。一般的原则是约束数必须等于或大于变换的自由度数。
  但采用混合类型的对应来计算 H 时必须谨慎。例如一个 2 D 单应不能由两组点对应和两组线对应唯一确定,但能由三级点和一组线或一组点和三组线来唯一确定,即使每种配置都有 8 个自由度也是如此。

猜你喜欢

转载自blog.csdn.net/hu_weichen/article/details/80401644