免責事項
私はこれを試したことがないので、塩の粒でそれを取る.
CATRansform3D は 4x4 マトリックスで、3 次元の同種ベクトル (4x1) を操作して、同じタイプの別のベクトルを生成します。レンダリングされると、4x1 ベクトルで表されるオブジェクトは、各要素が 4 番目の要素で分割され、3 番目の要素は、どのオブジェクトがどのオブジェクトの上に表示されるかを決定するためにのみ使用されると想定しています。これが正しいと仮定して...
推論
findHomography によって返される 3x3 行列は、2 次元の同次ベクトルで動作します。そのプロセスは4つのステップで考えることができます
- ホモグラフィの最初の列に x を掛けます
- ホモグラフィの 2 列目に y を掛けます。
- ホモグラフィの 3 列目に 1 を掛けます。
- 結果の 1 番目と 2 番目のベクトル要素は 3 番目で除算されます
このプロセスを 4x4 ベクトルで複製する必要があります。結果として得られるベクトルの 3 番目の要素は目的には意味がないと想定しています。
解決
このように行列を作成します (H はホモグラフィ行列です)
[H(0,0), H(0,1), 0, H(0,2),
H(1,0), H(1,1), 0, H(1,2),
0, 0, 1, 0
H(2,0), H(2,1), 0, H(2,2)]
これは明らかに 1、2、および 3 を満たします。均質要素は常に最後の要素であるため、4 が満たされます。そのため、1 行下に移動する必要がある場合は、「同種の行」を使用します。3 行目の 1 は、ベクトルの z 成分を無傷で通過させるためのものです。
上記のすべては、混乱を避けるために行優先表記 (openCV など) で行われます。Tommy's answer を見て、列メジャーへの変換がどのように見えるかを確認できます (基本的には転置するだけです)。ただし、現時点では、Tommy と私はマトリックスの作成方法について意見が分かれていることに注意してください。