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

Вопрос: трекинг объекта на фоне стены

Recommended Posts

Наверное вопрос совсем наивный, но хочется понять в каком направлении двигаться. Мне нужно определять координаты (x,y) небольшого предмета относительно плоскости стены. Собираюсь для этого opencv использовать, хотя опыта нет. Как лучше это сделать? Какой использовать алгоритм? Я разместил на предмете светодиод и попробовал CamShift'ом его отслеживать, работает быстро, но иногда ошибается. Светодиод из-за того, что возможно понадобиться отслеживать в условиях плохой освещенности. Предмет будет двигаться относительно стены плавно и медленно. Буду рад любым рекомендациям. К примеру, лучше использовать диод или диодную ленту, имеет ли значение цвет свечения?

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


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

Наверное вопрос совсем наивный, но хочется понять в каком направлении двигаться. Мне нужно определять координаты (x,y) небольшого предмета относительно плоскости стены. Собираюсь для этого opencv использовать, хотя опыта нет. Как лучше это сделать? Какой использовать алгоритм? Я разместил на предмете светодиод и попробовал CamShift'ом его отслеживать, работает быстро, но иногда ошибается. Светодиод из-за того, что возможно понадобиться отслеживать в условиях плохой освещенности. Предмет будет двигаться относительно стены плавно и медленно. Буду рад любым рекомендациям. К примеру, лучше использовать диод или диодную ленту, имеет ли значение цвет свечения?

Для алгоритма CamShift цвет имеет принципиальное значение. Если на фоне есть объекты с похожей гистограммой, алгоритм может ошибаться.

Если объект, за которым Вы хотите следить имеет особенности (углы, выраженные границы, перепады яркости), то Вам скорее всего поможет детектор ключевых точек (GoodFeatureToTrack, FastFeatureDetector и т.п) и разреженный оптический поток Лукаса-Канаде (PyrOpticalFlowLK). Пример реализации можно найти в папке opencv\samples\cpp\lkdemo.cpp.

Судя по тому, что объект движется медленно и плавно, Вам, возможно, стоит ещё посмотреть в сторону шаблонов движения. Пример реализации в opencv\samples\c\motempl.c. Где-то на форуме Smorodov выкладывал статью на русском с теорией по шаблонам движения.

  • Like 2

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


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

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

Лучше всего этой идеологии соответствуют фильтр частиц (Particle filter),фильтр Кальмана, MeanShift и CamShift.

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

  • Like 1

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

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

×