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

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

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

何を試すのか?

太郎くん
太郎くん

とりあえず、射影変換の処理にアフィン行列をツッコめば
射影変換はアフィン変換の拡張系ってのがわかるんだよね。

フクさん
フクさん

そうなのだが、
アフィン変換を試すだけだとちょっと物足りないな。

太郎くん
太郎くん

いやー、物事はシンプルが一番だと思うけどな・・・。

フクさん
フクさん

折角だから、射影変換と複数のアフィン変換を合成しよう。

射影変換とアフィン変換の合成

太郎くん
太郎くん

アフィン変換の時は、伸縮、移動、回転を合成したけど、
射影変換もそれが可能なの?

フクさん
フクさん

理屈上は可能だ。
例えば、射影変換、伸縮、移動、回転を合成できるはずだ。

太郎くん
太郎くん

できるはずだと言われても、どうすりゃいいのか・・・。

射影変換とアフィン変換の合成の式

フクさん
フクさん

合成は、単純に各行列の積を行えばOK。

太郎くん
太郎くん

アフィン変換の時がそんな感じだったけど、射影変換も同じノリで行けるってことか。

フクさん
フクさん

先ほどの、射影変換、伸縮、移動、回転を行う変換式を書き出してみよう。

\(
\begin{eqnarray}
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=&
\begin{bmatrix}
\cos(\theta)&-\sin(\theta)&0\\
\sin(\theta)&\cos(\theta)&0\\
0&0&1
\end{bmatrix}
\begin{bmatrix}
1&0&T_x\\
0&1&T_y\\
0&0&1
\end{bmatrix}\\
&\begin{bmatrix}
S_x&0&0\\
0&S_y&0\\
0&0&1
\end{bmatrix}
\begin{bmatrix}
a&b&c\\
d&e&f\\
g&h&1
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\end{eqnarray}
\)

太郎くん
太郎くん

アフィン変換のときもそうだったけど、
先に実施したい変換が後ろに来るんだったね。

フクさん
フクさん

そうそう。
理屈上はこれで変換の合成ができるはずだ。

まとめ

フクさん
フクさん

まとめだよ。

  • 射影変換のアフィン行列を入れてアフィン変換になるか試そうと画策。
  • せっかくなので、射影変換とアフィン変換を合成してみる。
  • 合成の組み立て方はアフィン変換の時と同じ。

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

コメント

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