透視変換で、元の長方形の縦横比を求めることはできますか?
現在OpenCVでの透視変換を勉強中です。
やりたいことは、机の上の長方形をデジカメで適当な角度から撮影した画像から、元の長方形を平面から見たように透視変換することです。
カメラ画像上の4隅座標はマウスクリックで求めます。
OpenCVの透視変換は、変換前と変換後の対応する4点の座標を与えることでできるのですが、現状変換後の長方形の縦横比は、実際に定規で測る以外の方法が分かっておりません。
似たような透視変換に関する質問が下記にありました。
「透視投影された平面を正面から見たように変換したい」
http://oshiete.goo.ne.jp/qa/3685711.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 …
何か手段はあると思うのですが、上記の一般式から導けるのでしょうか?
それとも別のアプローチを考えた方がよいのでしょうか?
前提条件は下記の通りです。
・対象物は長方形(縦横比未知)
・カメラ画像の4点は既知
・レンズ歪みは考慮しない
初歩的な質問かも知れませんが、ご教授いただければ幸いです。
No.1ベストアンサー
- 回答日時:
レンズの歪みを考慮しないという事なので、
光軸と像面が垂直で、かつ像面のx軸、y軸が直交し、さらに像面の縦横の比率も等しいと仮定すると、
上記のA~Hの未知数には更に以下の3つの制約条件を課す事が出来ます。
(1)(A*D+B*E)*(F*F-C*C)+C*F*(A*A+B*B-D*D-E*E)=0
(2)A*D+B*E-C*(D*G+E*H)=0
(3)A*D+B*E-F*(A*G+B*H)=0
従って、未知数が9個(A~Hとy)に対して式が8+3=11個になり、今度は条件過剰になります。
つまり、レンズ歪みが完全に校正されていると仮定すれば、原理的には長方形の点は3つあれば十分という事になります。
ただし(1)(2)(3)はA~Hについて非線形なので、解くためには工夫がいるかもしれません。
ご教授ありがとうございました。
実際に既知のX1-X4,Y1-Y4,x1-x4,y1-y4からA-Hを求めそれを教えていただいた
3式に代入したところ、0になりました。
あとは、式を変換してyを求められるよう計算をがんばってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 場合の数、確率 45 (浜松医科大学) 1 2023/07/29 13:52
- 数学 ハイネボレルの被覆定理、内田伏一著 「集合と位相」定理22.1 1 2022/07/07 10:49
- 数学 写真の図は中心(a,b)半径rの円とその円周上の(x1,y1)における接線lと円の中心とlを結ぶ任意 4 2023/08/08 16:20
- 数学 線形代数の対称行列についての問題がわからないです。 2 2023/01/08 14:59
- C言語・C++・C# ある線が円の範囲に入っているかの計算 1 2022/12/07 16:14
- 数学 数学直線の方程式とベクトル方程式について 直線の方程式で 点(x1,y1)を通り、直線ax+by+c 1 2022/08/12 12:13
- 数学 数学(ベクトル) 単位ベクトルの一次結合で一般の空間ベクトルは表せる という式なのですがなぜ 「x1 3 2023/04/10 01:24
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- 数学 x1+3x2+2x3=4 2x1+x2-3x3=2 -5x1+5x2+18x3=a 次の連立1次方程 2 2023/07/02 03:15
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
5進法を10進法への直し方
-
50以下は“50”も入るのですか?
-
偏微分の記号をタイプするため...
-
Excel 16進数
-
ヤコビアンが0になってしまう場...
-
ヤコビアン(関数行列式)につ...
-
HEX2BIN関数の使い方。
-
8進数から2進数に変換の
-
=(イコール)の上下に点々があ...
-
8進数から16進数 16進数から8進数
-
16進小数0.Cを10進数小数に変換...
-
デジタル信号処理の問題です。...
-
進数の小数点をどう変換するのか
-
2進数の1010は、10進数ではいく...
-
不均一分散の回帰分析に適した...
-
ACアダプターの消費電力の件
-
「じじょう」が正しい読み方?
-
一次要素(1/(s+a)のn次の逆ラプ...
-
2進数の0.101101101101・・・...
-
dBm/HzからdBm/MHzへの単位変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
50以下は“50”も入るのですか?
-
5進法を10進法への直し方
-
16進小数0.Cを10進数小数に変換...
-
Excel 16進数
-
HEX2BIN関数の使い方。
-
8進数から16進数 16進数から8進数
-
1分45秒75で289,995円稼ぐA君が...
-
「じじょう」が正しい読み方?
-
偏微分の記号をタイプするため...
-
dBm/HzからdBm/MHzへの単位変換
-
n進法→m進法への変換
-
EXCELで10進数表記をB...
-
dBm→dBμV/mの換算について
-
10進数の50を2進数で表すといく...
-
ヤコビアンが0になってしまう場...
-
算数計算 大至急お願いします
-
ACアダプターの消費電力の件
-
幾何と代数は同じ数学でしょうか
-
フーリエ変換・逆変換の虚数成...
-
二進数の循環小数を十進数に変...
おすすめ情報