Я хотел бы рассчитать угол обзора фотографии, сделанной смартфоном, чтобы упорядочить и оценить расстояние от объекта определенного размера.
Давайте сделаем расчет для Samsung S7, который имеетфокусное расстояние 26 мм ( источник ).
Согласно этому источнику , размер датчика составляет 1 / 2,6 ", что означает 5,5 мм в ширину.
Согласно Википедии , формула угла зрения: aov = 2*arctan(d / (2*f))
, где d
- ширина датчика, а f
- фокусное расстояние.
2*arctan(5.5 / (2*26))
даетугол обзора 12,1 °.
Мне кажется, что это очень маленький угол, поэтому я взял ручку и бумагу, чтобы вычислить расстояние от объекта:
![](https://i.stack.imgur.com/NN2CX.png)
Это дает tan(aov/2) = (s/2) / d
, поэтому d = (s/2) / tan(aov/2)
, где s
- размер объекта.
(1800/2) / tan(12.1°/2)
дает необходимое расстояние ... 8,51 метра, чтобы взятьполный человек (1,8 м).
Так что я думаю, что здесь действительно есть ошибка, но я не знаю где. Я перепроверил все мои вычисления иСпецификации источников.
Я написал скрипт Python для расчетов:
import math
subject_size = 1800
focale_length = 26
sensor_width = 5.5
angle_of_view = math.degrees(2 * math.atan(sensor_width/(2*focale_length)))
distance_from_subject = (subject_size/2) / (math.tan(math.radians(angle_of_view/2)))
print('angle of view: %0.2f°, distance from subject: %0.2fm' % (angle_of_view, distance_from_subject/1000))
# "angle of view: 12.64°, distance from subject: 8.51m"