trackBranchHistory

Ориентированная на дорожку история ветвления и ответвления MHT

Описание

Система trackBranchHistory object™ является ориентированным на дорожку, менеджером по истории ответвления отслеживания мультигипотезы (MHT). Объект поддерживает историю ответвлений дорожки (гипотезы), которые основаны на результатах алгоритма присвоения, таких как алгоритм, используемый функцией assignTOMHT. Учитывая новое сканирование набора датчиков, результаты алгоритма присвоения включают:

  • Присвоения обнаружений датчика к определенным ответвлениям дорожки

  • Неприсвоенные ответвления дорожки

  • Неприсвоенные обнаружения

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

Создать менеджера по истории ответвления и обновить историю ответвления:

  1. Создайте объект trackBranchHistory и установите его свойства.

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

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

Создание

Синтаксис

branchHistoryMgr = trackBranchHistory
branchHistoryMgr = trackBranchHistory(Name,Value)

Описание

branchHistoryMgr = trackBranchHistory создает Системный объект trackBranchHistory, branchHistoryMgr, со значениями свойств по умолчанию.

пример

branchHistoryMgr = trackBranchHistory(Name,Value) свойства наборов для объекта trackBranchHistory при помощи одной или нескольких пар "имя-значение". Например, branchHistoryMgr = trackBranchHistory('MaxNumTracks',250,'MaxNumTrackBranches',5) создает объект trackBranchHistory, который может поддержать максимум 250 дорожек и 5 ответвлений дорожки на дорожку. Заключите имена свойства в кавычки. Заданные значения свойств могут быть любым типом числовых данных, но они должны все иметь совпадающий тип данных.

Свойства

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

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

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

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

Максимальное количество датчиков, заданных как положительное целое число.

Максимальное количество сканирований сохраняется в истории ответвления, заданной как положительное целое число. Типичные значения от 2 до 6. Более высокие значения увеличивают вычислительную загрузку.

Максимальное количество дорожек, которые менеджер по истории ответвления может поддержать, заданный как положительное целое число.

Максимальное количество ответвлений на дорожку, которую менеджер по истории ответвления может поддержать, заданный как положительное целое число.

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

Синтаксис

history = branchHistoryMgr(assignments,unassignedTracks,unassignedDetections,originatingSensor)

Описание

пример

history = branchHistoryMgr(assignments,unassignedTracks,unassignedDetections,originatingSensor) возвращает историю ответвления на основе результатов алгоритма присвоения. Задайте присвоения обнаружений к ответвлениям, спискам неприсвоенных дорожек и неприсвоенных обнаружений и идентификаторов датчиков от который порожденные обнаружения. Входные параметры могут иметь любой тип числовых данных.

Функция assignTOMHT возвращает результаты присвоения как значения uint32, но входные параметры к branchHistoryMgr могут иметь любой тип числовых данных.

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

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

Присвоение дорожки переходит к обнаружениям, заданным как P-by-2 матрица целых чисел, где P является количеством присвоений. Первые списки столбцов индексы ответвления дорожки. Вторые списки столбцов индексы обнаружения. То же ответвление может быть присвоено нескольким обнаружениям. То же обнаружение может быть присвоено нескольким ответвлениям.

Например, если assignments = [1 1; 1 2; 2 1; 2 2], строки assignments задают эти присвоения:

  • [1 1] — Ответвление 1 было присвоено обнаружению 1.

  • [1 2] — Ответвление 1 было присвоено обнаружению 2.

  • [2 1] — Ответвление 2 было присвоено обнаружению 1.

  • [2 2] — Ответвление 2 было присвоено обнаружению 2.

Индексы неприсвоенных ответвлений дорожки, заданных как Q-by-1 вектор целых чисел, где Q является количеством неприсвоенных ответвлений дорожки. Каждый элемент unassignedTracks должен соответствовать индексам ответвления дорожки, в настоящее время сохраненного в Системном объекте trackBranchHistory.

Индексы неприсвоенных обнаружений, заданных как R-by-1 вектор целых чисел, где R является количеством неприсвоенных обнаружений. Каждое неприсвоенное обнаружение приводит к ответвлению нового трека.

Индексы датчиков, от который каждое обнаружение, порожденное, заданное как 1 L вектором целых чисел, где L является количеством обнаружений. i th элемент originatingSensor соответствует значению свойства SensorIndex объекта objectDetection i.

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

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

История ответвления, возвращенная как матрица целых чисел.

Каждая строка history представляет уникальное ответвление дорожки. history имеет 3 + (D ×S) столбцы, где D является количеством сохраняемых сканирований (глубина истории), и S является максимальным количеством сохраняемых датчиков. Первые три столбца представляют следующую информацию о каждом ответвлении дорожки:

  • TrackID — ID дорожки, которая сопоставлена с ответвлением. Отследите ответвления, которые приняты, чтобы произойти из той же цели, имеют тот же ID дорожки. Если ответвление происходит из неприсвоенного обнаружения, то ответвление получает ID нового трека.

  • ParentID — ID родительского ответвления, то есть, ответвления, от который текущее порожденное ответвление. Ответвления, которые были созданы из того же родительского элемента, имеют тот же ParentID. ParentID 0 указывает на новый трек. Эти дорожки создаются из гипотез, соответствующих неприсвоенным обнаружениям.

  • BranchID — Уникальный идентификатор ответвления дорожки. Каждое ответвление, созданное из неприсвоенного обнаружения или присвоения, получает новый ID ответвления.

