MATLAB,Python,Scilab,Julia比較 第3章 その111【射影変換、アフィン変換合成③】

MATLAB,Python,Scilab,Julia比較 第3章 その111【射影変換、アフィン変換合成③】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その111【射影変換、アフィン変換合成③】

バックナンバーはこちら。
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か。

フクさん
フクさん

そうそう。
ここらへんの証明は以下で実施済みだ。
忘れているならば、復習しておくと良いだろう。

まとめ

フクさん
フクさん

まとめだよ。

  • 今回の射影変換のアルゴリズムは射影逆変換。
  • これに伴い、渡す行列は逆行列。
  • 逆行列を個別に渡す場合は、処理したい順に変換行列を渡す。
    • これについてはアフィン変換の時に証明済み。

バックナンバーはこちら。

コメント

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