Обнаружение нескольких движущихся объектов в изменяющихся условиях освещения.

Я пытаюсь извлечь несколько движущихся объектов в видеокадре и выделить их в качестве переднего плана. Данные из video frames,

В настоящее время проблема заключается в следующем: свет меняется, поэтому есть несколько теней или более ярких участков, чем на самом деле. Это приводит к ложному фону / переднему плану извлечения OpenCV MoG метод фоновой сегментации.

Для этого у меня нет простого метода, но есть идея, подобная этой: если я могу извлечь края этих движущихся объектов в предыдущем кадре, то, возможно, я мог бы отслеживать их с помощью таких алгоритмов, как SIFT в следующем кадре посмотрите, где они находятся, и расцените их как передний план.

Я думаю, что в этом случае изменение света не повлияет на результат. Если я прав в этом вопросе, тогда мой вопрос:

Как я могу эффективно определять края этих движущихся объектов с помощью OpenCV? Если мне нужно использовать SIFT алгоритм в OpenCV, это свободно доступно? Из Интернета я увидел, что это несвободно, я прав?

А также мой второй вопрос: у кого-нибудь есть идея получше?

Спасибо.

3

Решение

Если вы хотите сделать обнаружение / отслеживание человека, вы должны ищите исследовательские работы или проекты относительно именно этого. Это много, вы даже можете найти некоторые вопросы по этой теме здесь, на SOF:

Как я могу обнаруживать и отслеживать людей, использующих OpenCV? (может быть устаревшим)

отслеживание одного человека из видео последовательности

Как сделать отслеживание движения объекта с помощью видео?

Кроме того, есть несколько вопросов, касающихся детекторов / дескрипторов функций, таких как SIFT и его более поздние альтернативы (SURF, ORB, FREAK — только некоторые из них реализованы в OpenCV):

Существуют ли быстрые альтернативы SURF и SIFT для извлечения инвариантных по масштабам объектов?

OpenCV для сравнения изображений ANDROID

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

SIFT и SURF «свободно» доступны с OpenCV, но их части запатентованы, поэтому люди избегают их использования, поэтому у них нет проблем в будущем из-за этих патентов — по этой причине они были перемещены в «несвободный» модуль OpenCV ,

Другие проблемы, которые у вас возникнут, кроме упомянутых вами, окклюзия объекта и люди, входящие-выходящие из сцены.

4

Другие решения

Я знаю, что вы уже приняли ответ Руи, но после некоторого поиска, я нашел другое решение вашей проблемы — это HOG Descriptor.

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

Взгляни на этот код обнаружения человека.

2

Могу ли я предложить вам нормализовать изображения для освещения. Один из практических способов сделать это — использовать «Сопоставление гистограммы».

Пожалуйста, посмотрите на Гистограмма соответствия двух цветных изображений в Matlab знать об использовании сопоставления гистограммы.

Надеюсь это поможет

2
По вопросам рекламы [email protected]