【入門】アフィン変換のプログラミングに向けて【数値計算】

【入門】アフィン変換のプログラミングに向けて【数値計算】 数値計算
【入門】アフィン変換のプログラミングに向けて【数値計算】

画像と同一形状の2次元配列に変換元座標配列を生成。

アフィン逆変換を一括でできるよう、
入力、出力の列ベクトルを拡張した形として行列にした。
これを再度、座標系の構成に直す。
イメージ的にはこんな感じ。

画像と同一形状の2次元配列に変換元座標配列を生成、アフィン逆変換で得られた変換元座標が以下だとすると、画像と同一形状のX軸変換座標とY軸変換座標を作成。

演算都合で1次元的にしたものを2次元平面に戻す作業になる。

変換元の座標系-1~1をピクセル位置に変換。

次は、「変換元の座標系-1~1をピクセル位置に変換。」
これも変換都合で変形したものを再度元に戻す作業。
演算都合にしたものを描画都合に直してる。
イメージ的には以下になる。

変換元の座標系-1~1をピクセル位置に変換、先の座標は以下の-1~1の座標系なので、ピクセルの座標系に変換。(-1,-1)を(1,1)へ、つまり+1すればOK、(-1,-1)~(1,1)という幅2の空間を(1,1) ~(1568,1376)の空間に変換、つまり(1568/2,1376/2)を掛ければOK。

元画像と変換元座標を元に変換先へコピー。

そして、「元画像と変換元座標を元に変換先へコピー。」
変換座標の情報を元に実際のピクセルコピー作業だ。

アフィン変換で変換座標は求めてあったが、まだピクセルコピーはしていない。
これをここで実施する。

変換元から変換先にコピーだと、まだら模様問題が発生するので、
変換元から変換先を特定して、漏れなくコピーする方式だ。
処理イメージは以下になる。

元画像と変換元座標を元に変換先へコピー、どこを参照しているか特定し、該当ピクセルを順番にコピー。変換元画像

これができれば、各ピクセル情報が確定するから画像として扱える状態になる。

その後の画像保存は従来と一緒だから割愛する。

まとめ

  • アフィン変換のプログラムの流れを確認。
  • 中心を0とした座標系。
  • アフィン変換を一括で行うための変形。
  • 元の座標系の戻す。
  • 元画像と変換元座標を元に変換先へコピー。

MATLAB、Python、Scilab、Julia比較ページはこちら

コメント

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