Обнаружьте и отследите поверхность

В этом примере показано, как реализовать алгоритм обнаружения и отслеживания поверхности в Simulink® при помощи Функционального блока MATLAB®. Это сопровождает Обнаружение Поверхности и Отслеживающий Используя пример KLT Algorithm MATLAB®.

Введение

Обнаружение объектов и отслеживание важны во многих приложениях компьютерного зрения, включая распознавание активности, автомобильную безопасность и наблюдение. В этом примере вы проектируете систему в Simulink®, чтобы обнаружить поверхность в видеокадре, идентифицировать черты лица и отследить эти функции. Выходной видеокадр содержит обнаруженную поверхность и прослеженные функции. Если поверхность не отображается или идет не в фокусе, система пытается повторно получить поверхность и затем выполнить отслеживание. Этот пример спроектирован, чтобы обнаружить и отследить одну поверхность.

Модель в качестве примера

close
open_system('DetectAndTrackFace');

Настройка

Этот пример использует блок From Multimedia File, чтобы считать видеокадры из видеофайла. Detection and Tracking подсистема берет в видеокадре и обеспечивает ограничительную рамку для поверхности и характерных точек в ограничительной рамке как ее выход к Draw Annotations подсистема. Эта подсистема вставляет в изображение прямоугольник для ограничительной рамки и маркеры для характерных точек.

Обнаружение и отслеживание

В этом примере, vision.CascadeObjectDetector Система object™ обнаруживает местоположение поверхности в текущем видеокадре. Каскадный детектор объектов использует алгоритм обнаружения Виолы - Джонса и обученную модель классификации для обнаружения. После того, как поверхность обнаруживается, точки черты лица идентифицированы, использовав "Хорошие Функции, чтобы Отследить" метод, предложенный Ши и Томэзи.

Затем vision.PointTracker Система object™ отслеживает идентифицированные характерные точки при помощи алгоритма отслеживания функции Kanade-Lucas-Tomasi (KLT). Для каждой точки в предыдущей системе координат средство отслеживания точки пытается найти соответствующую точку в текущей системе координат. Затем estimateGeometricTransform функционируйте оценивает перевод, вращение и шкалу между старыми точками и новыми точками. Это преобразование применяется к ограничительной рамке вокруг поверхности.

Несмотря на то, что возможно использовать каскадный детектор объектов на каждой системе координат, это в вычислительном отношении дорого. Этот метод также может не обнаружить поверхность, такой как тогда, когда предмет поворачивает или наклоняет его голову. Это ограничение прибывает из типа обученной модели классификации, используемой для обнаружения. В этом примере вы обнаруживаете поверхность однажды, и затем алгоритм KLT отслеживает поверхность через видеокадры. Обнаружение выполняется снова только, когда поверхность больше не отображается или когда средство отслеживания не может найти достаточно характерных точек.

Способность выполнить Динамическое выделение памяти в функциях MATLAB (Simulink) позволяет использование ранее упомянутых Системных объектов и методов в Функциональном блоке MATLAB®.

open_system('DetectAndTrackFace/Detection and Tracking')

Чертите аннотации

Угловые точки ограничительной рамки и местоположения характерной точки используются, чтобы привлечь выходной видеокадр. Блок Draw Shapes чертит ограничительную рамку. Характерные точки чертятся с помощью блока Draw Markers.

open_system('DetectAndTrackFace/Draw Annotations')

Результаты

Следующее отображение показывает обнаруженную поверхность с характерными точками.

Следующее отображение показывает отслеженную поверхность и характерные точки.

Ссылки

Виола, Пол А. и Майкл Дж. Джонс. "Быстрое Обнаружение объектов с помощью Повышенного Каскада Простых Функций", IEEE CVPR, 2001.

Лукас, Брюс Д. и Тэкео Кэнэйд. "Итеративный регистрационный метод изображений с приложением к видению стерео". Международная объединенная конференция по искусственному интеллекту, 1981.

Лукас, Брюс Д. и Тэкео Кэнэйд. "Обнаружение и отслеживание функций точки". Технический отчет CMU CS-91 132 Университета Карнеги-Меллон, 1991.

Ши, Джиэнбо и Карло Томази. "Хорошие функции, чтобы отследить". Конференция по IEEE по компьютерному зрению и распознаванию образов, 1994.

ZKalal, Зденек, Krystian Mikolajczyk и Иржи Матас. "Прямая обратная ошибка: автоматическое обнаружение отслеживания отказов". Международная конференция по вопросам распознавания образов, 2010