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

本文详细介绍了直接线性变换(DLT)算法,一种通过2D到2D的四组点对应来确定变换矩阵H的简单线性算法。文章深入探讨了如何将点对应关系转化为线性方程组,并提供了超定解与非齐次解的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

             直接线性变换(DLT)算法

  首先讨论由给定2D2D2D2D2D2D的四组点对应xi↔xi′x_{i}\leftrightarrow x'_ixixi确定HHH的一种简单的线性算法。变换由方程xi′=Hxix'_i = Hx_ixi=Hxi 给出。但因为这是一个齐次矢量方程; 因此 3 维矢量xi′x'_ixiHxiHx_iHxi不相等。可以用矢量叉乘:xi′×Hxi=0x'_i\times Hx_i=0xi×Hxi=0表示。
  如果将矩阵HHH的第jjj行记为hjTh^{jT}hjTxi′=(xi′,yi′,wi′)T\boldsymbol{x'_i}=(x'_i,y'_i,w'_i)^Txi=(xi,yi,wi)T,则xi′×Hxi=0x'_i\times Hx_i=0xi×Hxi=0可以转换成:
[0T−wi′xiTyi′xiTwi′xiT0T−xi′xiT−yi′xiTxi′xiT0T](h1h2h3)=0\begin{bmatrix} \boldsymbol{0^{T}}&-w_{i}^{'}\boldsymbol{x_{i}^{T}} &y_{i}^{'}\boldsymbol{x_{i}^{T}} \\ w_{i}^{'}\boldsymbol{x_{i}^{T}}&\boldsymbol{0^{T}}& - x_{i}^{'}\boldsymbol{x_{i}^{T}}\\ -y_{i}^{'}\boldsymbol{x_{i}^{T}} & x_{i}^{'}\boldsymbol{x_{i}^{T}} & \boldsymbol{0^{T}} \end{bmatrix}\begin{pmatrix} \boldsymbol{h^{1}}\\ \boldsymbol{h^{2}}\\ \boldsymbol{h^{3}} \end{pmatrix}=\boldsymbol{0}0TwixiTyixiTwixiT0TxixiTyixiTxixiT0Th1h2h3=0

hhh是由矩阵HHH的元素组成的 9 维矢量:
h=(h1h2h3),H=[h1h2h3h4h5h6h7h8h9]\boldsymbol{h}=\begin{pmatrix} \boldsymbol{h^{1}}\\ \boldsymbol{h^{2}}\\ \boldsymbol{h^{3}} \end{pmatrix},H=\begin{bmatrix} h_{1} & h_{2} &h_{3} \\ h_{4} & h_{5} & h_{6}\\ h_{7}&h_{8} & h_{9} \end{bmatrix}h=h1h2h3,H=h1h4h7h2h5h8h3h6h9

  • Aih=0A_i\boldsymbol{h} =\boldsymbol{0}Aih=0是未知矢量h\boldsymbol{h}h 的线性方程.。矩阵AiA_iAi的元素是已知点的坐标的二次多项式。
  • 虽然式中有三个方程,但仅有两个是线性独立的。在解HHH时常省去第三个等式。
  • 该方程组对xi′\boldsymbol{x'_i}xi的任何齐次坐标(xi′,yi′,wi′)T( x'_i,y'_i, w'_i )^ T(xiyiwi)T成立。

求解HHH

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

超定解

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

非齐次解

  另 一种方法是把等式转成非齐次线性方程组,即给矢量h\boldsymbol{h}h中的某个元素强加上hi=1h_i=1hi=1的条件。
[000−xiwi′−yiwi′−wiwi′xiyi′yiyi′xiwi′yiwi′wiwi′000−xixi′−yixi′]h~=[−wiyi′−wixi′]\begin{bmatrix} 0 & 0 & 0& -x_iw'_i & -y_iw'_i & -w_iw'_i &x_iy'_i & y_iy'_i\\ x_iw'_i& y_iw'_i&w_iw'_i & 0 & 0 & 0 &-x_ix'_i &-y_ix'_i \end{bmatrix}\tilde{\boldsymbol{h}}=\begin{bmatrix} -w_iy'_i\\ -w_ix'_i \end{bmatrix}[0xiwi0yiwi0wiwixiwi0yiwi0wiwi0xiyixixiyiyiyixi]h~=[wiyiwixi]

  其中h~\tilde{\boldsymbol{h}}h~是由h\boldsymbol{h}h的前 8 个元素组成的 8 维矢量。

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

退化配置

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

由线和其他,实体求解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不放弃的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值