mergeDetections

Объедините обнаружения в кластеризованные обнаружения

Описание

пример

clusteredDetections = mergeDetections(detections,clusterIndex) обнаружения слияний, совместно использующие те же кластерные метки. По умолчанию функция объединяет обнаружения в том же кластере с помощью Гауссова алгоритма слияния смеси. Функция принимает, что все обнаружения в том же кластере совместно используют тот же Time, SensorIndex, ObjectClassID, MeasurementParameters, и ObjectAttributes свойства или поля.

clusteredDetections = mergeDetections(___,MergingFcn=mergeFcn) указывает, что функция раньше объединяла обнаружения в дополнение к входным параметрам от предыдущего синтаксиса.

Примеры

свернуть все

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

rng(2021) % For repeatable results
x1 = [5; 5; 0] + randn(3,4); % Four detections in cluster one
x2 = [5; -5; 0] + randn(3,4); % Four detections in cluster two
xFalse = 30*randn(3,2); % Two false alarms
x = [x1 x2 xFalse];

Отформатируйте эти обнаружения в массив ячеек objectDetection объекты.

detections = repmat({objectDetection(0,[0; 0; 0])},10,1);
for i = 1:10
    detections{i}.Measurement = x(:,i);
end

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

clusterIndex = [1; 1; 1; 1; 2; 2; 2; 2; 3; 4];

Используйте mergeDetections функционируйте, чтобы объединить обнаружения.

clusteredDetections = mergeDetections(detections,clusterIndex);

Визуализируйте результаты в театральном графике.

% Create a theaterPlot object.
tp = theaterPlot;

% Create two detection plotters, one for unclustered detections and one for
% clustered detections.
detPlotterUn = detectionPlotter(tp,DisplayName="Unclustered Detections", ...
    MarkerFaceColor="b",MarkerEdgeColor="b");
detPlotterC = detectionPlotter(tp,DisplayName="Clustered Detections", ...
    MarkerFaceColor="r",MarkerEdgeColor="r");

% Concatenate measurements and covariances for unclustered detections
detArray = [detections{:}];
xUn = horzcat(detArray.Measurement)';
PUn = cat(3,detArray.MeasurementNoise);

% Concatenate measurements and covariance for clustered detections
clusteredDetArray = [clusteredDetections{:}];
xC = horzcat(clusteredDetArray.Measurement)';
PC = cat(3,clusteredDetArray.MeasurementNoise);

% Plot all unclustered and clustered detections
plotDetection(detPlotterUn,xUn,PUn);
plotDetection(detPlotterC,xC,PC);

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

свернуть все

Обнаружения объектов в виде N - массив элемента objectDetection объекты, N - массив ячеек элемента objectDetection объекты или N - массив элемента структур, имена полей которых совпадают с именами свойства objectDetection объект. N является количеством обнаружений. Можно создать detections непосредственно, или можно получить detections от выходных параметров объектов датчика, таких как fusionRadarSensor, irSensor, и sonarSensor.

Кластерные индексы в виде N - вектор элемента из положительных целых чисел, где N является количеством обнаружений, заданных в detections входной параметр. Каждым элементом является кластерный индекс соответствующего обнаружения в detections входной параметр. Например, если clusterIndex(i)=k, затем iобнаружение th от detections введите принадлежит, чтобы кластеризировать k.

Функция, чтобы объединить обнаружения в виде указателя на функцию. Функция должна использовать этот синтаксис:

  detectionOut = mergeFcn(detectionsIn) 
где:

  • detectionsIn задан как массив ячеек objectDetection объекты (в том же кластере).

  • detectionOut возвращен как objectDetection объект.

Пример: @mergeFcn

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

свернуть все

Кластеризованные обнаружения, возвращенные как M - массив ячеек элемента objectDetection объекты, где M является количеством уникальных кластерных индексов, заданных в clusterIndex входной параметр.

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

Введенный в R2021b
Для просмотра документации необходимо авторизоваться на сайте