バックナンバーはこちら。
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
【再掲】射影変換の理屈の因果関係
まずは大まかな流れを再掲
- 大まかな理屈(済)
- 大まかな理屈を座標変換で説明(済)
- 基本ベクトルと基底ベクトル(済)
- 元画像平面を3次元空間で表現(済)
- 3次元空間を地面平面に落とし込む(済)
- 一連の座標変換まとめ(済)
- 方程式の変形
- 行列表現
- アフィン変換との関係性
- 係数の求め方
- 係数の求め方(行列表現)
- 射影変換の処理の流れ
「一連の座標変換まとめ」というところまで終わっている。
方程式の変形
前回で以下の方程式が求まっている。
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
\displaystyle x\prime=\frac{ax+by+c}{gx+hy+1} \\
\displaystyle y\prime=\frac{dx+ey+f}{gx+hy+1}
\end{array}
\right.
\end{eqnarray}
\)
各パラメータがどうなるかわからんけど、
なんとなく求まりそうな雰囲気はあるよね。
これを少し整頓して変形しておく。
分母を\(s\)としてまとめる。
\(
s=gx+hy+1
\)
これを元の式に戻す。
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
\displaystyle x\prime=\frac{ax+by+c}{s} \\
\displaystyle y\prime=\frac{dx+ey+f}{s}
\end{array}
\right.
\end{eqnarray}
\)
これを整理すると、
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
\displaystyle sx\prime=\frac{ax+by+c}{s} \\
\displaystyle sy\prime=\frac{dx+ey+f}{s} \\
\displaystyle s=gx+hy+1
\end{array}
\right.
\end{eqnarray}
\)
なんか、予想以上にキレイな感じになったね。
行列表現
見た目がキレイになったところで
これを行列として表現しなおす。
ほう。
以下のようになる。
\(
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}
\)
方程式がキレイにそろえられたから、
そのまま行列に表現を変えただけって感じだね。
まとめ
まとめだよ。
- 射影変換の方程式を変形。
- いい感じにキレイになった。
- キレイになった方程式を行列表現へ。
バックナンバーはこちら。
コメント