exponenta event banner

updateTracks

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

Описание

confirmedTracks = updateTracks(tracker,detections,time) создает, обновляет и удаляет дорожки в multiObjectTracker object™ системы, tracker. Обновления основаны на указанном списке detections, и все дорожки обновляются до указанного time. Каждый элемент в возвращаемом confirmedTracks соответствует одной дорожке.

[confirmedTracks,tentativeTracks] = updateTracks(tracker,detections,time) также возвращает tentativeTracks содержит подробную информацию о предварительных треках.

пример

[confirmedTracks,tentativeTracks,allTracks] = updateTracks(tracker,detections,time) также возвращает allTracks содержащий подробную информацию обо всех подтвержденных и предварительных треках. Треки возвращаются в том порядке, в котором трекер поддерживает их внутри системы. Этот вывод можно использовать для расчета матрицы затрат, необязательного входного аргумента.

[___] = updateTracks(tracker,detections,time,costMatrix) определяет матрицу затрат, возвращающую любой из выходов из предшествующих синтаксисов.

Чтобы указать матрицу затрат, установите значение HasCostMatrixInput имущество tracker кому true.

[___] = updateTracks(___,detectableTrackIDs) также указывает список ожидаемых обнаруживаемых дорожек, заданных detectableTrackIDs. Этот аргумент можно использовать с любым из предыдущих входных синтаксисов.

Чтобы включить этот синтаксис, установите HasDetectableTrackIDsInput свойство для true.

Примеры

свернуть все

Создать multiObjectTracker Система object™ с использованием функции инициализации фильтра по умолчанию для 2-D модели постоянной скорости. Для этой модели движения вектором состояния является [x; vx; y; vy].

tracker = multiObjectTracker('ConfirmationThreshold',[4 5], ...
    'DeletionThreshold',10);

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

dettime = 1.0;
det = { ...
    objectDetection(dettime,[10; -1], ...
    'SensorIndex',1, ...
    'ObjectAttributes',{'ExampleObject',1}) ...
    };

Обновление многообъектного трекера с помощью этого обнаружения с помощью updateTracks функция. Время, в которое вы обновляете мультиобъектную подкладку, должно быть больше или равно времени обнаружения объекта.

updatetime = 1.25;
[confirmedTracks,tentativeTracks,allTracks] = updateTracks(tracker,det,updatetime);

Создайте другое обнаружение того же объекта и обновите многообъектный трекер, на этот раз путем вызова самого трекера вместо использования updateTracks. Трекер поддерживает только одну дорожку.

dettime = 1.5;
det = { ...
    objectDetection(dettime,[10.1; -1.1], ...
    'SensorIndex',1, ...
    'ObjectAttributes',{'ExampleObject',1}) ...
    };
updatetime = 1.75;
[confirmedTracks,tentativeTracks,allTracks] = tracker(det,updatetime);

Определите, проверена ли дорожка, проверив количество подтвержденных дорожек.

numConfirmed = tracker.NumConfirmedTracks
numConfirmed = 0

Проверьте положение и скорость отслеживаемого объекта. Поскольку трасса не была подтверждена, получите положение и скорость от tentativeTracks структура.

positionSelector = [1 0 0 0; 0 0 1 0];
velocitySelector = [0 1 0 0; 0 0 0 1];
position = getTrackPositions(tentativeTracks,positionSelector)
position = 1×2

   10.1426   -1.1426

velocity = getTrackVelocities(tentativeTracks,velocitySelector)
velocity = 1×2

    0.1852   -0.1852

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

свернуть все

Многообъектный трекер, указанный как multiObjectTracker Системный объект.

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

Время обновления, указанное как действительный скаляр. Трекер обновляет все дорожки до этого времени. Единицы измерения в секундах.

time должно быть больше или равно наибольшему Time значение свойства objectDetection объекты на входе detections список. time должен увеличиваться с каждым обновлением для многообъектного трекера.

Типы данных: double

Матрица затрат, заданная как действительная матрица NT-by-ND, где NT - количество существующих дорожек, а ND - количество текущих обнаружений. Строки матрицы затрат соответствуют существующим дорожкам. Столбцы соответствуют обнаружениям. Треки упорядочены по мере их появления в списке треков в allTracks выходной аргумент предыдущего обновления для многообъектного трекера.

При первом обновлении многообъектного трекера или при отсутствии у трекера предыдущих дорожек присвойте матрице затрат размер [0, ND]. Стоимость должна быть рассчитана так, чтобы более низкие затраты указывали на более высокую вероятность того, что трекер назначит обнаружение дорожке. Чтобы предотвратить назначение определенных обнаружений определенным дорожкам, используйте Inf.

Зависимости

Чтобы включить спецификацию матрицы затрат при обновлении треков, установите HasCostMatrixInput свойство трекера для true

Типы данных: double

Обнаруживаемые идентификаторы дорожек, заданные как действительный вектор M-by-1 или матрица M-by-2. Обнаруживаемые дорожки - это дорожки, которые датчики ожидают обнаружить. Первый столбец матрицы содержит список идентификаторов дорожек, которые датчики сообщают как обнаруживаемые. Необязательный второй столбец содержит вероятность обнаружения для дорожки. Вероятность обнаружения либо сообщается датчиком, либо, если не сообщается, получается из DetectionProbability собственность.

Дорожки, идентификаторы которых не включены в detectableTrackIDs считаются необнаруживаемыми. Логика удаления дорожки не засчитывает отсутствие обнаружения как «пропущенное обнаружение» для целей удаления дорожки.

Зависимости

Чтобы включить этот входной аргумент, установите detectableTrackIDs свойство для true.

Типы данных: single | double

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

свернуть все

Подтвержденные дорожки, возвращенные в виде массива objectTrack объекты в MATLAB ® и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack.

Дорожка подтверждается, если она удовлетворяет порогу подтверждения, указанному в ConfirmationThreshold собственность. В этом случае IsConfirmed свойство объекта или поля структуры true.

Типы данных: struct | object

Предварительные треки, возвращенные в виде массива objectTrack объекты в MATLAB и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack.

Дорожка является предварительной, если она не удовлетворяет порогу подтверждения, указанному в ConfirmationThreshold собственность. В этом случае IsConfirmed свойство объекта или поля структуры false.

Типы данных: struct | object

Все треки, возвращенные в виде массива objectTrack объекты в MATLAB и возвращенные в виде массива структур при создании кода. При создании кода имена полей возвращаемой структуры совпадают с именами свойств objectTrack. Все треки состоят из подтвержденных и предварительных треков.

Типы данных: struct | object

Алгоритмы

При передаче обнаружений в updateTracks, функция:

  • Попытки назначения входных обнаружений существующим дорожкам на основе AssignmentThreshold свойства многообъектного трекера.

  • Создает новые дорожки из неназначенных обнаружений.

  • Обновляет уже назначенные треки и, возможно, подтверждает их, основываясь на ConfirmationThreshold свойство трекера.

  • Удаляет дорожки, не имеющие назначенных обнаружений, на основе DeletionThreshold свойство трекера.

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