Matrix 从投影矩阵获取焦距和焦点
我有一个4x4投影矩阵Matrix 从投影矩阵获取焦距和焦点,matrix,graphics,computer-vision,camera-calibration,Matrix,Graphics,Computer Vision,Camera Calibration,我有一个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,
(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)
我想从这个矩阵中获得焦点和焦距。来自幻灯片4和5:
焦距只是矩阵中的第一个元素(m11
)
然而,焦点不能单独从该矩阵中提取-您需要摄像机方向D
和位置p
。一旦有了它们,只需执行P+D*m11
即可获得焦点。来自幻灯片4和5:
焦距只是矩阵中的第一个元素(m11
)
然而,焦点不能单独从该矩阵中提取-您需要摄像机方向
D
和位置p
。一旦有了它们,只需执行P+D*m11
即可获得焦点。相机的位置是3D点,而焦点是2D点。我对相机的位置感到困惑camera@andre为什么你认为焦点是二维的?这也是一个3D点。恢复一篇旧文章,但这让我明白了:这并没有说e分子中的1应该是视口宽度的一半。如果你在使用OpenGL,这是可行的,因为视口是[-1,1]x[-1,1],所以一半的宽度实际上是1,但是如果你试图推导真实世界相机的焦距,公式确实是m11=1/tan(FOV/2)
,但是FOV=2*arctan(传感器半宽/焦距)
,所以最后焦距=m11*传感器半宽度。请注意,传感器宽度和焦距的单位是相同的。相机的位置是3D点,而焦点是2D点。我对相机的位置感到困惑camera@andre为什么你认为焦点是二维的?这也是一个3D点。恢复一篇旧文章,但这让我明白了:这并没有说e分子中的1应该是视口宽度的一半。如果你在使用OpenGL,这是可行的,因为视口是[-1,1]x[-1,1],所以一半的宽度实际上是1,但是如果你试图推导真实世界相机的焦距,公式确实是m11=1/tan(FOV/2)
,但是FOV=2*arctan(传感器半宽/焦距)
,所以最后焦距=m11*传感器半宽度。注意传感器宽度和焦距的单位相同。