exponenta event banner

trackBranchHistory

Track-oriented MHT разветвление и история ответвлений

Описание

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

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

  • Неназначенные ветви пути

  • Неназначенные обнаружения

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

Чтобы создать диспетчер истории филиала и обновить журнал филиала, выполните следующие действия.

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

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

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

Создание

Описание

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

пример

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

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в 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-by-L вектор целых чисел, где L - количество обнаружений. i-й элемент originatingSensor соответствует SensorIndex значение свойства objectDetection объект i.

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

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

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

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

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

  • ParentID - идентификатор родительской ветви, то есть ветви, из которой возникла текущая ветвь. Ветви, созданные из одного и того же родителя, имеют одно и то же ParentID. A ParentID Значение 0 указывает на новую дорожку. Эти дорожки создаются из гипотез, соответствующих неназначенным обнаружениям.

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

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

Сканировать NСканирование N - 1. . .Сканирование N - D
Датчик - 1Датчик - 2. . .Датчик - S Датчик - 1Датчик - 2. . .Датчик - S . . .Датчик - 1Датчик - 2. . .Датчик - S

1

0

...

0

1

2

...

0

...

0

0

...

0

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

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

release(obj)

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

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

Примеры

свернуть все

Примените результаты алгоритма назначения к менеджеру истории ветвей, ориентированному на слежение за несколькими гипотезами (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. Предыдущее сканирование - Scan 1, которое было Scan 2 в предыдущем обновлении назначения. История сдвинула одно сканирование вправо.

  • Ветви 1 и 3 являются ветвями для неназначенных дорожек.

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

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

  • Ветви 7-10 являются ветвями, созданными для назначений путей.

Ссылки

[1] Вертманн, Джон Р. «Пошаговое описание вычислительно эффективной версии отслеживания множественных гипотез». В трудах SPIE том 1698, Сигнал и обработка малых целей. 1992, стр 288–300. дои: 10.1117/12.139379.

См. также

Функции

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