バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
射影変換の話の続き。
射影変換とアフィン変換の合成をプログラムで実現する前準備。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
プログラミングの前に?
じゃー、前回の数式を元にプログラミングだね。
そうなんだが、その前に数式を変形しておく必要がある。
変形?
実はアフィン変換の時、そうだったんだんだけど、
今回やってる射影変換は、厳密には射影逆変換だ。
つまり、渡す変換行列に細工が必要だ。
そういや、そういうのがあったな。
実際の数式
射影逆変換を想定した数式は以下になる。
\(
\begin{eqnarray}
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}&=&
\begin{bmatrix}
a&b&c\\
d&e&f\\
g&h&1
\end{bmatrix}^{-1}
\begin{bmatrix}
S_x&0&0\\
0&S_y&0\\
0&0&1
\end{bmatrix}^{-1}\\
&&\begin{bmatrix}
1&0&T_x\\
0&1&T_y\\
0&0&1
\end{bmatrix}^{-1}
\begin{bmatrix}
\cos(\theta)&-\sin(\theta)&0\\
\sin(\theta)&\cos(\theta)&0\\
0&0&1
\end{bmatrix}^{-1}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\end{eqnarray}
\)
逆行列にして、実施した順番になれべればOKか。
そうそう。
ここらへんの証明は以下で実施済みだ。
忘れているならば、復習しておくと良いだろう。
まとめ
まとめだよ。
- 今回の射影変換のアルゴリズムは射影逆変換。
- これに伴い、渡す行列は逆行列。
- 逆行列を個別に渡す場合は、処理したい順に変換行列を渡す。
- これについてはアフィン変換の時に証明済み。
バックナンバーはこちら。
コメント