射影変換(2次元)

提供: メモ帳@fmaj7b5.info
移動: 案内検索

目次

定義

知らない。

3次元空間にある、2枚の平面とそれらの平面上に無い固定された1点に関して、片方の点をその点と固定点を通る直線が他方の平面と交わる点に写すような変換を表す。 要するに、影絵みたいなもの。この場合は固定点が光源、実物と影があるところがそれぞれの平面になる。

点の変換

同次座標で表された2次元の点\tilde{\boldsymbol{x}}を他方の点\tilde{\boldsymbol{x}}^\primeに移す変換は次のように書ける。

  \begin{align}
    \tilde{\boldsymbol{x}}^\prime &\propto
      \begin{bmatrix}
        h_{11} & \cdots & h_{13} \\
        \vdots & \ddots & \vdots \\
        h_{31} & \cdots & h_{33}
      \end{bmatrix}
      \tilde{\boldsymbol{x}} \\
    &= H \tilde{\boldsymbol{x}}
  \end{align}

反対の変換は、当然

  \tilde{\boldsymbol{x}} \propto H \tilde{\boldsymbol{x}}^\prime
になる。

射影変換は0で無い任意の定数をHに掛けても同じ変換を表すため、この行列の自由度は8となる。

線の変換

直線の方程式:

  \boldsymbol{l}^\text{T} \tilde{\boldsymbol{x}} = 0
より、

  \begin{array}{l}
    \boldsymbol{l}^\text{T} H^{-1} H \tilde{\boldsymbol{x}} = 0 \\
    \Rightarrow \ \left( H^{-\text{T}} \boldsymbol{l} \right)^\text{T} \tilde{\boldsymbol{x}}^\prime = 0
  \end{array}
であるため、変換後の直線\boldsymbol{l}^\primeは次式で表される。

  \boldsymbol{l}^\prime \propto H^{-\text{T}} \boldsymbol{l}

ただし、H^{-\text{T}}は逆行列の転置を表すとする。

2次曲線の変換

同様に、

  \tilde{\boldsymbol{x}}^\text{T} C \tilde{\boldsymbol{x}} = 0
より、

  \begin{array}{l}
    \left( H \tilde{\boldsymbol{x}} \right)^\text{T} H^{-\text{T}} C H^{-1} \left( H \tilde{\boldsymbol{x}} \right) = 0 \\
    \Rightarrow \ \tilde{\boldsymbol{x}}^{\prime \text{T}} \left( H^{-\text{T}} C H^{-1} \right) \tilde{\boldsymbol{x}}^\prime = 0
  \end{array}
従って、次の変換式が得られる。


  C^\prime \propto H^{-\text{T}} C H^{-1}

Hを求める

変換前後の点\tilde{\boldsymbol{x}},\, \tilde{\boldsymbol{x}}^\primeが分かっている時、次式を満たすHを求める事を考える。

  \tilde{\boldsymbol{x}}^\prime \propto H \tilde{\boldsymbol{x}} = 0
  \Leftrightarrow
  \tilde{\boldsymbol{x}}^\prime \times H \tilde{\boldsymbol{x}} = \boldsymbol{0}

成分をバラして整理すると以下の線形方程式を得る。

  \begin{bmatrix}
    0 & -x^\prime_3 \tilde{\boldsymbol{x}}^\text{T} &  x^\prime_2 \tilde{\boldsymbol{x}}^\text{T} \\
     x^\prime_3 \tilde{\boldsymbol{x}}^\text{T} & 0 & -x^\prime_1 \tilde{\boldsymbol{x}}^\text{T} \\
    -x^\prime_2 \tilde{\boldsymbol{x}}^\text{T} &  x^\prime_1 \tilde{\boldsymbol{x}}^\text{T} & 0
  \end{bmatrix}
  \begin{bmatrix}
    h_{11} \\ h_{12} \\ h_{13} \\ h_{21} \\ \vdots \\ h_{33}
  \end{bmatrix}
  = \boldsymbol{0}
これで式が3本得られるが線形独立なものは2本であり、どれか一つ嫌いな行を省いても良い。

つまり1組の点に対して2本の式が得られるため、4組の対応点が得られれば「並べて行列にして、最小固有値に対応する固有ベクトルを求める」というアレで計算できる。