Используйте фильтр Калмана для отслеживания положения объекта, но необходимо знать положение этого объекта в качестве входных данных фильтра КалманаЧто здесь происходит? - PullRequest
13 голосов
/ 20 января 2011

Я пытаюсь изучить, как использовать фильтр Калмана для отслеживания объекта (шара), движущегося в видеопоследовательности, поэтому, пожалуйста, объясните это мне, когда я ребенок.

  • С помощью некоторых алгоритмов (цветовой анализ, оптический поток ...) я могу получить двоичное изображение каждого видеокадра, в котором есть объект отслеживания (белые пиксели) и фон (черные пиксели) - > Я знаю размер объекта, центр тяжести объекта, положение объекта -> Просто нарисуйте ограничивающую рамку вокруг объекта -> Готово. Зачем мне здесь использовать фильтр Калмана?

  • Хорошо, кто-то сказал мне, что, поскольку я не могу обнаружить объект в каждом видеокадре из-за шума, мне нужно использовать фильтр Калмана для оценки положения объекта. Хорошо. Но, как я знаю, мне нужно предоставить вход для фильтра Калмана. Это предыдущее состояние и измерение.

    • предыдущее состояние (так что я думаю, что это позиция, скорость, ускорение ... объекта в предыдущем кадре) -> Хорошо, это нормально для меня.
    • измерение текущего состояния: вот что я не могу понять. Каким может быть измерение? - положение объекта в текущем кадре? Это забавно, потому что, если я знаю положение объекта, все, что мне нужно, это просто нарисовать простой ограничивающий прямоугольник (прямоугольник) вокруг объекта. Зачем мне здесь фильтр Калмана? Следовательно, невозможно принять положение объекта в текущем кадре в качестве значения измерения. - В статье «Отслеживание на основе фильтров Калмана в системе видеонаблюдения» говорится

      Основная роль блока фильтрации Калмана заключается в назначении отслеживания фильтр для каждого из измерений, поступающих в систему из блок анализа оптического потока.

      Если вы прочитаете полный текст статьи, вы увидите, что автор принимает максимальное количество больших двоичных объектов и минимальный размер больших двоичных объектов в качестве входных данных для фильтра Калмана. Как эти параметры можно использовать как измерение ?

Я думаю, что сейчас в курсе. Я хочу использовать фильтр Калмана для отслеживания положения объекта, но мне нужно знать положение этого объекта в качестве входных данных фильтра Калмана. Что происходит?

И еще 1 вопрос, я не понимаю термин «число фильтров Калмана». В видеопоследовательности, если есть 2 объекта, нужно отслеживать -> нужно использовать 2 фильтра Калмана? Это то, что это значит?

Ответы [ 6 ]

21 голосов
/ 20 января 2011

Вы не используете фильтр Калмана, чтобы дать вам начальную оценку чего-либо;Вы используете его, чтобы получить улучшенную оценку на основе ряда шумных оценок.

Чтобы упростить понимание, представьте, что вы измеряете что-то не динамическое, например высотувзрослогоВы измеряете один раз, но вы не уверены в точности результата, поэтому вы измеряете снова в течение 10 дней подряд, и каждое измерение немного отличается, скажем, с интервалом в несколько миллиметров.Итак, какое измерение вы должны выбрать в качестве наилучшего значения?Я думаю, что легко понять, что взятие среднего даст вам лучшую оценку истинного роста человека, чем использование какого-либо одного измерения.

ОК, но какое это имеет отношение к Кальману?фильтр?

Фильтр Калмана, в основном, принимает среднее значение из серии измерений, как указано выше, но для динамических систем .Например, предположим, что вы измеряете положение марафонца на гоночной трассе, используя информацию, предоставленную GPS + передатчиком, прикрепленным к бегуну.GPS дает вам одно чтение в минуту.Но эти показания неточны, и вы хотите улучшить свои знания о текущей позиции бегуна.Вы можете сделать это следующим образом:

Шаг 1) Используя последние несколько показаний, вы можете оценить скорость бегуна и определить, где он будет в любое время в будущем (это прогноз часть фильтра Калмана).

Шаг 2) Всякий раз, когда вы получаете новое показание GPS, делайте средневзвешенное значение показания и вашей оценки, полученной на шаге 1 (это обновление часть фильтра Калмана).Результатом средневзвешенного значения является новая оценка, которая лежит между прогнозируемой и измеренной позицией и является более точной, чем сама по себе.

Обратите внимание, что вы должны указать модель, которую вы хотите использовать в фильтре Калмана.предсказательная часть.В примере марафонца вы можете использовать модель с постоянной скоростью.

11 голосов
/ 20 января 2011

Цель фильтра Калмана состоит в том, чтобы уменьшить шум и другие неточности в ваших измерениях. В вашем случае, измерение - это позиция x, y объекта, который был сегментирован вне кадра. Если вы можете идеально сегментировать шарик и только шарик от фона для каждого кадра, вам не понадобится фильтр Калмана, поскольку ваши измерения фактически не содержат шума.

В большинстве случаев идеальные измерения не могут быть гарантированы по ряду причин (изменение освещения, изменение фона, других движущихся объектов и т. Д.), Поэтому необходимо найти способ фильтрации измерений для получения наилучшей оценки истинный след.

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

Модель может быть любой, которая моделирует систему, которую вы пытаетесь отслеживать. Обычная модель - это модель с постоянной скоростью, которая предполагает, что объект будет продолжать двигаться с той же скоростью, что и в предыдущей оценке. Это не означает, что эта модель не будет отслеживать что-либо с изменяющейся скоростью, поскольку измерения будут отражать изменение скорости и влиять на оценку.

