画像を四角形に変形するプログラム(2) | 技術日誌

技術日誌

ここでは,電子工作,木工などの趣味での記録を書いています。
なお当初はKMK研究所のメインテーマであるSPSのノウハウを書いてきましたが,順次SPSノウハウのページに複製を作っていきます。

 前の記事では,変形するプログラムはできたものの,変形された画像の各辺が直線からずれるという問題が見出されました。そこで,変換式の_UU*_VVの項を√(_UU*_VV)にしてみました。これにも問題が生じました。これまでは,変換元,変換先の座標の左下を原点にするようシフトさせていました。それにより座標が負になるものが出てきて平方根でエラーとなってしまったのです。シフトさせた理由は,それにより変数の数が横軸,縦軸共にそれぞれ3個となり,行列で連立方程式を解くのに,行列のたすき掛けの方法を使えるからでした。今回は,平方根が使えるよう,シフトを止めてみました。変数がそれぞれの軸に対して4個になるので,連立方程式を解くのに余因子展開をする必要があり,ケアレスミスの入る余地が増えます。そこで,先ずは,前と同じ式で原点をシフトしないで計算して,前の同じ結果が得られるか試しました。変換式にはa, b, cに加えてdが,i, j, kに加えてl(エル)が加わりました。下に示すように,四角形の頂点#1, #2, #3, #4について,連立方程式を解いて求められたa, b, c, d, i, j, k, lを用いた“計算された値”と,“与えた値”(下図では「正しい値」)とを比較してみました。全て一致していることから求められたa, b, c, d, i, j, k, lが正しいことが確認されました。