видение. CascadeObjectDetector

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

detector = vision.CascadeObjectDetector
detector = vision.CascadeObjectDetector(model)
detector = vision.CascadeObjectDetector(XMLFILE)
detector = vision.CascadeObjectDetector(Name,Value)

Описание

пример

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 Используя Системные объекты (MATLAB).

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

Можно установить этот вектор символов на XML-файл, содержащий пользовательскую модель классификации, или на один из допустимых образцовых описанных ниже векторов символов. Можно обучить пользовательскую модель классификации использование функции trainCascadeObjectDetector. Функция может обучить модель, использующую подобные Хаару функции, гистограммы ориентированных градиентов (ПОЖИРАТЕЛЬ РЕСУРСОВ) или локальные бинарные шаблоны (LBP). Для получения дополнительной информации о том, как использовать функцию, смотрите Train Каскадный Объектный Детектор.

Модель классификацииРазмер изображения, используемый, чтобы обучить модельОбразцовое описание
'FrontalFaceCART' (Значение по умолчанию)[20 20]Обнаруживает поверхности, которые являются вертикальными и по ходу движения. Эта модель состоит из слабых классификаторов, на основе классификации и анализа дерева регрессии (CART). Эти классификаторы используют функции Хаара, чтобы закодировать черты лица. Основанные на 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]Обнаруживает левый и правый глаз отдельно. Эти модели состоят из слабых классификаторов, на основе пня решения. Эти классификаторы используют функции Хаара, чтобы закодировать детали. [4]
'LeftEyeCART'
'RightEyeCART'
[20 20]Обнаруживает левый и правый глаз отдельно. Слабые классификаторы, которые составляют эти модели, являются деревьями CART. По сравнению со пнями решения ОСНОВАННЫЕ НА CART-ДЕРЕВОМ классификаторы лучше способны смоделировать зависимости высшего порядка. [5]
'ProfileFace'[20 20]Обнаруживает вертикальные профили поверхности. Эта модель состоит из слабых классификаторов, на основе пня решения. Эти классификаторы используют функции Хаара, чтобы закодировать детали поверхности.
'Mouth'[15 25]Обнаруживает рот. Эта модель состоит из слабых классификаторов, на основе пня решения, которые используют функции Хаара, чтобы закодировать детали рта. [4]
'Nose'[15 18]Эта модель состоит из слабых классификаторов, на основе пня решения, которые используют функции Хаара, чтобы закодировать детали носа. [4]

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

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

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

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

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

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

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

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

search region = round ((Training Size) * (ScaleFactor N))

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

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

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

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

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

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

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

bbox = detector(I)
bbox = detector(I,roi)

Описание

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], который задает в пикселях, верхнем левом углу и размере ограничительной рамки.

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

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием 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');

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

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');

Алгоритмы

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

Ссылки

[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