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 функция. Время, в которое вы обновляете multi-object tacer, должно быть больше или равным времени, в которое объект был обнаружен.

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 объекты. The Time значение свойства каждого objectDetection объект должен быть меньше или равен текущему времени обновления, timeи больше предыдущего значения времени, используемого для обновления трекера мультиобъекта.

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

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

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

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

В первом обновлении многообъектного трекера или когда у трекера нет предыдущих треков, присвойте матрице затрат размер [0, N D]. Стоимость должна быть рассчитана так, чтобы более низкие затраты указывали на более высокую вероятность того, что трекер присваивает обнаружение дорожке. Чтобы предотвратить назначение определенных обнаружений определенным трекам, используйте 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