exponenta event banner

видение. HistogramBasedTracker

Отслеживание объектов на основе гистограммы

Описание

Трекер на основе гистограммы включает в себя алгоритм непрерывного адаптивного среднего сдвига (CAMShift) для отслеживания объектов. Для идентификации отслеживаемого объекта используется гистограмма значений пикселей.

Для отслеживания объекта:

  1. Создать vision.HistogramBasedTracker и задайте его свойства.

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

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

Создание

Описание

пример

hbtracker = vision.HistogramBasedTracker возвращает трекер, отслеживающий объект с помощью алгоритма CAMShift. Для идентификации отслеживаемого объекта используется гистограмма значений пикселей. Для инициализации процесса отслеживания необходимо использовать initializeObject для указания примерного изображения объекта.

hbtracker = vision.HistogramBasedTracker(Name,Value) задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в кавычки. Например, hbtracker = vision.HistogramBasedTracker('ObjectHistogram',[])

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Гистограмма нормализованного значения пикселя, заданная как вектор N-элемента. Этот вектор определяет нормализованную гистограмму значений пикселей объекта. Значения гистограммы должны быть нормализованы до значения между 0 и 1. Вы можете использовать initializeObject для установки свойства.

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

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

Описание

bbox = hbtracker(I) возвращает ограничивающую рамку отслеживаемого объекта. Перед использованием трекера необходимо определить объект для отслеживания и задать начальное окно поиска. Используйте initializeObject функция для этого.

[bbox,orientation] = hbtracker(I) дополнительно возвращает угол между осью x и главной осью эллипса, который имеет те же моменты второго порядка, что и объект. Возвращаемый угол находится между -pi/2 и pi/2.

[bbox,orientation,score] = hbtracker(I) дополнительно возвращает оценку достоверности для возвращенной ограничивающей рамки, содержащей отслеживаемый объект.

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

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

Видеокадр, заданный как градации серого или любая 2-D карта элементов, которая отличает объект от фона. Например, я могу быть каналом тона цветового пространства HSV.

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

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

Ограничивающая рамка, возвращаемая как четырехэлементный вектор в формате, [x y width height].

Ориентация, возвращаемая как угол между -pi/2 и pi/2. Угол измеряется от оси X и главной оси эллипса, имеющих те же моменты второго порядка, что и объект.

Оценка, возвращенная как скаляр в диапазоне [0 1]. Значение 1 соответствует максимальной достоверности. 1.

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

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

release(obj)

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

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

Примеры

свернуть все

Отслеживание и отображение лица в каждом кадре входного видео.

Создание системных объектов для чтения и отображения видео, а также для рисования ограничивающей рамки объекта.

videoReader = VideoReader('vipcolorsegmentation.avi');
videoPlayer = vision.VideoPlayer();
shapeInserter = vision.ShapeInserter('BorderColor','Custom', ...
    'CustomBorderColor',[1 0 0]);

Прочитайте первый видеокадр, содержащий объект. Преобразование изображения в цветовое пространство HSV. Затем определите и просмотрите область объекта.

objectFrame = im2single(readFrame(videoReader));
objectHSV = rgb2hsv(objectFrame);
objectRegion = [40, 45, 25, 25];
objectImage = shapeInserter(objectFrame, objectRegion);

figure
imshow(objectImage)
title('Red box shows object region')

(При необходимости можно выбрать область объекта с помощью мыши. Объект должен занимать большинство территории региона. Используйте следующую команду.)

рисунок; imshow (objectFrame); objectRegion = скругление (getPosition (imrect))

Установка объекта на основе канала тона первого видеокадра.

tracker = vision.HistogramBasedTracker;
initializeObject(tracker, objectHSV(:,:,1) , objectRegion);

Отслеживание и отображение объекта в каждом видеокадре. Цикл while считывает каждый кадр изображения, преобразует изображение в цветовое пространство HSV, затем отслеживает объект в канале тона, где он отличается от фона. Наконец, пример рисует рамку вокруг объекта и отображает результаты.

while hasFrame(videoReader)
  frame = im2single(readFrame(videoReader));
  hsv = rgb2hsv(frame);
  bbox = tracker(hsv(:,:,1));

  out = shapeInserter(frame,bbox);
  videoPlayer(out);
end

Отпустите видеоплеер.

release(videoPlayer);

Ссылки

[1] Брэдский, Г.Р. «Отслеживание лица компьютера для использования в перцепционном интерфейсе пользователя». Журнал технологий Intel. Январь 1998 года.

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

.

См. также

Функции

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