После вычисления SIFT или ORB на кадре, как в режиме реального времени отслеживать объект в видео?
Bascially я хочу обнаружить объект и отслеживать его в видео (кадр за кадром).
Я могу обнаружить его на первом кадре, например, ORB или SIFT. Но в течение следующих периодов (или говорить дальше ХХ кадры) я бы не хотела снова calulcate все точки (шар или просеять), чтобы снова его обнаружить.
учитывая, что я хочу отслеживать его в видео в режиме реального времени, что я могу сделать ?
4 ответов
общий параметр использует patchtracker. Это означает, что вы просто ищете ключевые точки в области, например, 8 пикселей вокруг предыдущей ключевой точки кадра. Вы можете выполнить cv::matchTemplate()
области, окружающей ключевую точку, вместо использования SIFT.
выполняя пирамидальный поиск помогает улучшить частоту кадров. Сначала вы ищете в более низком масштабе, если вы не можете найти ключевую точку, вы удваиваете масштаб.
если patchtracker терпит неудачу, поскольку изображение движется слишком быстро, вам просто нужно повторно Инициализировать систему, применив SIFT снова. Я бы использовал FAST вместо SIFT. Вы можете использовать SIFT для маркера, а затем быстро для обнаружения ключевых точек в режиме реального времени, создавая дескрипторы SIFT.
обнаружение и отслеживание объекта в видео-это очень большая тема, и путь к ней сильно зависит от вашего приложения. Нет никакой волшебной пули! Если вы достигнете части обнаружения, вы можете попробовать отслеживать meanshift по цвету (возможно, цветовое пространство HSV), если объект, который вам нужно отслеживать, окрашен .. , или попробуйте сопоставление шаблонов, или .. Вы должны быть более конкретны в своих потребностях.
вы можете использовать OpticalFlow для простое отслеживание, вот шаги, чтобы сделать это...
найдите углы движущегося объекта с помощью детектора угла Харриса или детектора функции просеивания.
дайте те углы и предыдущее изображение(в котором вы нашли углы объекта для отслеживания), а следующее изображение для функции opticalflow вычислит углы того же объекта в следующем изображения..
вот ссылки:
Примечание: Если вы решаете проблемы , такие как обработка окклюзии, отслеживание нескольких людей, то OpticalFlow в одиночку не может решить проблемы. Для этого необходимо использовать фильтр Калмана или фильтры частиц...
вы можете достичь почти идеального и реального времени отслеживания с помощью TLD или CLM. Как только вы обнаружите объект интереса, используйте эту ограничивающую рамку, чтобы начать отслеживание хищника. Вы можете найти о CMT здесь https://www.gnebehay.com/cmt/
и TLD здесь https://www.gnebehay.com/tld/