如果之前有人问过,我很抱歉,但我找不到我的问题的正确答案。
为了更好地理解,让我简要解释一下我的问题的背景
语境
我有两个图像(A 和 B),上面有非平面对象。我希望能够从 A 获取像素 pA 的坐标并将其投影到 B 中。由于我的场景不是平面的,所以我不能使用单应性。我要做的是首先将我的像素 pA 投影到 3D 世界中,然后将结果投影到图像 B 中以获得 pB。pA (2D) -> pWorld (3D) -> pB (2D)。幸运的是,我知道 pworld 的坐标 z。我的问题涉及第一步 pA (2D) -> pWorld (3D)。
问题
如何将我的二维点 pA (u,v) 投影到世界中 (pWorld=(X,Y,Z)),给出 Z?我还有相机的外在矩阵 Rt (3x4) 和内在矩阵 K (3x3)。
我试过的
我知道 :
s*(u v 1)' = K * Rt * (X Y Z)' [1]
s 是尺度。但我想有相反的过程, Z 被给出。就像是:
(X Y) = SOMETHING * (u v)
我可以重写 [1] 得到
s*(u v 1/s 1/s)' = G * (X Y Z 1)'
与 G = (l1 l2 l3 l4) (l 表示线)
l1 = (K*Rt) 的第一行
l2 = (K*Rt) 的第二行
l3 = 0 0 1/Z 0
l4 = 0 0 0 1
G 是可逆的,然后我可以有
(X Y Z 1)' = inv(G) * (us vs 1 1)'
但我不能使用它,因为我不知道规模。我想我对这个规模的事情有点困惑。我知道通常我们会正常化以摆脱它,但在这里,我不能。
也许这不是继续的好方法。如果有人能解释我的好方法,我会很高兴听到它。
先感谢您。