opengl 如何从摄像机的内禀矩阵计算摄像机的视场?

vulvrdjw  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(222)

通过摄像机标定得到了摄像机的内禀矩阵和畸变参数。
焦距的单位是像素,我猜。
那么,我如何计算视野(沿着y)?
这个公式对吗?

double fov_y = 2*atan(height/2/fy)*180/CV_PI;

我将使用它来参数

gluPerspective()
jyztefdp

jyztefdp1#

OpenCV有一个函数可以做到这一点。看看实现(在GitHub上提供),我们已经给出了一个尺寸为w x h的图像和一个相机矩阵:

用于视场的等式是:

o75abkj4

o75abkj42#

继续@mallwright的回答,下面是一段Python/numpy代码,用于根据图像分辨率和焦距(以像素为单位)计算视野:

import numpy as np

# Prepare

w, h = 1280, 720
fx, fy = 1027.3, 1026.9

# Go

fov_x = np.rad2deg(2 * np.arctan2(w, 2 * fx))
fov_y = np.rad2deg(2 * np.arctan2(h, 2 * fy))

print("Field of View (degrees):")
print(f"  {fov_x = :.1f}\N{DEGREE SIGN}")
print(f"  {fov_y = :.1f}\N{DEGREE SIGN}")

输出量:

Field of View (degrees):
  fov_x = 63.8°
  fov_y = 38.6°

请注意,这是假设主点位于图像的中心,并且没有失真,请参阅this answer

相关问题