Если всё же доступна калибровка по шаблонам, то используя OpenCV, добиться качественных результатов вполне реально. Можно выбрать конкретную камеру (объектив):
cap = cv2.VideoCapture(CAM_ID) # Создание объекта камеры
# CAM_ID - id/path конкретной камеры
cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # Отключение встроенной автофокусировки
cap.set(cv2.CAP_PROP_FOCUS, CAM_FOCUS) # Мануальная фокусировка
# CAM_FOCUS - уровень фокуса
# Например может быть установлен
# на значение, найденное
# методом автофокусировки
Некоторые свойства, которые непосредственно влияют на изображение:
Останется сохранить установленные свойства для дальнейшего использования и провести калибровку камеры, после чего решение задачи будет идентично описанному в статье. Поскольку свойства сохранены для дальнейшего использования, то (по идее) параметры камеры не должны меняться.
Также широкая аудитория встречается с данной задачей достаточно редко. Как мне кажется, из задач близких к описываемой, чаще всего широкая аудитория встречается с дополненной реальностью (AR), для которой хоть и может использоваться OpenCV, но всё же имеется свой стек и свои технологии.
А узкая (специализированная) аудитория обычно имеет возможность использовать камеры без проблем с калибровкой.
Помимо гироскопа-акселерометра можно использовать кинематическую одометрию, например если камера установлена на мобильной платформе (роботе). И в целом существует множество методов "восстановления объёма" сцены по фотографиям передвигающейся камеры, в частности Visual SLAM (в различных реализациях)
Спасибо за комментарий! И правда не очень хорошие обстоятельства, хотя сама по себе задача определения параметров полёта самолёта по видео довольно интересная (и сложная).
Точные замеры погрешности не проводились/планировались, хотя потенциально это не плохая тема для будущей статьи.
В рамках подготовки данной статьи было выявлено (см. результаты решения частных случаев), что при нахождении точки с заданной в среднем погрешность была ниже, чем нахождение той же точки в общем случае.
Также про оценку погрешности и в целом оптимальности различных решений задачи PnP существуют статьи: A Consistently Fast and Globally Optimal Solution to the Perspective-n-Point Problem (2020) by G. Terzakis; M. Lourakis Accurate non-iterative O(n) solution to the PnP problem (2007) by F. Moreno-Noguer; V. Lepetit; P. Fua
Для различных задач могут использоваться разные методы. В общем случае, описанном в статье, при наличии неподвижной откалиброванной камеры, первым на ум приходит наиболее простой вариант: найти и замерить текущее время на двух кадрах, а затем вычислить (скорость равна расстоянию между координатами объекта на двух кадрах, делённому на прошедшее время между двумя кадрами; оно же ). Аналогично можно опираться не на , а на , например ограничив зону на изображении с заранее известным расстоянием в пространстве, как это делается на камерах контроля дорожного движения.
Однако данный метод рассчитывает не скорость в моменте, а среднюю скорость между кадрами, так что в некоторых прикладных задачах требуется расчёт ускорения, дополнительное предсказание движения/скорости объекта. Из-за этого же на результат может влиять количество кадров в секунду (FPS) и скорость обработки изображений.
Конкретно про ваш случай ответил в личных сообщениях.
Это так, увы...
Спасибо за комментарий!
Если всё же доступна калибровка по шаблонам, то используя OpenCV, добиться качественных результатов вполне реально. Можно выбрать конкретную камеру (объектив):
Настроить различные её свойства (см. документацию OpenCV о VideoCapture Properties), вроде фокуса, зума, экспозиции и других:
Некоторые свойства, которые непосредственно влияют на изображение:
Останется сохранить установленные свойства для дальнейшего использования и провести калибровку камеры, после чего решение задачи будет идентично описанному в статье. Поскольку свойства сохранены для дальнейшего использования, то (по идее) параметры камеры не должны меняться.
Также широкая аудитория встречается с данной задачей достаточно редко. Как мне кажется, из задач близких к описываемой, чаще всего широкая аудитория встречается с дополненной реальностью (AR), для которой хоть и может использоваться OpenCV, но всё же имеется свой стек и свои технологии.
А узкая (специализированная) аудитория обычно имеет возможность использовать камеры без проблем с калибровкой.
Так или иначе хорошее примечание, спасибо!
Спасибо за комментарий!
Помимо гироскопа-акселерометра можно использовать кинематическую одометрию, например если камера установлена на мобильной платформе (роботе). И в целом существует множество методов "восстановления объёма" сцены по фотографиям передвигающейся камеры, в частности Visual SLAM (в различных реализациях)
Спасибо за комментарий! Рекомендуемая вами статья и правда интересная
Спасибо за комментарий! И правда не очень хорошие обстоятельства, хотя сама по себе задача определения параметров полёта самолёта по видео довольно интересная (и сложная).
Спасибо за комментарий!
в среднем погрешность была ниже, чем нахождение той же точки в общем случае.
Точные замеры погрешности не проводились/планировались, хотя потенциально это не плохая тема для будущей статьи.
В рамках подготовки данной статьи было выявлено (см. результаты решения частных случаев), что при нахождении точки с заданной
Также про оценку погрешности и в целом оптимальности различных решений задачи PnP существуют статьи:
A Consistently Fast and Globally Optimal Solution to the Perspective-n-Point Problem (2020) by G. Terzakis; M. Lourakis
Accurate non-iterative O(n) solution to the PnP problem (2007) by F. Moreno-Noguer; V. Lepetit; P. Fua
Спасибо за комментарий!
и замерить текущее время
на двух кадрах, а затем вычислить
(скорость равна расстоянию между координатами объекта на двух кадрах, делённому на прошедшее время между двумя кадрами; оно же
). Аналогично можно опираться не на
, а на
, например ограничив зону на изображении с заранее известным расстоянием в пространстве, как это делается на камерах контроля дорожного движения.
Для различных задач могут использоваться разные методы. В общем случае, описанном в статье, при наличии неподвижной откалиброванной камеры, первым на ум приходит наиболее простой вариант: найти
Однако данный метод рассчитывает не скорость в моменте, а среднюю скорость между кадрами, так что в некоторых прикладных задачах требуется расчёт ускорения, дополнительное предсказание движения/скорости объекта. Из-за этого же на результат может влиять количество кадров в секунду (FPS) и скорость обработки изображений.
Конкретно про ваш случай ответил в личных сообщениях.
Спасибо за замечание! Ссылки исправил