exponenta event banner

видение. PointTracker

Отслеживание точек в видео с использованием алгоритма Канаде-Лукас-Томази (KLT)

Описание

Объект отслеживания точек отслеживает набор точек с помощью алгоритма отслеживания функций Kanade-Lucas-Tomasi (KLT). Можно использовать точечный трекер для стабилизации видео, оценки движения камеры и отслеживания объектов. Он особенно хорошо работает для отслеживания объектов, которые не изменяют форму, и для объектов, которые демонстрируют визуальную текстуру. Точечный трекер часто используется для краткосрочного трекинга как часть более крупной системы трекинга.

Когда алгоритм отслеживания точек прогрессирует во времени, точки могут быть потеряны из-за изменения освещения, поворота вне плоскости или шарнирного движения. Для отслеживания объекта в течение длительного периода времени может потребоваться периодическое повторное получение точек.

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

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

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

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

Создание

Описание

пример

pointTracker = vision.PointTracker возвращает объект отслеживания точек, отслеживающий набор точек в видео.

pointTracker = vision.PointTracker(Name,Value) задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в кавычки. Например, pointTracker = vision.PointTracker('NumPyramidLevels',3)

Инициализация процесса отслеживания:

Для инициализации процесса отслеживания необходимо использовать initialize задание начальных местоположений точек и начального видеокадра.

initialize(pointTracker,points,I) инициализирует точки для отслеживания и устанавливает начальный видеокадр. Начальные местоположения points, должен быть массивом M-by-2 с координатами [x y]. Начальный видеокадр, I, должно быть 2-D изображение в градациях серого или RGB и должно быть того же размера и типа данных, что и видеокадры, переданные step способ.

detectFASTFeatures, detectSURFFeatures, detectHarrisFeatures, и detectMinEigenFeatures функции являются немногими из множества способов получения начальных точек для отслеживания.

Свойства

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

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

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

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

Число уровней пирамиды, указанное как целое число. Реализация точечного трекера алгоритма KLT использует пирамиды изображения. Трекер генерирует пирамиду изображения, где каждый уровень уменьшается в разрешении в два раза по сравнению с предыдущим уровнем. Выбор уровня пирамиды больше 1 позволяет алгоритму отслеживать точки на нескольких уровнях разрешения, начиная с самого низкого уровня. Увеличение числа уровней пирамиды позволяет алгоритму обрабатывать большие смещения точек между кадрами. Однако стоимость вычислений также увеличивается. Рекомендуемые значения находятся между 1 и 4.

Каждый уровень пирамиды формируют путем выборки предыдущего уровня в два раза по ширине и высоте. Трекер точек начинает отслеживать каждую точку на самом низком уровне разрешения и продолжает отслеживать до сходимости. Объект распространяет результат этого уровня на следующий уровень как начальное предположение о расположениях точек. Таким образом, трекинг уточняется с каждым уровнем, вплоть до исходного изображения. Использование уровней пирамиды позволяет трекеру точек обрабатывать движения больших пикселей, которые могут содержать расстояния, превышающие размер окрестности.

Порог ошибок «вперед-назад», заданный как скаляр. Если установлено значение меньше, чем infтрекер отслеживает каждую точку от предыдущей до текущего кадра. Затем он отслеживает те же самые точки назад к предыдущему кадру. Объект вычисляет двунаправленную ошибку. Это значение представляет собой расстояние в пикселях от исходного местоположения точек до конечного местоположения после отслеживания в обратном направлении. Соответствующие точки считаются недействительными, если ошибка превышает значение, установленное для этого свойства. Рекомендуемые значения находятся между 0 и 3 пикселы.

Использование двунаправленной ошибки является эффективным способом устранения точек, которые невозможно надежно отследить. Однако двунаправленная ошибка требует дополнительных вычислений. При установке MaxBidirectionalError свойство для inf, объект не вычисляет двунаправленную ошибку.

Размер окрестности вокруг каждой отслеживаемой точки, определяемый как двухэлементный вектор, [высота, ширина]. Высота и ширина должны быть нечётными целыми числами. Эта окрестность определяет площадь для вычисления матрицы пространственного градиента. Минимальное значение для BlockSize является5 5]. Увеличение размера окрестности, увеличение времени вычислений.

Максимальное число итераций поиска для каждой точки, указанное как целое число. Алгоритм KLT выполняет итеративный поиск нового местоположения каждой точки до сходимости. Обычно алгоритм сходится в пределах 10 итераций. Это свойство устанавливает ограничение на число итераций поиска. Рекомендуемые значения находятся между 10 и 50.

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

