vision.CascadeObjectDetector

Обнаружение объектов с помощью алгоритма Виолы-Джонса

Описание

Каскадный детектор объектов использует алгоритм Виолы-Джонса, чтобы обнаружить лица, носы, глаза, рот или верхнюю часть тела людей. Можно также использовать Image Labeler для обучения пользовательского классификатора для использования с этим системным объектом. Для получения дополнительной информации о том, как функция работает, смотрите Запуск с Cascade Детектора объектов.

Чтобы обнаружить функции лица или верхней части тела на изображении:

  1. Создайте vision.CascadeObjectDetector Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

пример

detector = vision.CascadeObjectDetector создает детектор для обнаружения объектов с помощью алгоритма Виолы-Джонса.

detector = vision.CascadeObjectDetector(model) создает детектор, сконфигурированный для обнаружения объектов, заданных входным вектором символов, model.

detector = vision.CascadeObjectDetector(XMLFILE) создает детектор и конфигурирует его, чтобы использовать пользовательскую модель классификации, заданную в XMLFILE вход.

detector = vision.CascadeObjectDetector(Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в кавычки. Для примера, detector = vision.CascadeObjectDetector('ClassificationModel','UpperBody')

Свойства

расширить все

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

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Обученная каскадная модель классификации, заданная как вектор символов. The ClassificationModel свойство контролирует тип объекта, который нужно обнаружить. По умолчанию детектор сконфигурирован для обнаружения граней.

Можно задать этот вектор символов в XML- файл, содержащий пользовательскую модель классификации, или в один из допустимых векторов символов модели, перечисленных ниже. Вы можете обучить пользовательскую модель классификации, используя trainCascadeObjectDetector функция. Функция может обучать модель с помощью Haar-подобных функций, гистограмм ориентированных градиентов (HOG) или локальных двоичных шаблонов (LBP). Для получения дополнительной информации о том, как использовать функцию, смотрите Запуск с Cascade Детектора объектов.

Классификационная модельРазмер изображения, используемый для обучения моделиОписание модели
'FrontalFaceCART'(По умолчанию)[20 20]Обнаруживает лица, которые расположены вертикально и вперед. Эта модель состоит из слабых классификаторов, основанных на классификационном и регрессионом древовидном анализе (CART). Эти классификаторы используют Haar функций для кодирования лицевых функций. Основанные на CART классификаторы обеспечивают возможность моделирования зависимостей более высокого порядка между лицевыми функциями. [1]
'FrontalFaceLBP'[24 24]Обнаруживает лица, которые расположены вертикально и вперед. Эта модель состоит из слабых классификаторов, основанных на пени принятия решений. Эти классификаторы используют локальные двоичные шаблоны (LBP), чтобы кодировать функции лица. Функции LBP могут обеспечить робастность против изменения освещенности. [2]
'UpperBody'[18 22]Обнаруживает область верхнего тела, которая определяется как область головы и плечи. Эта модель использует функции Haar, чтобы закодировать детали области головы и плеча. Поскольку он использует больше функций вокруг головы, эта модель более устойчива к изменениям положения, например, повороты/наклоны головы. [3]
'EyePairBig'
'EyePairSmall'
[11 45]
[5 22]
Обнаруживает пару глаз. The 'EyePairSmall' модель обучается с использованием меньшего изображения. Это позволяет модели обнаруживать меньшие глаза, чем 'EyePairBig' модель может обнаружить. [4]
'LeftEye'
'RightEye'
[12 18]Определяет левый и правый глаз отдельно. Эти модели состоят из слабых классификаторов, основанных на пени принятия решений. Эти классификаторы используют функции Haar для кодирования деталей. [4]
'LeftEyeCART'
'RightEyeCART'
[20 20]Определяет левый и правый глаз отдельно. Слабыми классификаторами, которые составляют эти модели, являются CART-деревья. По сравнению с пнями принятия решений классификаторы на основе дерева CART лучше способны моделировать зависимости более высокого порядка. [5]
'ProfileFace'[20 20]Обнаружение вертикальных профилей лица. Эта модель состоит из слабых классификаторов, основанных на пени принятия решений. Эти классификаторы используют функции Haar для кодирования деталей лица.
'Mouth'[15 25]Обнаруживает рот. Эта модель состоит из слабых классификаторов, основанных на пне принятия решений, которые используют функции Haar для кодирования деталей рта. [4]
'Nose'[15 18]Эта модель состоит из слабых классификаторов, основанных на пени принятия решений, которые используют функции Haar для кодирования деталей носа. [4]

Размер наименьшего обнаруживаемого объекта, заданный как двухэлементный вектор [height width]. Установите это свойство в пикселях для области минимального размера, содержащей объект. Значение должно быть больше или равно размеру изображения, используемому для обучения модели. Используйте это свойство для сокращения времени расчета, когда вы знаете минимальный размер объекта перед обработкой изображения. Когда вы не задаете значение для этого свойства, детектор устанавливает его на размер изображения, используемого для обучения классификационной модели.

Для получения дополнительной информации, объясняющей связь между настройкой размера обнаруживаемого объекта и ScaleFactor свойство, см. Раздел «Алгоритмы».

Настраиваемый: Да

Размер самого большого обнаруживаемого объекта, заданный как двухэлементный вектор [height width]. Задайте размер в пикселях самого большого объекта, который нужно обнаружить. Используйте это свойство для сокращения времени расчета, когда вы знаете максимальный размер объекта перед обработкой изображения. Когда вы не задаете значение для этого свойства, детектор устанавливает его на size(I).

Для получения дополнительной информации, объясняющей связь между настройкой размера обнаруживаемого объекта и ScaleFactor свойство, см. Раздел «Алгоритмы».

Масштабирование для многомасштабного обнаружения объектов, заданное как значение, больше 1.0001. Коэффициент шкалы постепенно масштабирует разрешение обнаружения между MinSize и MaxSize. Установить коэффициент шкалы на идеальное значение можно используя:

size(I)/(size(I) - 0.5)

Детектор масштабирует область поиска с шагами между MinSize и MaxSize используя следующую связь:

search region = round((<reservedrangesplaceholder1>) * (ScaleFactorN))

N - текущий шаг, целое число, больше нуля, и Training Size - размер изображения, используемого для обучения классификационной модели.

Настраиваемый: Да

Порог обнаружения, заданный как целое число. Порог определяет критерии, необходимые для объявления окончательного обнаружения в области, где существует несколько обнаружений вокруг объекта. Группы колоцированных обнаружений, которые соответствуют порогу, объединяются, чтобы создать один ограничивающий прямоугольник вокруг целевого объекта. Увеличение этого порога может помочь подавить ложные обнаружения, требуя, чтобы целевой объект был обнаружен несколько раз в течение многомасштабной фазы обнаружения. Когда вы устанавливаете это свойство на 0все обнаружения возвращаются без выполнения операции порогового значения или слияния. Это свойство настраивается.

Используйте необходимую область, заданную как false или true. Установите это свойство на true обнаружение объектов в прямоугольной необходимой области в вход изображении.

Использование

Описание

bbox = detector(I) возвращает M -by-4 матрицу, bbox, который задает M рамки, содержащие обнаруженные объекты. Детектор выполняет многомасштабное обнаружение объектов на вход изображении, I.

bbox = detector(I,roi) обнаруживает объекты в прямоугольной области поиска, заданной roi. Установите 'UseROI' свойство к true для использования этого синтаксиса.

Входные параметры

расширить все

Входное изображение, заданное как полутоновый или труколор (RGB).

Классификационная модель, заданная как вектор символов. The model вход описывает тип объекта, который нужно обнаружить. Существует несколько допустимых model векторы символов, такие как 'FrontalFaceCARTUpperBody', и' ProfileFace'. Смотрите ClassificationModel описание свойств для полного списка доступных моделей.

Пользовательская модель классификации, заданная как XML- файл. The XMLFILE может быть создан с помощью trainCascadeObjectDetector функция или функциональность обучения OpenCV (Open Source Computer Vision). Необходимо задать полный или относительный путь к XMLFILE, если его нет на MATLAB® путь.

Прямоугольная необходимая область в I изображения, определенный как вектор с четырьмя элементами, [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0> ].

Выходные аргументы

расширить все

Обнаружения, возвращенные как матрица элемента M -by-4. Каждая строка выходной матрицы содержит вектор с четырьмя элементами, [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>] , который определяет в пикселях, верхнем левом углу и размере ограничивающего прямоугольника.

Функции объекта

Чтобы использовать функцию объекта, задайте Системную object™ в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Создайте объект детектора лица.

faceDetector = vision.CascadeObjectDetector;

Прочтите вход изображение.

I = imread('visionteam.jpg');

Обнаружение лиц.

bboxes = faceDetector(I);

Аннотирование обнаруженных граней.

IFaces = insertObjectAnnotation(I,'rectangle',bboxes,'Face');   
figure
imshow(IFaces)
title('Detected faces');

Figure contains an axes. The axes with title Detected faces contains an object of type image.

Создайте объект детектора тела и установите свойства.

bodyDetector = vision.CascadeObjectDetector('UpperBody'); 
bodyDetector.MinSize = [60 60];
bodyDetector.MergeThreshold = 10;

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

I2 = imread('visionteam.jpg');
bboxBody = bodyDetector(I2);

Аннотировать обнаруженные верхние тела.

IBody = insertObjectAnnotation(I2,'rectangle',bboxBody,'Upper Body');
figure
imshow(IBody)
title('Detected upper bodies');

Figure contains an axes. The axes with title Detected upper bodies contains an object of type image.

Алгоритмы

расширить все

Ссылки

[1] Лиенхарт Р., Куранов А., и В. Писаревский «Эмпирический анализ каскадов обнаружения ускоренных классификаторов для быстрого обнаружения объектов». Материалы 25-го симпозиума DAGM по распознаванию шаблонов. Магдебург, Германия, 2003.

[2] Ojala Timo, Pietikäinen Matti, and Mäenpäв Topi, «Мультиразрешение Gray-Scale and Rotation Invariant Texture Classification with Local Binary Patterns». В транзакциях IEEE по анализу шаблонов и машинной разведке, 2002. Том 24, Выпуск 7, стр. 971-987.

[3] Kruppa H., Castrillon-Santana M., and B. Schiele. Быстрый и робастный поиск лица через локальный контекст. Материалы Совместного международного практикума по визуальному наблюдению и оценке эффективности отслеживания и наблюдения, 2003 год, стр. 157-164.

[4] Castrillón Marco, Déniz Oscar, Guerra Cayetano, and Hernández Mario, «ENCARA2: Обнаружение в реальном времени нескольких лиц в различных разрешениях в видеопотоках». В Journal of Visual Communication and Image Representation, 2007 (18) 2: pp. 130-140.

[5] Ю Шици «Обнаружение глаз». Домашняя страница Шици Юя. http://yushiqi.cn/research/eyedetection.

[6] Viola, Paul and Michael J. Jones, «Rapid Object Detection with a Boosted Cascade of Simple Features», Proceedings of the 2001 IEEE Computer Society Conference on on Компьютерное Зрение Vision and and Pion and and PAtTTrifornition, 2001. Объем: 1, стр. 511-518.

[7] Даляль, Н. и Б. Триггс, «Гистограммы ориентированных градиентов для обнаружения человека». IEEE Computer Society Conference on Компьютерное Зрение and Pattern Recognition. Том 1, (2005), с. 886-893.

[8] Ojala, T., M. Pietikainen, and T. Maenpaa, «Multirresolution Gray-Scale and Rotation Invariant Texture Classification With Local Binary Patterns». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 24, № 7 июля 2002, стр. 971-987.

Расширенные возможности

.
Введенный в R2012a