Существует несколько способов решить проблему отслеживания нескольких объектов одновременно. Самый простой способ - использовать независимый фильтр Калмана для каждой дорожки. Вот где фильтр Калмана действительно начинает окупаться, потому что, если вы используете простой подход, состоящий только в использовании центроида ограничивающей рамки, что произойдет, если два объекта пересекаются друг с другом? Можете ли вы еще раз отличить, какой объект, который после того, как они отделяются? С фильтром Калмана у вас есть модель и прогноз, которые помогут сохранить правильность пути, когда другие объекты мешают.

Существуют также более продвинутые способы совместного отслеживания нескольких объектов, например JPDAF .

7 голосов
/ 20 января 2011

Джейсон дал хорошее начало тому, что такое фильтр Калмана.Что касается вашего вопроса о том, как бумага может использовать максимальное количество капель и минимальный размер капли, это в точности мощность фильтра Калмана.

Измерение не должно быть позицией, скоростьюили ускорение.Измерением может быть любая величина, которую вы можете наблюдать за один раз.Если вы можете определить модель, которая будет прогнозировать ваши измерения в следующий раз, учитывая текущее измерение, фильтр Калмана может помочь вам уменьшить шум.

Я бы посоветовал вам ознакомиться с более вводными материалами по обработке изображений и компьютерному зрению,Эти материалы почти всегда будут охватывать фильтр Калмана.

Вот курс SIGGRAPH по трекерам.Это не вводный, но должен дать вам более глубокий взгляд на тему.http://www.cs.unc.edu/~tracker/media/pdf/SIGGRAPH2001_CoursePack_08.pdf

0 голосов
/ 11 февраля 2016

У меня был этот вопрос несколько недель назад. Я надеюсь, что этот ответ поможет другим людям.

  • Если вы можете получить хорошую сегментацию в каждом кадре (весь шар), вам не нужно использовать фильтр Калмана. Но сегментация может дать вам набор несвязанных сгустков (только несколько частей шара). Проблема в том, чтобы знать, какие части (пятна) относятся к объекту или являются просто шумом. Используя фильтр Калмана, мы можем назначить капли около предполагаемой позиции как части объекта. Например. если радиус имеет радиус 10 пикселей, капли с расстоянием более 15 не должны рассматриваться как часть объекта.
  • Фильтр Калмана использует предыдущее состояние для прогнозирования текущего состояния. Но использует текущее измерение (текущее положение объекта) для улучшения следующего прогноза . Например. если транспортное средство находится в положении 10 (предыдущее состояние) и движется со скоростью 5 м / с, фильтр Калмана предсказывает следующую позицию в положении 15. Но если мы измерим положение объекта, мы обнаружим, что позиция 18. Чтобы улучшить оценку, фильтр Калмана обновляет скорость до 8 м / с.

Как итог, фильтр Калмана в основном используется для решения данных проблема ассоциации в отслеживании видео. Это также хорошо, чтобы оценить положение объекта, потому что он принимает во внимание шум в источник и в наблюдении.

И для вас последний вопрос, вы правы. Это соответствует количеству отслеживаемый объект (один фильтр Калмана на объект).

0 голосов
/ 24 января 2015

В случае, если вы можете найти мяч точно в каждом кадре, вам не нужен фильтр Калмана.То, что вы нашли какой-то блог, который, скорее всего, является мячом, не означает, что центр этого шарика будет идеальным центром шара.Думайте об этом как об ошибке измерения.Кроме того, если вы выбрали неправильный блог, использование фильтра Калмана поможет вам не доверять этому неправильному измерению.Как вы сказали ранее, если вы не можете найти мяч в кадре, вы также можете использовать фильтр, чтобы оценить, где он может быть.

Вот некоторые из матриц, которые вам понадобятся, и я думаю, что они будут для вас.Поскольку положение мяча по осям x и y не зависит, я думаю, что проще иметь два фильтра, по одному для каждого.Оба будут выглядеть примерно так:

x = [position;скорость] // Это выход фильтра P = [1, 0;0, 1] // Это неопределенность оценки, я не совсем уверен, с чего вам начинать, но она сойдет после того, как фильтр запустится.F = [1, дт;0,1], когда вы делаете x * F, это будет предсказывать следующее местоположение мяча.Обратите внимание, что это предполагает, что мяч продолжает двигаться с той же скоростью, что и раньше, и просто обновляет позицию.Q = [0,0;0, vSigma ^ 2] Это «шум процесса».Это одна из матриц, которые вы настраиваете, чтобы сделать фильтр преформ хорошо.В вашей системе скорость может измениться в любое время, но положение никогда не изменится, если скорость не изменила ее.Это смущает.Значение должно быть стандартным отклонением того, какими могут быть эти изменения скорости.z = [позиция в x или y] Это ваше измерение H = [1,0;0,0] Это то, как ваши измерения применяются к вашему текущему состоянию.Поскольку вы измеряете только позицию, у вас есть только 1 в первом ряду.R = [?] Я думаю, вам понадобится только скаляр для R, что является ошибкой в ​​ваших измерениях.

С этими матрицами вы сможете подключить их к формулам, которые есть везде для фильтров Калмана.

Несколько полезных вещей для чтения: Демонстрация фильтрации по Калману Еще одна отличная статья, прочитайте страницу, на которую ссылается третий абзац

0 голосов
/ 03 декабря 2011

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

...