バックナンバーはこちら。
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次元空間を地面平面に落とし込む(済)
- 一連の座標変換まとめ
- 方程式の変形
- 行列表現
- アフィン変換との関係性
- 係数の求め方
- 係数の求め方(行列表現)
- 射影変換の処理の流れ
「3次元空間を地面平面に落とし込む」というところまで終わっている。
一連の座標変換まとめ
これまでの一連の変換を再掲しよう。
元画像平面を3次元空間で表現
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
u=ax+by+c \\
v=dx+ey+f\\
w=gx+hy+i
\end{array}
\right.
\end{eqnarray}
\)
3次元空間を地面平面に落とし込む
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
\displaystyle x\prime=\frac{u}{w} \\
\displaystyle y\prime=\frac{v}{w}
\end{array}
\right.
\end{eqnarray}
\)
\(u,v,w\)を代入すると以下の式にできる。
\(
\begin{eqnarray}
\left\{
\begin{array}{l}
\displaystyle x\prime=\frac{ax+by+c}{gx+hy+i} \\
\displaystyle y\prime=\frac{dx+ey+f}{gx+hy+i}
\end{array}
\right.
\end{eqnarray}
\)
ようわからんが、変換式の大元が出てきたような気がする。
方程式の変形
そして、この方程式全体を\(i\)で割る。
そうすると、\(a/i,b/i,\dots,h/i\)というパラメータになるのだが、
元々何も決まってないパラメータだったので、
これらを新たな\(a,b,\dots,h\)とする。
これにより、以下の式になる。
\(
\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}
\)
なんかシレっとすげぇことしたような気がするぞ・・・。
でも、成立することもわかるでしょ?
まぁ、それは分かるかな。
ここでパラメータをa~iの9個からa~hの8個にしたのは後々効いてくる。
まとめ
まとめだよ。
- 射影変換を行う一連の座標変換再掲。
- 上記を代入やらしてまとめる。
- さらに、パラメータiで全体を割って変形。
- パラメータ数を9個から8個に減らす。これが後々効いてくる。
バックナンバーはこちら。
コメント