透視変換で、元の長方形の縦横比は求まりますか?
透視変換で、元の長方形の縦横比を求めることはできますか?
現在OpenCVでの透視変換を勉強中です。
やりたいことは、机の上の長方形をデジカメで適当な角度から撮影した画像から、元の長方形を平面から見たように透視変換することです。
カメラ画像上の4隅座標はマウスクリックで求めます。
OpenCVの透視変換は、変換前と変換後の対応する4点の座標を与えることでできるのですが、現状変換後の長方形の縦横比は、実際に定規で測る以外の方法が分かっておりません。
似たような透視変換に関する質問が下記にありました。
「透視投影された平面を正面から見たように変換したい」
http://okwave.jp/qa/q3685711.html
回答の中で、透視変換の一般式について下記の記述がありました。
==ここから==================
変換前の4点の座標を(X1,Y1)(X2,Y2)(X3,Y3)(X4,Y4)とし、変換後の4点の座標を(x1,y1)(x2,y2)(x3,y3)(x4,y4)とすると、連立方程式は次のようになります。
X1*A + Y1*B + C - x1*X1*G - x1*Y1*H = x1
X1*D + Y1*E + F - y1*X1*G - y1*Y1*H = y1
X2*A + Y2*B + C - x2*X2*G - x2*Y2*H = x2
X2*D + Y2*E + F - y2*X2*G - y2*Y2*H = y2
X3*A + Y3*B + C - x3*X3*G - x3*Y3*H = x3
X3*D + Y3*E + F - y3*X3*G - y3*Y3*H = y3
X4*A + Y4*B + C - x4*X4*G - x4*Y4*H = x4
X4*D + Y4*E + F - y4*X4*G - y4*Y4*H = y4
==ここまで==================
ここで、
x1 = x2 = 0 (原点)
y1 = y4 = 0 (原点)
x3 = x4 = 100(仮に)
y2 = y3 = y (求めたい値)
とすると未知の値がA~Hとyの9つになってしまいます。
与えられる連立方程式が8つなので、yを求めることはできないのでしょうか?
iPhoneアプリのJotNotなどが私のやりたいことが出来るようなので、
「JotNotが、iPhoneのカメラを文書スキャナーにする」
http://jp.techcrunch.com/archives/20090317jotnot-turns-your-iphones-camera-into-a-document-scanner/
何か手段はあると思うのですが、上記の一般式から導けるのでしょうか?
それとも別のアプローチを考えた方がよいのでしょうか?
前提条件は下記の通りです。
・対象物は長方形(縦横比未知)
・カメラ画像の4点は既知
・レンズ歪みは考慮しない
初歩的な質問かも知れませんが、ご教授いただければ幸いです。
お礼
早速のご回答ありがとうございました。 >t=e^xとおけばe^-x=1/t 置換して考えればよかったのですね。 おかげさまで、ハイパボリックを使用せず表すことができました。 重ねてありがとうございました。