【入門】射影変換へ至る道②【数値計算】

【入門】射影変換へ至る道②【数値計算】 数値計算
【入門】射影変換へ至る道②【数値計算】

射影変換の処理の流れ

おおよそ、理屈的な話は終わりになる。
実際にこれをプログラムとして組むわけだけ、これのイメージが沸かないかもしれない。
よって、想定する手順を記載

  • 画像の読み込み
  • 変換元座標の確定
  • 変換先座標の確定
  • \(a~h\)の算出
  • 射影変換行列の確定
  • 射影変換
  • 画像保存

先に係数を算出しないと変換行列が確定しない。

注意点

アフィン変換の時にまだら模様になる問題があった。
伸縮、回転をした際に、変換先に割り当てれない座標が出てくるから起きる問題だった。

同じ問題が射影変換でも発生する。
よって、アフィン変換をアフィン逆変換として実施したように、
射影変換も実際のプログラムとしては射影逆変換として実施する。
よって、射影変換行列も逆行列として算出する。

射影逆変換の変形

まずは射影変換の式を再掲

\(
s
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=
\begin{bmatrix}
a&b&c\\
d&e&f\\
g&h&1
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\)

これを\(x,y\)に対して解く式に変更

\(
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}=
s
\begin{bmatrix}
a&b&c\\
d&e&f\\
g&h&1
\end{bmatrix}^{-1}
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}
\)

そして、\(s\)は元々以下で算出できるもの

\(
s=gx+hy+1
\)

しかし、今回は逆変換なので、以下で算出する。

\(
\displaystyle s=\frac{1}{gx\prime+hy\prime+1}
\)

話としてはシンプルではあるが、
逆変換で考えるため少しややこしい。

実際の処理はアフィン変換時に使用したものを流用するので、
射影逆変換に依存する部分だけを注視すればOKなはず。

各ツール、各言語での射影変換は別の記事にて記載。

まとめ

  • 射影変換とアフィン変換との関係性について説明。
  • 上記を元に8個の変数を求める8個の連立方程式を作成し行列表現に。
  • 射影逆変換について説明。

MATLAB、Python、Scilab、Julia比較ページはこちら

コメント

タイトルとURLをコピーしました