#opencv3.0 #kalman-filter
#opencv3.0 #kalman-filter
Вопрос:
Допустим, вы отслеживаете набор из 20 сегментов одинаковой длины, принадлежащих одной и той же 3D-плоскости.
Для визуализации представьте, что вы рисуете набор сегментов длиной 10 см случайным образом на листе бумаги. И заставьте кого-нибудь переместить этот лист перед камерой.
Допустим, эти сегменты представлены двумя точками A
и B
. Давайте предположим, что нам удается отслеживать A_t
и B_t
для всех сегментов. Отслеживаемые точки нестабильны от кадра к кадру, что приводит к случайному дрожанию, которое может быть устранено с помощью фильтра Калмана.
Мои вопросы касаются вектора состояния:
- Фильтр Калмана для
A
иB
для каждого сегмента (с 20 сегментами это приводит к 40 КФ) является очевидным решением, но оно выглядит слишком тяжелым (зная, что это должно выполняться в режиме реального времени). - Поскольку все отслеживаемые точки имеют одинаковые свойства (принадлежат одной и той же 3D-плоскости, имеют одинаковую длину), разве невозможно создать один большой KF со всеми этими переменными?
Спасибо.
Ответ №1:
- Время выполнения: имейте в виду, что уравнения Калмана включают умножение матриц и одну инверсию. Таким образом, наличие 40 состояний означает наличие некоторых матриц 40×40. Для вычисления этого всегда требуется больше времени, чем для запуска 40 фильтров с одним состоянием, где ваши матрицы равны 1×1 (скалярные). В любом случае, запуск большого фильтра имеет смысл, только если вы знаете о математической взаимосвязи между вашими состояниями (= корреляция), в противном случае его вывод будет таким же, как при запуске 40 фильтров с одним состоянием.
- С учетом предоставленной информации это действительно сложно определить. Например. если ваши сегменты всегда представляют собой полилинию, вы могли бы описать это по-другому, в отличие от того, чтобы ничего не знать о форме.