Описание

пример

[points,point_validity] = pointTracker(I) отслеживает точки во входном кадре, I.

[points,point_validity,scores] = pointTracker(I) дополнительно возвращает оценку достоверности для каждого балла.

setPoints(pointTracker,points) устанавливает точки для отслеживания. Функция устанавливает M-by-2 points массив координат [x y] с отслеживаемыми точками. Эту функцию можно использовать, если необходимо повторно обнаружить точки, поскольку слишком много из них было потеряно во время отслеживания.

setPoints(pointTracker,points,point_validity) кроме того, позволяет пометить точки как допустимые или недопустимые. Входной логический вектор point_validity длиной М, содержит значение true или false, соответствующее достоверности отслеживаемой точки. Длина М соответствует количеству точек. Значение false указывает на недопустимую точку, которая не должна отслеживаться. Например, эту функцию можно использовать с estimateGeometricTransform для определения преобразования между местоположениями точек в предыдущем и текущем кадрах. Можно пометить отклонения как недопустимые.

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

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

Видеокадр, указанный как градации серого или truecolor (RGB).

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

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

Отслеживаемые точки, возвращаемые в виде M-by-2 массива координат [x, y], которые соответствуют новым местоположениям точек во входном кадре. I.

Надежность дорожки для каждой точки, возвращаемой как M-by-1 логический массив. Точка может быть недействительной по нескольким причинам. Точка может стать недействительной, если она выходит за пределы изображения. Кроме того, она может стать недействительной, если матрица пространственного градиента, вычисленная в ее окрестности, является сингулярной. Если двунаправленная ошибка больше, чем MaxBidirectionalError пороговое значение, это условие также может сделать точку недействительной.

Оценка достоверности между 0 и 1, возвращено в виде массива M-by-1. Значения соответствуют степени сходства между окрестностью вокруг предыдущего местоположения и новым местоположением каждой точки. Эти значения вычисляются как функция суммы квадратичных разностей между предыдущим и новым окрестностями. Наибольшая уверенность отслеживания соответствует идеальному результату матча 1.

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

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

release(obj)

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

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

Примеры

свернуть все

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

videoReader = VideoReader('visionface.avi');
videoPlayer = vision.VideoPlayer('Position',[100,100,680,520]);

Прочтите первый видеокадр, содержащий объект, определите область.

objectFrame = readFrame(videoReader);
objectRegion = [264,122,93,93];

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

рисунок; imshow (objectFrame);

objectRegion = скругление (getPosition (imrect))

Показать начальный кадр с красной ограничивающей рамкой.

objectImage = insertShape(objectFrame,'Rectangle',objectRegion,'Color','red');
figure;
imshow(objectImage);
title('Red box shows object region');

Обнаружение процентных точек в области объекта.

points = detectMinEigenFeatures(im2gray(objectFrame),'ROI',objectRegion);

Отображение обнаруженных точек.

pointImage = insertMarker(objectFrame,points.Location,'+','Color','white');
figure;
imshow(pointImage);
title('Detected interest points');

Создание объекта трекера.

tracker = vision.PointTracker('MaxBidirectionalError',1);

Инициализируйте трекер.

initialize(tracker,points.Location,objectFrame);

Считывание, отслеживание, отображение точек и результатов в каждом видеокадре.

while hasFrame(videoReader)
      frame = readFrame(videoReader);
      [points,validity] = tracker(frame);
      out = insertMarker(frame,points(validity, :),'+');
      videoPlayer(out);
end

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

release(videoPlayer);

Ссылки

[1] Лукас, Брюс Д. и Такео Канаде. «Метод итеративной регистрации изображений с применением стереовидения», материалы 7-й Международной совместной конференции по искусственному интеллекту, апрель 1981 года, стр. 674-679.

[2] Томази, Карло и Такео Канаде. Обнаружение и отслеживание точечных признаков, факультет компьютерных наук, Университет Карнеги-Меллон, апрель 1991 года.

[3] Ши, Цзяньбо и Карло Томази. «Хорошие особенности для отслеживания», Конференция IEEE по компьютерному зрению и распознаванию образов, 1994 год, стр. 593-600.

[4] Калал, Зденек, Крыстиан Миколайчик, Иржи Матас. «Forward-Backward Error: Automatic Detection of Tracking Fails», Материалы 20-й Международной конференции по распознаванию образов, 2010, стр. 2756-2759, 2010.

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

.
Представлен в R2012b