从 3x4 矩阵到世界坐标的反投影

Back-projecting from 3x4 matrix to world coordianates

我有一个 3x4 投影矩阵 P 给定了世界坐标中的一个点(齐次)w =[x,y,z ,1], 将点投影到图像中 space; P*w=[x,y,w] 其中 [x/w,y/w] 是像素坐标,w 被解释为到图像平面的有符号距离。

我希望能够将像素取消投影回世界坐标(作为特定点的带距离的射线)。例如,反向投影像素 [0,0] 和 [width-1,height-1] 等以获得世界坐标中的视锥角。

我在 P 矩阵的底部添加了一个 [0,0,0,1] 向量,使其成为平方 4x4(齐次?)矩阵,然后我将其倒置。在我试过的几个例子中,逆矩阵似乎工作得很好——但我不明白为什么,或者它是否是一种有效的方法?谢谢!

你有方程 P w = x,其中 P 和 x 是已知的,你想求解 w。向量 w=[×,y,z,1] 只有 3 个未知数。最后一个值是一个常数,所以你只需要三个方程。如果您向 3×4 矩阵 P 添加额外的行 [0,0,0,1] 使其成为 4×4 并向向量 x 添加额外的行,即 [x,y,w,1]^T你承认 w 的最后一个分量是 1(实际上强制最后一个分量为 1),所以添加的新额外行根本没有改变任何东西,只是完成反转 P 所需的自由度。

您使用的是针孔模型。

也许这会帮助您了解正在发生的事情:

投影矩阵 M 按照方程 s.(u,v) = M (x,y,z,1)

如果你能得到 M 的反转,即 M^-1,例如 (M^-1)M = Identity,那么对我来说似乎很明显:

s.(u,v) = M (x,y,z,1)

<=> (M^-1).s.(u,v) = (M^-1).M.(x,y,z,1)

<=> (M^-1).s.(u,v) = 恒等式.(x,y,z,1)

<=>(M^-1).s.(u,v) = (x,y,z,1)

也就是说(M^-1)将任意一点从2D图像世界变换到3D世界

注意因子 's' 的存在,因为投影操作不是单射的:来自 3D 世界的多个点可以投影到同一个 2D 点。