vision.CascadeObjectDetector

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

Описание

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

Обнаружить черты лица или верхнюю часть тела в изображении:

  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 функция. Функция может обучить модель, использующую подобные Хаару функции, гистограммы ориентированных градиентов или локальные бинарные шаблоны (LBP). Для получения дополнительной информации о том, как использовать функцию, смотрите Начало работы с Каскадным Детектором объектов.

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

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

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

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

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

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

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

sizei)/(sizei)-0.5)

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

search region = round((Training Size) * (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).

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

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

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

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

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

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

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

Чтобы использовать объектную функцию, задайте Систему 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, Питикэинен Матти и Мэенпээ Топи, "Шкала полутонов Мультиразрешения и Классификация Структуры Инварианта Вращения с Локальными Бинарными Шаблонами". В Транзакциях IEEE согласно Анализу Шаблона и Искусственному интеллекту, 2002. Объем 24, Выпуск 7, стр 971-987.

[3] Краппа Х., Кастрийон-Сантана М. и Б. Шиле. "Быстрое и Устойчивое Открытие Поверхности через Локальный Контекст". Продолжения Объединенного Международного семинара IEEE на Визуальном Наблюдении и Оценке результатов деятельности Отслеживания и Наблюдении, 2003, стр 157–164.

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

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

[6] Виола, Пол и Майкл Дж. Джонс, "Быстрое Обнаружение объектов с помощью Повышенного Каскада Простых Функций", Продолжения 2 001 Конференции Общества эпохи компьютеризации IEEE по Компьютерному зрению и Распознаванию образов, 2001. Объем: 1, pp.511–518.

[7] Dalal, N. и Б. Триггс, "Гистограммы Ориентированных Градиентов для Человеческого Обнаружения". Конференция Общества эпохи компьютеризации IEEE по Компьютерному зрению и Распознаванию образов. Объем 1, (2005), стр 886–893.

[8] Ojala, T., М. Питикэйнен и Т. Мэенпэа, "Шкала полутонов Мультиразрешения и Классификация Структуры Инварианта Вращения С Локальными Бинарными Шаблонами". Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Объем 24, июль 2002 № 7, стр 971–987.

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

Представленный в R2012a