バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
前回からアフィン変換の話に突入。
今回はアフィン変換で何ができるか?
という話になる。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
アフィン変換でなにができるのか?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
アフィン変換が座標変換という話自体は分かった気もするけど、
具体的にどういうことができるの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
できるこは、以下になるな。
- 伸縮
- 移動
- 回転
- 剪断
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
上記を組み合わせることも可能だ。
例えば、X軸方向に拡大した上で、Y軸方向へ移動し、中央の原点を起点に回転とか。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
剪断ってなんだ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
長方形な画像を平行四辺形な感じに変換するやつだな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
よくわからんが、斜めになるような感じか??
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
その認識でOKだ。
アフィン変換の具体例
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
うーん、もっとこう具体的な結果みたいなのがあるとイメージ沸きそうなんだけど・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
ならば、このアニメーションgifとかを見てもらった方が良いかもね。
X軸伸縮+Y軸伸縮+回転
![犬と自転車-X軸伸縮Y軸伸縮回転アフィン変換](https://www.simulationroom999.com/blog/wp-content/uploads/2023/09/02_犬と自転車-X軸伸縮Y軸伸縮回転アフィン変換.gif)
X軸伸縮+Y軸移動+回転
![犬と自転車-X軸伸縮Y軸移動回転アフィン変換](https://www.simulationroom999.com/blog/wp-content/uploads/2023/09/03_犬と自転車-X軸伸縮Y軸移動回転アフィン変換.gif)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
恒例の「犬と自転車」の画像だけど、すげぇことになってるな。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
こういったことを簡単に実現してくれるのがアフィン変換ってことになる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(こいつの言う「簡単」は本当に簡単なのか?)
数式的な話
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
というわけでそろそろ数式的な話に入る。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
数式かぁ・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
アフィン変換の基本式は以下になる。
\(
\begin{eqnarray}
x\prime=ax+bx+T_x \\
y\prime=cx+dy+T_y
\end{eqnarray}
\)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
これを行列で表現しなおす。
\(
\begin{bmatrix}
x\prime \\
y\prime
\end{bmatrix}=
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}+
\begin{bmatrix}
T_x \\
T_y
\end{bmatrix}
\)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
まぁ、行列と言っても、さっきの方程式を書き換えてるだけだから、
意味としては全く一緒だね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/びっくりフクロウ.png)
これをさらに変形するのだが、そこは次回説明!
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(また何かいらんことする気か・・・。)
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- アフィン変換でなにができるのかを確認。
- 伸縮、移動、回転、剪断が可能。
- アニメーションgifでアフィン変換のイメージを見てみた。
- 数式的な解釈の確認。
バックナンバーはこちら。
コメント