Мне кажется, я понимаю, что вы имеете в виду - вы хотите рассчитать, насколько широко изображение в реальных единицах измерения?
Если вы знаете угол поля зрения f
и расстояние доцель d
, вы можете вычислить ширину w
плоскости, видимой на этом расстоянии, с небольшим триггером.
<------------------w-------------------->
*****************************************
* ^ * <-----o------> *
* | * *
* | * *
* | * *
* | * *
* | * *
* | * *
* d * *
* | * *
* | * *
* | * *
* | * *
* | * f/2 *
* | * *
* | * *
* v * *
* * *
* * *
***
*
Итак, помните старую школу SOH CAH TOA?tan(angle) = opposite / adjacent
.Мы хотим вычислить противоположный размер o
, и мы знаем, что смежный равен d
, а угол равен f/2
, поэтому мы получаем o = tan(f/2) * d
o
, равный половине ширины,поэтому мы удваиваем его, чтобы получить наш окончательный расчет w = d * tan(f/2) * 2
Итак, теперь вы знаете реальную ширину w
плоскости d
единиц из камеры, и вы знаете, что ваше изображение *Ширина 1022 * пикселей, число пикселей на единицу просто p/w
Единственная проблема, которая остается, - это вычисление угла поля зрения f
из фокусного расстояния объектива - это немного более специализировано,Это зависит от камеры, особенно от размера датчика изображения.Вы можете создать таблицу для многих популярных камер здесь http://www.howardedin.com/articles/fov.html.
Если вам известен размер датчика изображения или вы используете пленочные негативы 36 мм x 24 мм, вы можете использовать эту формулу для расчетаFOV для «нормальной» прямолинейной линзы:
fieldOfView = 2 * arctan (sensorWidth / (2 * focalLength))