2016-05-31 17 views
0

「ワープ」された元の画像があります。誰かがワープされた画像に元の画像から与えられた点が現れる場所を計算するために数学を手伝ってもらえますか?ワープされた2次元画像に点を配置する

私は内部に矩形の画像を持っています。私はフラットなイメージのどこでポイントA、B、C、D、E、Fがどこにあるのか知っています。

+------------------------------------------------+ 
|            | 
|   A      B    | 
|   +-------------------+    | 
|   |     |    | 
|   |  •F   |    | 
|   |     |    | 
|   |     |    | 
|   |     |    | 
|   | •E    |    | 
|   +-------------------+    | 
|   C      D    | 
|            | 
+------------------------------------------------+ 

新しい画像(A ')は、カメラのセットアップが不完全で画像の歪みがあるために作成されました。私は今、A '、B'、C'D '、E'、F 'を持っています。

必ずしもイメージを「ひっくり返す」必要はありません。ポイントが終了した新しい座標空間に座標を入れたいだけです。私はA、B、C、D、E、F、A '、B'、C '、D'、E '(それぞれの画像で)がどこで新しいE'ポイントはイメージにあるはずですか?

私はこれが3D行列変換だと思っていますが、数学は私を超えており、私は(E ')の新しい座標を求めるだけの方程式を理解しようとしています。私は技術的には、2D空間上に3D空間を介して投影された2Dオブジェクトであると思います。

+------------------------------------------------+ 
|            | 
|   A'          | 
|   +---------   B'    | 
|   |  -----------+    | 
|   |     |    | 
|   |  •F'   |    | 
|   |     |    | 
|   |     |    | 
|   |     |    | 
|   | •E'    |    | 
|    |   -------+    | 
|    +------------  D'   | 
|   C'         | 
|            | 
+------------------------------------------------+ 

別のポイント(GとG ')を追加する必要がある場合は、E'を解決するために追加できます。

私が理解できることは、一連の連立方程式を解くことですが、E '(x、y)を解くためにはいくつの "既知"が必要であるかわかりません。

私はiOS(Objective C)でこれをやっていますが、実際のコーディングにはあまり関心がありません。ソリューションマトリックスを見つけようとしています。

答えて

1

この変換は、(2Dは遠近効果と2dに)8つの係数(hからa)を用いて記述することができる、いわゆるホモグラフィである:

X = (a.x + b.y + c)/(g.x + h.y + 1) 
Y = (d.x + e.y + f)/(g.x + h.y + 1) 

簡単にこれらの方程式を線形化することができます。

a.x + b.y + c     - g.x.X - h.y.X = X 
       d.x + e.y + f - g.x.Y - h.y.Y = Y 

あなたは4点の8つの未知数であなたに8つの方程式を与える(四隅)を、取ることによって、それらを解決し、そこから何か新しいポイントを変換することができます。

ホモグラフィの逆数もホモグラフィであるため、この解像度を2つの方法(直立した歪みまたは逆向き)で適用できます。あなたが探している未知の座標が上記の開発で(X, Y)(x, y)ではなく)と表示されることを確認してください。

0

perspective transformationsが必要です。

Anti-Grain Geometry libraryexe example)には、透視変換の実装があります(任意の凸四角形の四角形へのマッピング、またはその逆)。 agg_trans_perspective

あなたは(あなたのポイントA, B, C, D, A', B', C', D'を使用して)透視変換の行列を計算し、その後、別の(E to E'またはE' to E)に1つのクワッドから座標をマップするためにそれを適用することができます。

関連する問題