Соотношение между горизонтальным, вертикальным и диагональным полем зрения

Есть ли математическая связь между этими значениями? Если я знаю hFOV и vFOV, могу ли я рассчитать диагональное поле зрения без учета других значений, таких как фокусное расстояние и т. д.?

Моей первой мыслью было использовать теорему Пифагора, но, возможно, это неправильно.


person Shepard    schedule 07.07.2015    source источник


Ответы (1)


Физические величины, представляющие интерес, — это размер сенсора и фокусное расстояние. Последнее в модели камеры-обскуры представляет собой расстояние между центром камеры и плоскостью изображения. Следовательно, если вы обозначите с помощью f фокусное расстояние (в мм), W и H соответственно ширину и высоту датчика изображения (в мм) и предположите, что фокальная ось ортогональна плоскости изображения, с помощью простой тригонометрии это будет:

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

Обратите внимание, что если у вас есть размер сенсора и горизонтальное или вертикальное поле зрения, вы можете решить одно из первых двух уравнений для f и подставить его в третье, чтобы получить диагональное поле зрения.

Когда, как обычно, фокусное расстояние оценивается посредством калибровки камеры и выражается в пикселях, приведенные выше выражения нуждаются в некоторой адаптации.

Обозначим через K матрицу камеры 3x3, где кадр камеры имеет начало в центре камеры (точке фокуса), ось X ориентирована слева направо, ось Y сверху вниз и ось Z по направлению к сцене. Пусть Wp и Hp будут соответственно шириной и высотой изображения в пикселях.

  1. В простейшем случае фокальная ось ортогональна плоскости изображения (K12 = 0), пиксели квадратные (K11 = K22), главная точка находится в центре изображения (K13 = Wp/2; K23 = Hp/2). ). Тогда применяются те же уравнения, что и выше, с заменой W на Wp, H на Hp и f на K11.

  2. Несколько более сложный случай, как и выше, но с главной точкой вне центра. Затем просто складываются две стороны каждого угла FOV. Так, например:

    FOV_Horizontal = 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)

person Francesco Callari    schedule 07.07.2015