糸巻き歪み・樽歪み・傾斜画像補正プログラムの逆のプログラム(2)印のつけ方 | 技術日誌

技術日誌

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

 「糸巻き歪み・樽歪み・傾斜画像補正プログラム」では,赤い点(1ピクセル)を4個または8個付ければ,それらが対応する長方形の位置になるように補正できました。それらの赤い点は補正後の4隅と上下端,左右端に位置するので問題はありませんでした。今回は変換元の8点と,変換後の8点を指定する必要があります。それらの点は画像の中にあるのは,変換後の画像中に残るので望ましくありません。そこで変換元の画像の外側までキャンバスを広げ,画像内に入らないように変換後の8点を指定することにしました。また,キャンバスを広げることにより,元画像の端がどこかプログラムで判定させるのがむずかしくなりました。そこで,元画像の8点も印をつけることにしました。画像の8点は緑とし,変換後の8点は赤で示すことにしました。変換元の座標は(x,y)で示し,変換後の座標は(X,Y)で示すことにしました。変換元の画像は長方形なので左下と右上の座標だけを決めれば他は決まってしまいます。変換式はx, y, X, Yで示さずに,u=x-x(1),v=y-y(1)とすると,ゼロとなる座標が増えるので方程式が少し簡単になります。

変換式は

u=aX+bX^2+cXY+dX^2Y+eXY^2+fY+gY^2+h

v=iX+jX^2+kXY+lX^2Y+mXY^2+nY+oY^2+p

となります。

 以降8点について方程式を立てたいと思います。変換式が2つ(上記),求める係数(a-p)が16個あるので,16元16連立方程式となります。