Перейти к содержимому
Compvision.ru
ZlodeiBaal

Регрессивный(пространственно-временной) анализ в OpenCV

Recommended Posts

Задачка в принципе известная, её решение у меня даже есть на Delphi, но сейчас мне надо реализовать её через вижуал студию, а переписывать много кода - влом. По-сути сводится она к следующему: есть видеопоток, где дрожит камера, надо обнаруживать на фоне этого видеопотока движущиеся объекты. С ходу, используя основные средства OpenCV не получилось.

Что я собственно пробовал:

Все варианты оптического потока (наилучший из них PyrLK, но всё же ошибки итогового вычитания имеются). Пробовал через UpdateMotionHistory, но он только для стационарного фона. Пробовал MatchTemplate, но он не учитывает повороты (может я что-то упускаю и он их таки учитывает?).

Есть ли ещё какие-то методы для этой темы? Или готовые расширения?

Задача в принципе разрешима - старые алгоритмы на Delphi её раскручивают. Но там используется порядка 5 кадров истории видеопотока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поворот, зная центр поворота, можно определить методом половинного деления (повернули немного в одну сторону, посмотрели, затем повернули в другую сторону, посмотрели. Уменьшили шаг вдвое, повторили.), в качестве параметра у нас будет отклик функции сравнения с шаблоном.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хмм.. Ну, это, в принципе, понятно. Вопрос был скорее в том, нет ли в OpenCV уже какого-то готового инструмента анализа последовательности изображений, так как задача в принципе распространённая. Просто поиск паттерна по картинке будет достаточно суров в вычислительном плане, если писать задачку с нуля - там очень неплохо можно оптимизировать и по точности сделать лучше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну не так уж и суров, если искать в окрестности патча, а не по всему изображению. Плюс к тому, в OpenCV есть поддержка GPU.

Готовых решений не видел, может просто не знаю о чем-то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×