Этот пример показывает, как реализовать алгоритм обнаружения и отслеживания лиц в Simulink ® с помощью блока MATLAB ® Function. Он внимательно следит за обнаружением и отслеживанием лиц, используя пример алгоритма KLT MATLAB ®.
Обнаружение объектов важны во многих приложениях компьютерного зрения, включая распознавание активности, безопасность автомобилей и наблюдение. В этом примере вы проектируете систему в Simulink ®, чтобы обнаружить лицо в видеокадре, идентифицировать функции лица и отследить эти функции. Видеокадр выхода содержит обнаруженное лицо и функции отслеженные. Если лицо не отображается или выходит из особого внимания, система пытается повторно получить лицо и затем выполнить отслеживание. Этот пример предназначен для обнаружения и отслеживания одной грани.
close
open_system('DetectAndTrackFace');
Этот пример использует блок From Multimedia Файла, чтобы считать видеокадры с файла видео. The Detection and Tracking
подсистема принимает видеокадр и предоставляет ограничивающий прямоугольник для граней и характерных точек внутри ограничивающего прямоугольника в качестве его выхода в Draw Annotations
подсистема. Эта подсистема вставляет в изображение прямоугольник для ограничивающего прямоугольника и маркеры для точек функции.
В этом примере vision.CascadeObjectDetector
Системная object™ определяет местоположение лица в текущем видеокадре. Каскадный детектор объектов использует алгоритм обнаружения Виолы-Джонса и обученную классификационную модель для обнаружения. После обнаружения лица идентифицируют точки функций лица с помощью метода «Хорошие функции для отслеживания», предложенного Ши и Томази.
Затем vision.PointTracker
Система object™ отслеживает идентифицированные функции с помощью алгоритма отслеживания признаков Канаде-Лукаса-Томази (KLT). Для каждой точки в предыдущей системе координат трекер точек пытается найти соответствующую точку в текущей системе координат. Затем estimateGeometricTransform
функция оценивает перемещение, поворот и шкалу между старыми точками и новыми точками. Это преобразование применяется к ограничивающему прямоугольнику вокруг грани.
Хотя возможно использовать каскадный детектор объектов на каждой системе координат, он является вычислительно дорогим. Этот метод может также не обнаружить лицо, например, когда субъект поворачивается или наклоняет голову. Это ограничение связано с типом обученной классификационной модели, используемой для обнаружения. В этом примере вы обнаруживаете лицо один раз, а затем алгоритм KLT отслеживает лицо через видеокадры. Обнаружение выполняется снова только тогда, когда лицо больше не отображается или когда трекер не может найти достаточное количество характерных точек.
Возможность выполнить Динамическое выделение памяти в функциях MATLAB (Simulink) позволяет использовать ранее упомянутые Системные объекты и методы внутри блока MATLAB ® Function.
open_system('DetectAndTrackFace/Detection and Tracking')
Угловые точки ограничивающего прямоугольника и функции местоположения точек используются для рисования на выход видеокадре. Блок «Фигуры рисования» рисует ограничивающий прямоугольник. Точки функции рисуются с помощью блока Draw Маркеров.
open_system('DetectAndTrackFace/Draw Annotations')
На следующем отображении показана обнаруженная грань с точками функций.
На следующем отображении показаны отслеживаемая грань и характерные точки.
Виола, Пол А. и Майкл Джей Джонс. «Быстрое обнаружение объектов с использованием усиленного каскада простых функций», IEEE CVPR, 2001.
Лукас, Брюс Д. и Такео Канаде. «Итерационный метод регистрации изображений с приложением к видению стерео». Международная совместная конференция по искусственному интеллекту, 1981 год.
Лукас, Брюс Д. и Такео Канаде. «Обнаружение и отслеживание функций точек». Технический доклад Университета Карнеги-Меллона CMU-CS-91-132, 1991 год.
Ши, Цзяньбо и Карло Томази. «Хорошие функции для отслеживания». IEEE Conference on Компьютерное Зрение and Pattern Recognition, 1994.
ЗКалал, Зденек, Крыстиан Миколайчик, Иржи Матас. «Прямая-обратная ошибка: автоматическое обнаружение отказов отслеживания». Международная конференция по распознаванию шаблонов, 2010 год