trackBranchHistory

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

Описание

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

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

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

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

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

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

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

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

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

Создание

Описание

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) возвращает историю ветви на основе результатов алгоритма присвоения. Задайте присвоения обнаружений к ветвям, спискам неприсвоенных дорожек и неприсвоенных обнаружений и идентификаторов датчиков от который порожденные обнаружения. Входные параметры могут иметь любой тип числовых данных.

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=3×5 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=9×5 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