バックナンバーはこちら。
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次元空間を地面平面に落とし込む(済)
- 一連の座標変換まとめ(済)
- 方程式の変形(済)
- 行列表現(済)
- アフィン変換との関係性(済)
- 係数の求め方(済)
- 係数の求め方(行列表現)(済)
- 射影変換の処理の流れ

「係数の求め方(行列表現)」というところまで終わっている。
射影変換の処理の流れ

おおよそ、理屈的な話は終わった感じかな。

そうだね。

とすると、実際にこれをプログラムとして組むわけだけど、
ちょっとイメージ沸かないなぁ・・・。

以下の手順を想定している。
- 画像の読み込み
- 変換元座標の確定
- 変換先座標の確定
- \(a~h\)の算出
- 射影変換行列の確定
- 射影変換
- 画像保存

言われてみれば、そんな感じか。
先に係数を算出しないと変換行列が確定しないもんね。
注意点

アフィン変換の時にまだら模様になる問題を覚えてる?

伸縮、回転をした際に、変換先に割り当てれない座標が出てくるから起きる問題だったと思うけど。

そうそう。

同じ問題が射影変換でも発生する。
よって、アフィン変換をアフィン逆変換として実施したように、
射影変換も実際のプログラムとしては射影逆変換として実施する。
まぁ、流れはアフィン逆変換をほぼ一緒だけどね。

とすると、
射影変換行列も逆行列として算出するってことか。

察しがいいね。
その通りだ。
この点、次回もう少し詳細に説明しよう。
まとめ

まとめだよ。
- 射影変換の処理の流れを説明。
- 注意点としては射影変換だとまだら模様問題が起きるので、実際には射影逆変換のアルゴリズムを使用する。
バックナンバーはこちら。
コメント