针孔相机投影矩阵解释

时间:2015-05-23 17:44:31

标签: math graphics camera projection

enter image description here在阅读有关针孔相机的一些材料以及它们的投影矩阵如何设置后,我正试图解决附带的问题,我仍然不确定我是否理解所有数学。 在附加的问题中,当我将相机的COP移动到-2Zp时,据我所知,我基本上增加了相机的焦点视图,这基本上给了我相同的矩阵,只有现在第3行的第3个元素是1 / 3Zp而不是1 / Zp,这是正确的吗?

如果是这样,你将如何计算t的新位置,将其乘以我得到的新矩阵(0,Yp,2/3)T。是确保最后一个数字是1而不是2/3的解决方案,所以我得到(0,2Yp / 3,1)。有人可以解释在这种情况下均匀坐标是如何工作的吗?

除了c很清楚外,我还会得到一个正交投影。 有人可以帮助d节吗?

2 个答案:

答案 0 :(得分:1)

绘制图表可能会有所帮助。您可以通过忽略将所有内容都放在2D中的x坐标来简化操作。在这个简单的图中,为了找到点t的投影,在平面上,PP只需从针孔的位置到该点画一条线。这使得从应该投影每个点的图中很容易地计算出来。您可以使用它来检查矩阵中的计算结果。

你有一半的答案,如果我们在原点有一个针孔并且飞机距离3Zp,那么矩阵就会

    ( 1   0   0     0   )
M = ( 0   1   0     0   )
    ( 0   0   1/3Zp 0   )

仅当针孔位于原点时才有效。在部分a)它不是。

您需要做的是应用翻译。如果a)翻译所有内容,使COP2位于原点,则应用投影,然后应用翻译的反转。如果我们向M

添加第四行,那么工作会更容易
    ( 1   0    0      0 )
M = ( 0   1    0      0 )
    ( 0   0    1      0 )
    ( 0   0    1/3Zp  0 ) Note modified form.

沿z轴的距离d的平移由

给出
    ( 1   0   0   0 )
T = ( 0   1   0   0 )
    ( 0   0   1   d )
    ( 0   0   0   1 )

反过来只是

    ( 1   0   0   0 )
T'= ( 0   1   0   0 )
    ( 0   0   1  -d )
    ( 0   0   0   1 )

要获得最终投影矩阵

T' M T.

最后我们通过删除第三个坐标从4D(x,y,z,w)到3D(x,y,w)。您可以通过乘以3X4矩阵来完成此操作。

注意请参阅Transformation matrix section perspective projection以获取正确的透视投影形式。

为了使事物明确,让a = Zp。翻译是

    ( 1   0   0   0    )
T = ( 0   1   0   0    )
    ( 0   0   1   -2 a )
    ( 0   0   0   1    )

并且从原点到平面3Zp的投影是

    ( 1   0    0        0 )
M = ( 0   1    0        0 )
    ( 0   0    1        0 )
    ( 0   0    -1/(3a)  0 )

找到T'M T,结果是

    ( 1   0    0       0    )
N = ( 0   1    0       0    )
    ( 0   0   1/3    -2/3 a )
    ( 0   0  -1/(3a)  2/3   )

我们适用于我们的两点

    (  0  )   (  0  )    (  0  )
 N  (  Yp ) = (  Yp ) -> (  Yp )
    ( -a  )   ( -a  )    ( -a  )
    ( 1   )   (  1  )

    (  0  )   (  0     )    (  0      )
 N  (  Yp ) = (  Yp    ) -> (  3/4 Yp )
    ( -2a )   ( -4/3 a )    ( -a      )
    ( 1   )   (  4/3   )

在最后一步除以w的情况下,我们将(x,y,z)坐标放在平面z = -a = -Zp上。这些与我们从图中得到的结果一致。如果你想要你可以放弃N的第3行。

答案 1 :(得分:0)

好的,现在关于C和D. 在C中我假设如果你沿着Z轴移动COP到无穷大,你会得到一个正交投影。但我不确定矩阵是否会:

    ( 1   0    0    0 )
M = ( 0   1    0    0 )
    ( 0   0    0    0 )

    ( 1   0    0    0 )
M = ( 0   1    0    0 )
    ( 0   0    0    Zp )

由于DI没有想法,你需要以某种方式保持比率,以便以相同的方式投射t,我明白你必须选择PP的Z坐标作为新COP的函数,但是我&# 39;我不知道从哪里开始。