vision.HistogramBasedTracker

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

Описание

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

Отслеживать объект:

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

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

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

Создание

Описание

пример

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

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

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

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

Описание

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

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

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

Входные параметры

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

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

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

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

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

Ориентация, возвращенная как угол между –pi/2 и пи/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);

Отследите и отобразите объект в каждом видеокадре. Цикл с условием продолжения читает каждый фрейм изображения, преобразует изображение в 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. "Отслеживание поверхности компьютерного зрения для использования в перцепционном пользовательском интерфейсе". Технологический журнал Intel. Январь 1998.

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

Смотрите также

Функции

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