exponenta event banner

видение. CascadeObjectDetector

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

Описание

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

Для обнаружения элементов лица или верхней части тела на изображении:

  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 с использованием системных объектов.

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

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

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

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

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

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

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

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

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

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

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

область поиска = round((Размер обучения) * (ScaleFactorN))

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

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

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

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

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

Описание

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

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

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

развернуть все

Входное изображение, указанное как оттенки серого или truecolor (RGB).

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

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

Прямоугольная область, представляющая интерес в изображении I, заданный как четырехэлементный вектор, [x y width height].

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

развернуть все

Обнаружения, возвращаемые в виде матрицы M-by-4 элементов. Каждая строка выходной матрицы содержит четырехэлементный вектор [x y width height], указывающий в пикселях верхний левый угол и размер ограничивающей рамки.

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

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

release(obj)

развернуть все

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

Примеры

свернуть все

Создание объекта-детектора граней.

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-го симпозиума ДАГМ по распознаванию образов. Магдебург, Германия, 2003 год.

[2] Оджала Тимо, Пиетикяйнен Матти и Мяенпя Топи, «Мультирастворительный серый масштаб и инвариантная классификация текстур с локальными бинарными шаблонами». В IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002. Том 24, выпуск 7, стр. 971-987.

[3] Круппа Х., Кастрильон-Сантана М. и Б. Шиле. «Быстрый и надежный поиск лица через локальный контекст». Материалы Совместного международного рабочего совещания ИЭЭЭ по визуальному наблюдению и оценке эффективности отслеживания и наблюдения, 2003 год, стр. 157-164.

[4] Кастрильон Марко, Деннис Оскар, Герра Кайетано и Эрнандес Марио, «ENCARA2: Обнаружение в реальном времени нескольких лиц при разных разрешениях в видеопотоках». В журнале визуальной коммуникации и представления изображений, 2007 (18) 2: стр. 130-140.

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

[6] Виола, Пол и Майкл Дж. Джонс, «Быстрое обнаружение объектов с использованием усиленного каскада простых функций», Материалы конференции IEEE Computer Society 2001 по компьютерному зрению и распознаванию образов, 2001. Объем: 1, стр. 511-518.

[7] Далал, Н. и Б. Триггеры, «Гистограммы ориентированных градиентов для обнаружения человека». Конференция компьютерного общества IEEE по компьютерному зрению и распознаванию образов. Том 1, (2005), стр. 886-893.

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

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

.
Представлен в R2012a