Отслеживание объектов с помощью присвоения GNN
multiObjectTracker Системный object™ инициализирует, подтверждает, прогнозирует, корректирует и удаляет дорожки движущихся объектов. Входными данными для многообъектного трекера являются отчеты об обнаружении, генерируемые objectDetection объект, drivingRadarDataGenerator объект, или visionDetectionGenerator объект. Многообъектный трекер принимает обнаружения от нескольких датчиков и назначает их трассам, используя критерий глобального ближайшего соседа (GNN). Каждое обнаружение назначается отдельной дорожке. Если обнаружение не может быть назначено какой-либо дорожке, на основе AssignmentThreshold трекер создает новую дорожку. Дорожки возвращаются в массиве структуры.
Новый трек начинается в предварительном состоянии. Если предварительной дорожке назначено достаточно обнаружений, ее статус изменяется на подтвержденный. Если обнаружение является известной классификацией ( ObjectClassID поле возвращаемой дорожки ненулевое), эта дорожка может быть подтверждена немедленно. Дополнительные сведения о свойствах многообъектного трекера, используемых для подтверждения дорожек, см. в разделе Алгоритмы.
Когда дорожка подтверждена, многообъектный трекер считает, что эта дорожка представляет физический объект. Если обнаружения не добавляются к дорожке в пределах заданного количества обновлений, дорожка удаляется.
Трекер также оценивает вектор состояния и ковариационную матрицу вектора состояния для каждой дорожки с использованием фильтра Калмана. Эти векторы состояния используются для прогнозирования местоположения дорожки в каждом кадре и определения вероятности назначения каждого обнаружения каждой дорожке.
Для отслеживания объектов с помощью многообъектного трекера:
Создать multiObjectTracker и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает tracker = multiObjectTrackermultiObjectTracker Системный объект со значениями свойств по умолчанию.
задает свойства для многообъектного трекера, используя одну или несколько пар имя-значение. Например, tracker = multiObjectTracker(Name,Value)multiObjectTracker('FilterInitializationFcn',@initcvukf,'MaxNumTracks',100) создает многообъектный трекер, использующий фильтр Калмана с постоянной скоростью и поддерживающий максимум 100 дорожек. Заключите каждое имя свойства в кавычки.
Чтобы обновить дорожки, вызовите созданный многообъектный трекер с аргументами, как если бы это была функция (описано здесь). Либо обновите дорожки с помощью updateTracks , указывая многообъектный трекер в качестве входного аргумента.
создает, обновляет и удаляет дорожки в многообъектном трекере и возвращает сведения о подтвержденных дорожках. Обновления основаны на указанном списке confirmedTracks = tracker(detections,time)detections, и все дорожки обновляются до указанного time. Каждый элемент в возвращаемом confirmedTracks соответствует одной дорожке.
[ также возвращает confirmedTracks,tentativeTracks] = tracker(detections,time)tentativeTracks содержит подробную информацию о предварительных треках.
[ также возвращает confirmedTracks,tentativeTracks,allTracks] = tracker(detections,time)allTracks содержащий подробную информацию обо всех подтвержденных и предварительных треках. Треки возвращаются в том порядке, в котором трекер поддерживает их внутри системы. Этот вывод можно использовать для расчета матрицы затрат, необязательного входного аргумента.
[___] = tracker( определяет матрицу затрат, возвращающую любой из выходов из предшествующих синтаксисов.detections,time,costMatrix)
Чтобы указать матрицу затрат, установите значение HasCostMatrixInput имущества multiObjectTracker Системный объект для true.
[___] = tracker(___, также указывает список ожидаемых обнаруживаемых дорожек, заданных detectableTrackIDs)detectableTrackIDs. Этот аргумент можно использовать с любым из предыдущих входных синтаксисов.
Чтобы включить этот синтаксис, установите HasDetectableTrackIDsInput свойство для true.
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
При передаче обнаружений в многообъектный трекер объект System:
Попытки назначения входных обнаружений существующим дорожкам на основе AssignmentThreshold свойства многообъектного трекера.
Создает новые дорожки из неназначенных обнаружений.
Обновляет уже назначенные треки и, возможно, подтверждает их, основываясь на ConfirmationThreshold свойство трекера.
Удаляет дорожки, не имеющие назначенных обнаружений, на основе DeletionThreshold свойство трекера.