vision.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.

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

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

Ограничивающий прямоугольник, возвращенный как вектор с четырьмя элементами в формате, [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0> ].

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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 = round (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] Bradsky, G.R. «Компьютерное Зрение Face Tracking For Use In a Perceptual User Interface». Intel Technology Journal. Январь 1998 года.

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

.

См. также

Функции

Введенный в R2012a