バックナンバーはこちら。
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{bmatrix}
x\prime \\
y\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}+
\begin{bmatrix}
T_x \\
T_y
\end{bmatrix}
\)
で、これを変形するんだっけ?
同次座標系
そうそう。
以下になる。
\(
\begin{bmatrix}
x\prime\\
y\prime\\
1
\end{bmatrix}=
\begin{bmatrix}
a & b & T_x\\
c & d & T_y\\
0 & 0 & 1
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
1
\end{bmatrix}
\)
なんか一個の行列にまとまったぞ!
この表現を同次座標系という。
またわからん用語が・・・。
入力の\(x,y,1\)の次数が同じって程度の意味合いだな。
例えば、今回のアフィン変換で言うと、以下のようにすべて一次式で表現できる座標系。
\(
\begin{eqnarray}
x\prime&=&ax+by+T_x \\
y\prime&=&cx+dy+T_x \\
1&=&0x+0y+1
\end{eqnarray}
\)
最後の\(1=0x+0y+1\)っていらなくない?
でも、それを許容することで一つの行列にまとめられるとも言える。
まぁ、アフィン変換だけの話だったらまとめなくても良いのだけど、
別の座標変換の兼ね合いで、同次座標系で表現しておいた方が都合が良いというのが本音だ。
つまり、アフィン変換以外の何かが裏で待ち構えてるってことか・・・。
まぁ、一個一個理解していけば、それほど難しくはない。
(すでにやべぇのだが・・・。)
そのままやるといろいろと問題が?
あとは、この数式を元にアフィン変換をやればOKなのかな?
そうなんだけど、
そのままやるといろいろ問題が起きるんだよね。
どんな問題?
座標変換先の空間が足りなくなったり、変換が満遍なくできなかったり。
よくわからん。
この点は次回説明しよう。
まとめ
まとめだよ。
- アフィン変換の数式の変形して同次座標系へ。
- この表現の方が、他の座標変換の時に生きる。
- このままやるといろいろ問題が起きる。
- 空間不足。
- 変換先が満遍なくならない。
バックナンバーはこちら。
コメント