Остающийся D ×S столбцы содержит идентификаторы обнаружений, присвоенных каждому ответвлению. Ответвление может быть присвоено самое большее одному обнаружению на сканирование и на датчик. Таблица показывает организацию этих столбцов с демонстрационными обнаружениями. N является количеством сканирований. Значение 0 означает, что датчику на том сканировании не присвоили обнаружение ему.

Отсканируйте NОтсканируйте N – 1. . .Отсканируйте ND
Датчик – 1Датчик – 2. . .Датчик – S Датчик – 1Датчик – 2. . .Датчик – S . . .Датчик – 1Датчик – 2. . .Датчик – S

1

0

...

0

1

2

...

0

...

0

0

...

0

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

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

release(obj)

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

getHistoryПолучите историю ответвления сохраняемых дорожек
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

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

Примените результаты алгоритма присвоения к ориентированному на дорожку, менеджеру по истории ответвления отслеживания мультигипотезы (MHT). Просмотрите получившиеся ответвления дорожки (гипотезы).

Создайте менеджера по истории ответвления MHT, который является Системой trackBranchHistory object™. Установите объект поддержать историю четырех датчиков и двух сканирований.

branchHistoryMgr = trackBranchHistory('MaxNumSensors',4,'MaxNumHistoryScans',2)
branchHistoryMgr = 

  trackBranchHistory with properties:

          MaxNumSensors: 4
     MaxNumHistoryScans: 2
           MaxNumTracks: 200
    MaxNumTrackBranches: 3

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

emptyAssignment = zeros(0,2,'uint32');
emptyUnassignment = zeros(0,1,'uint32');
unassignedDetections = uint32([1;2;3]);
originatingSensor = [1 1 2];
history = branchHistoryMgr(emptyAssignment,emptyUnassignment, ...
    unassignedDetections,originatingSensor);

Просмотрите текущую историю ответвления при помощи функции getHistory. Каждое обнаружение присвоено отдельной дорожке.

getHistory(branchHistoryMgr)
ans =

  3x5 table

    TrackID    ParentID    BranchID                     Scan2                                       Scan1                  
                                       Sensor1    Sensor2    Sensor3    Sensor4    Sensor1    Sensor2    Sensor3    Sensor4
    _______    ________    ________    ________________________________________    ________________________________________

       1          0           1           1          0          0          0          0          0          0          0   
       2          0           2           2          0          0          0          0          0          0          0   
       3          0           3           0          3          0          0          0          0          0          0   

Задайте несколько присвоений ответвления и несколько неприсвоенных ответвлений дорожки и обнаружений.

  • Присвойте ответвление 1 обнаружениям 1 и 2.

  • Присвойте ответвление 2 обнаружениям 1 и 2.

  • Рассмотрите ответвления дорожки 1 и 3 неприсвоенных.

  • Рассмотрите обнаружения 1, 2, и 3 неприсвоенных.

assignments = uint32([1 1; 1 2; 2 1; 2 2]);
unassignedTracks = uint32([1;3]);
unassignedDetections = uint32([1;2;3]);

Обновите менеджера по истории ответвления с присвоениями и неприсвоенными дорожками и обнаружениями.

history = branchHistoryMgr(assignments,unassignedTracks, ...
    unassignedDetections,originatingSensor);

Просмотрите обновленную историю ответвления.

getHistory(branchHistoryMgr)
ans =

  9x5 table

    TrackID    ParentID    BranchID                     Scan2                                       Scan1                  
                                       Sensor1    Sensor2    Sensor3    Sensor4    Sensor1    Sensor2    Sensor3    Sensor4
    _______    ________    ________    ________________________________________    ________________________________________

       1          1            1          0          0          0          0          1          0          0          0   
       3          3            3          0          0          0          0          0          3          0          0   
       4          0            4          1          0          0          0          0          0          0          0   
       5          0            5          2          0          0          0          0          0          0          0   
       6          0            6          0          3          0          0          0          0          0          0   
       1          1            7          1          0          0          0          1          0          0          0   
       1          1            8          2          0          0          0          1          0          0          0   
       2          2            9          1          0          0          0          2          0          0          0   
       2          2           10          2          0          0          0          2          0          0          0   

Осмотрите историю ответвления.

  • Новое сканирование является Сканированием 2. Предыдущее сканирование является Сканированием 1, который был Сканированием 2 в предыдущем обновлении присвоения. История переключила одно сканирование направо.

  • Ответвления 1 и 3 являются ответвлениями для неприсвоенных дорожек.

  • Ответвление 2 больше не находится в истории, потому что это не считалось неприсвоенным. Его присвоение на обнаружения 1 и 2 созданных ответвления 9 и 10.

  • Ответвления 4–6 являются ответвлениями, созданными для неприсвоенных обнаружений.

  • Ответвления 7–10 являются ответвлениями, созданными для присвоений дорожки.

Ссылки

[1] Вертманн, Джон Р. "Постепенное Описание В вычислительном отношении Эффективной Версии Нескольких Отслеживание Гипотезы". В Продолжениях Издания 1698 SPIE, Сигнала и Обработки Маленьких Целей. 1992, стр 288–300. doi: 10.1117/12.139379.

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

Функции

Системные объекты

Введенный в R2018b