Приблизительное фокусное расстояние для веб‑камер и мобильных телефонов

Здесь я расскажу, как, если не подходит калибровка или лень фотографировать шахматную доску, найти приблизительную оценку фокусного расстояния веб‑камеры или камеры мобильного телефона (то есть для камер, у которых фокусное расстояние фиксировано).

Казалось бы, чего проще — загляни в документацию своего ноутбука и узнаешь фокусное расстояние встроенной камеры. Но оказывается большинство компаний, в том числе и 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

Собственно говоря, всё. Теперь компьютерное зрение для вас открыто, потому как ваши малобюджетные камеры готовы для решения утилитарных задач.

CC BY-NC 4.0 Приблизительное фокусное расстояние для веб‑камер и мобильных телефонов, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

Добавить комментарий