免责声明
我从来没有尝试过这个,所以要持保留态度。
CATRansform3D 是一个 4x4 矩阵,它对 3 维齐次向量 (4x1) 进行运算以生成相同类型的另一个向量。我假设渲染时,由 4x1 向量描述的对象的每个元素除以第四个元素,第三个元素仅用于确定哪些对象出现在哪个对象之上。假设这是正确的...
推理
findHomography 返回的 3x3 矩阵对 2 维齐次向量进行运算。这个过程可以分为 4 个步骤
- 单应性的第一列乘以 x
- 单应性的第二列乘以 y
- 单应性的第三列乘以 1
- 将所得的第一个和第二个向量元素除以第三个向量元素
您需要在 4x4 向量中复制此过程,其中我假设结果向量中的第三个元素对于您的目的来说毫无意义。
Solution
像这样构造你的矩阵(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 是满足的,因为齐次元素总是最后一个。这就是为什么“同质行”必须被挤到一行的原因。第3行的1是让向量的z分量不受干扰地通过。
以上所有内容都是以行主符号(如 openCV)完成的,以尽量避免混淆。您可以查看汤米的答案,看看转换为列专业的样子(您基本上只是转置它)。但请注意,目前汤米和我在如何构建矩阵方面存在分歧。