【问题标题】:Getting focal length and focal point from a projection matrix从投影矩阵获取焦距和焦点
【发布时间】:2018-02-14 23:13:18
【问题描述】:

我有一个 4x4 投影矩阵

(SCNMatrix4) 
   s = (m11 = 1.83226573, 
   m12 = 0, 
   m13 = 0, 
   m14 = 0,
   m21 = 0,
   m22 = 2.44078445,
   m23 = 0,
   m24 = 0,
   m31 = -0.00576340035, 
   m32 = -0.0016724075, 
   m33 = -1.00019991, 
   m34 = -1, 
   m41 = 0, 
   m42 = 0, 
   m43 = -0.20002, 
   m44 = 0)

我想从这个矩阵中得到焦点和焦距。

【问题讨论】:

    标签: matrix graphics computer-vision camera-calibration


    【解决方案1】:

    来自this GDC presentation 的幻灯片 4 和 5:

    焦距只是矩阵中的第一个元素 (m11)。

    然而,焦点不能单独从这个矩阵中提取 - 你需要相机方向 D位置 @987654326 @。拥有它们后,只需执行P + D * m11 即可获得焦点。

    【讨论】:

    • 相机的位置是3D点,焦点是2D点。我对相机的位置感到困惑
    • @andre 你为什么认为焦点是二维的?它也是一个 3D 点。
    • 恢复旧帖子,但这让我明白了:这并没有说明 e 分子中的 1 应该是视口宽度的一半。如果你在做 OpenGL,这是可行的,因为视口是 [-1, 1] x [-1, 1] 所以宽度的一半确实是 1,但是如果你试图推断现实世界的焦距相机,公式确实是m11 = 1 / tan(FOV / 2),但是FOV = 2 * arctan(sensor_half_width / focal_length),所以到底是focal_length = m11 * sensor_half_width。请注意传感器宽度和焦距具有相同的单位。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2017-11-07
    • 1970-01-01
    • 2015-04-11
    • 2012-03-27
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多