Фильтр Калмана по набору точек, принадлежащих одному и тому же объекту?

#opencv3.0 #kalman-filter

#opencv3.0 #kalman-filter

Вопрос:

Допустим, вы отслеживаете набор из 20 сегментов одинаковой длины, принадлежащих одной и той же 3D-плоскости.

Для визуализации представьте, что вы рисуете набор сегментов длиной 10 см случайным образом на листе бумаги. И заставьте кого-нибудь переместить этот лист перед камерой.

Допустим, эти сегменты представлены двумя точками A и B . Давайте предположим, что нам удается отслеживать A_t и B_t для всех сегментов. Отслеживаемые точки нестабильны от кадра к кадру, что приводит к случайному дрожанию, которое может быть устранено с помощью фильтра Калмана.

Мои вопросы касаются вектора состояния:

  • Фильтр Калмана для A и B для каждого сегмента (с 20 сегментами это приводит к 40 КФ) является очевидным решением, но оно выглядит слишком тяжелым (зная, что это должно выполняться в режиме реального времени).
  • Поскольку все отслеживаемые точки имеют одинаковые свойства (принадлежат одной и той же 3D-плоскости, имеют одинаковую длину), разве невозможно создать один большой KF со всеми этими переменными?

Спасибо.

Ответ №1:

  1. Время выполнения: имейте в виду, что уравнения Калмана включают умножение матриц и одну инверсию. Таким образом, наличие 40 состояний означает наличие некоторых матриц 40×40. Для вычисления этого всегда требуется больше времени, чем для запуска 40 фильтров с одним состоянием, где ваши матрицы равны 1×1 (скалярные). В любом случае, запуск большого фильтра имеет смысл, только если вы знаете о математической взаимосвязи между вашими состояниями (= корреляция), в противном случае его вывод будет таким же, как при запуске 40 фильтров с одним состоянием.
  2. С учетом предоставленной информации это действительно сложно определить. Например. если ваши сегменты всегда представляют собой полилинию, вы могли бы описать это по-другому, в отличие от того, чтобы ничего не знать о форме.