Здесь я расскажу, как, если не подходит калибровка или лень фотографировать шахматную доску, найти приблизительную оценку фокусного расстояния веб‑камеры или камеры мобильного телефона (то есть для камер, у которых фокусное расстояние фиксировано).
Казалось бы, чего проще — загляни в документацию своего ноутбука и узнаешь фокусное расстояние встроенной камеры. Но оказывается большинство компаний, в том числе и Apple, не публикуют такие характеристики, как фокусное расстояние, размер объектива и т.д. и т.п. Порой, точное значение фокусного расстояния и не нужно, зачастую достаточно приблизительного значения в пикселях.
Конечно, можно просто использовать шахматную доску, сделать несколько снимков с различной ориентацией и найти внутренние параметры (фокусное расстояние, центр, коэффициенты искажения объектива) камеры. Но работая дома, потягивая кофе в прекрасный весенний день самоизоляции Covid-19, это не та идея, которая должна вдохновлять. Однако, лень — великая творческая сила, развивающая умственный аппарат.
Если хорошенько подумать, то для камер с фиксированным фокусным расстоянием его оценку можно сделать без всех этих хлопот. Но прежде чем объяснять эту мето́ду необходимо немного теории.
Фокусное расстояние, поле зрения (FOV) и размер фоточувствительной матрицы
Ниже, на рисунке, показано соотношение между фокусным расстоянием камеры, полем зрения и размером фоточувствительной матрицы.
Используя базовые положения тригонометрии, можно сделать вывод, что поле зрения (\alpha) связано с размером фоточувствительной матрицы (w) и фокусным расстоянием (f) следующим уравнением:
\alpha = 2 \tan^{-1} \dfrac{w}{2f},
которое можно переписать как:
f = \dfrac{w}{2} \cot \dfrac{\alpha}{2}
На основании этого уравнения, если известна ширина изображения w и поле зрения \alpha, можно рассчитать фокусное расстояние f в пикселях.
Рассчитаем фокусное расстояние, используя ширину изображения и предполагая поле зрения
Если подумать, то поле зрения большинства веб‑камер должно быть приблизительно одинаковым. Во время селфи вы находитесь на вполне предполагаемом расстоянии от объектива камеры (около полуметра) и ваше лицо будет оптимального размера (не слишком большим и не слишком маленький).
Горизонтальное поле зрения многих веб‑камер и мобильных телефонов составляет от 50 до 70 градусов.
Теперь, задавая диапазон \alpha в вышеприведенное уравнение, можно сказать, что фокусное расстояние, связанное с шириной изображения, находится в следующих границах.
0.7 w \leq f \leq w
Такую приблизительную оценку не следует использовать в приложениях, где требуется точность, но она задаёт практическое правило, которое полезно, даже если вы используете точную калибровку. Например, если ваша веб-камера имеет разрешение 1280 × 720 и ваша процедура калибровки показывает фокусное расстояние между 1100 и 1300, то, вероятно, измеренное вами фокусное расстояние, будет правильным. Но если найденное фокусное расстояние составляет 12 500, то, скорее всего, вы где-то ошиблись или имеете дело с каким-то экзотическим объективом.
Горизонтальное поле зрения (HFOV), вертикальное поле (VFOV) и диагональное поле зрения (DFOV)
Теперь предположим, что у вас есть дополнительная информация о вашей камере. Например, спецификация камеры Logitech C920 гласит, что она имеет поле зрения 78 градусов. Вы спешите вставить это число в уравнение, о котором только что узнали, но немного сбиты с толку.
Для вас очевидно, что, поскольку соотношение сторон 16 : 9, то горизонтальное поле зрения больше, чем вертикальное. Какое из них нам нужно? — Ни какое. В спецификации указано диагональное поле зрения (DFOV). DFOV (см. Рисунок ниже) — это угол диагонали фоточувствительной матрицы камеры, проходящей по центру объектива.
Так что, если вы используете FOV, указанный производителем вашей камеры, то должны использовать следующую формулу
f = \dfrac{d}{2} \cot \dfrac{\alpha}{2},
где d = \sqrt{w^2 + h^2} — длина диагонали.
Как найти горизонтальное (HFOV) и вертикальное (VFOV) поля зрения, зная диагональное поле зрения (DFOV)
Зная диагональное поле зрения DFOV (\alpha) можно найти горизонтальное (\alpha_H) и вертикальное (\alpha_V) поля зрения, используя следующие формулы (полученные по этой
\alpha_H = 2 \tan^{-1} \lbrack \tan( \alpha ) \cos(\tan^{-1} \dfrac{h}{w} ) \rbrack,
\alpha_V = 2 \tan^{-1} \lbrack \tan( \alpha ) \sin( \tan^{-1} \dfrac{h}{w} ) \rbrack
Собственно говоря, всё. Теперь компьютерное зрениеએ для вас открыто, потому как ваши малобюджетные камеры готовы для решения утилитарных задач.
Приблизительное фокусное расстояние для веб‑камер и мобильных телефонов, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Респект и уважуха