水平,垂直和对角线视场之间的关系

时间:2015-07-07 00:02:38

标签: camera computer-vision video-capture fieldofview

这些值之间是否存在数学关系?如果我知道hFOV和vFOV可以计算对角线FOV而不涉及焦距等其他值吗?

我的第一个想法是使用毕达哥拉斯定理,但也许这是错误的。

1 个答案:

答案 0 :(得分:10)

感兴趣的物理量是传感器尺寸和焦距。后者在针孔相机模型中是相机中心和图像平面之间的距离。因此,如果用f表示焦距(以mm为单位),W和H分别表示图像传感器的宽度和高度(以mm为单位),并假设焦轴与图像平面正交,则通过简单的三角函数表示:

FOV_Horizontal = 2 * atan(W/2/f) = 2 * atan2(W/2, f)  radians
FOV_Vertical   = 2 * atan(H/2/f) = 2 * atan2(H/2, f)  radians
FOV_Diagonal   = 2 * atan2(sqrt(W^2 + H^2)/2, f)    radians

请注意,如果你有传感器大小和水平或垂直fov,你可以解决f的前两个方程之一,并将其​​插入第三个方程以得到对角线fov。

当通常通过相机校准估计焦距并且以像素表示时,上述表达式需要一些调整。

用K表示3x3相机矩阵,相机框的原点位于相机中心(焦点),X轴从左到右,Y轴从上到下,Z轴朝向场景。设Wp和Hp分别为图像的宽度和高度(以像素为单位)。

  1. 在最简单的情况下,焦轴与图像平面正交(K12 = 0),像素为方形(K11 = K22),主点位于图像中心(K13 = Wp / 2) ; K23 = Hp / 2)。然后应用与上述相同的方程式,用Wp替换W,用Hp替换H,用K11替换f。

  2. 如上所述,情况更复杂,但主要点偏离中心。然后,只需添加每个FOV角度的两侧。所以,例如:

    FOV_Horizo​​ntal = atan2(Wp / 2 - K13,K11)+ atan2(Wp / 2 + K13,K11)

  3. 如果像素不是正方形,则相同的表达式适用于FOV_vertical,但使用K22和Hp等。对角线有点棘手,因为您需要"转换"图像高度与宽度成相同的单位。使用"像素宽高比" PAR = K22 / K11用于此目的,因此:

    FOV_Diagonal = 2 * atan2(sqrt(Wp ^ 2 +(Hp / PAR)^ 2)/ 2,K11)

相关问题