exponenta event banner

writeFrames

Запись сигнальных кадров для данных истинности заземления на диск

Описание

fileNames = writeFrames(gTruth,signalNames,location) записывает кадры наземных источников сигнала истинности в указанные местоположения папки. Функция возвращает имена файлов, содержащих записанные кадры. fileNames содержит одно имя файла для каждого сигнала, указанного signalNames за groundTruthMultisignal объект, указанный gTruth.

Используйте эти записанные кадры и связанные метки истинности земли, полученные из gatherLabelData функционировать в качестве обучающих данных для моделей машинного обучения или глубокого обучения.

пример

fileNames = writeFrames(gTruth,signalNames,location,timestamps) задает временные метки кадров сигнала для записи. Для получения временных меток сигналов используйте gatherLabelData функция.

fileNames = writeFrames(___,Name,Value) указывает параметры, использующие один или несколько аргументов пары имя-значение, в дополнение к любой из комбинаций входных аргументов из предыдущих синтаксисов. Например, можно указать префикс и расширение типа файла имен для записанных кадров.

Примеры

свернуть все

Сбор данных метки для видеосигнала и сигнала последовательности облака точек лидара из groundTruthMultisignal объект. Запишите сигнальные кадры, связанные с данными метки, на диск и визуализируйте кадры.

Добавьте путь к папке последовательности облаков точек в путь поиска MATLAB ®. Видео уже находится в пути поиска MATLAB.

pcSeqDir = fullfile(toolboxdir('driving'),'drivingdata', ...
    'lidarSequence');
addpath(pcSeqDir);

Загрузить a groundTruthMultisignal объект, содержащий данные метки для видео и последовательности облаков точек лидара.

data = load('MultisignalGTruth.mat');
gTruth = data.gTruth;

Укажите сигналы для сбора данных метки.

signalNames = ["video_01_city_c2s_fcw_10s" "lidarSequence"];

Видео содержит метки прямоугольника, в то время как последовательность облаков точек лидара содержит метки кубов. Соберите прямоугольные метки из видео и кубовидные метки из последовательности облаков точек лидара.

labelTypes = [labelType.Rectangle labelType.Cuboid];
[labelData,timestamps] = gatherLabelData(gTruth,signalNames,labelTypes);

Отображение первых восьми строк данных метки из двух сигналов. Оба сигнала содержат данные для Car этикетка. В видео, Car метка рисуется как прямоугольная ограничительная рамка. В последовательности облаков точек лидара Car метка рисуется как кубовидная ограничивающая рамка.

videoLabelSample = head(labelData{1})
lidarLabelSample = head(labelData{2})
videoLabelSample =

  table

           Car       
    _________________

    {[299 213 42 33]}


lidarLabelSample =

  table

                            Car                         
    ____________________________________________________

    {[17.7444 6.7386 3.3291 3.6109 3.2214 3.5583 0 0 0]}

Запись кадров сигнала, связанных с собранными данными метки, во временные папки с одной папкой на сигнал. Использовать метки времени, возвращенные gatherLabelData для указания, какие сигнальные кадры следует записать.

outputFolder = fullfile(tempdir,["videoFrames" "lidarFrames"]);
fileNames = writeFrames(gTruth,signalNames,outputFolder,timestamps);
Writing 2 frames from the following signals:

* video_01_city_c2s_fcw_10s
* lidarSequence

Загрузка кадров записанного видеосигнала с помощью imageDatastore объект. Загрузите связанные данные метки прямоугольника с помощью boxLabelDatastore объект.

imds = imageDatastore(fileNames{1});
blds = boxLabelDatastore(labelData{1});

Загрузите записанные кадры лидарного сигнала с помощью fileDatastore объект. Загрузка связанных данных меток кубов с помощью boxLabelDatastore объект.

fds = fileDatastore(fileNames{2},'ReadFcn',@pcread);
clds = boxLabelDatastore(labelData{2});

Визуализация записанных видеокадров с помощью vision.VideoPlayer объект. Визуализация записанных лидарных кадров с помощью pcplayer объект.

videoPlayer = vision.VideoPlayer;

ptCloud = preview(fds);
ptCloudPlayer = pcplayer(ptCloud.XLimits,ptCloud.YLimits,ptCloud.ZLimits);

while hasdata(imds)
    % Read video and lidar frames.
    I = read(imds);
    ptCloud = read(fds);

    % Visualize video and lidar frames.
    videoPlayer(I);
    view(ptCloudPlayer,ptCloud);
end

Удалите путь к папке последовательности облаков точек.

rmpath(pcSeqDir);

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

свернуть все

Многосигнальные данные о истинности земли, указанные как groundTruthMultisignal объект или вектор groundTruthMultisignal объекты.

Имена сигналов для записи кадров, определяемые как вектор символов, скаляр строк, массив ячеек векторов символов или вектор строк. Имена сигналов должны быть действительными именами сигналов, хранящимися во входных многосигнальных данных о истинности земли. gTruth.

Получение имен сигналов из groundTruthMultisignal объект, используйте этот синтаксис, где gTruth - имя переменной объекта:

gTruth.DataSource.SignalName

Пример: 'video_01_city_c2s_fcw_10s'

Пример: "video_01_city_c2s_fcw_10s"

Пример: {'video_01_city_c2s_fcw_10s','lidarSequence'}

Пример: ["video_01_city_c2s_fcw_10s" "lidarSequence"]

Расположение папок для записи кадров, указанное как Mоколо-N матрицу строк или Mоколо-N клеточный массив символьных векторов, где:

  • M - количество groundTruthMultisignal объекты в gTruth.

  • N - количество сигналов в signalNames.

  • location(m,n) (для матричных входов) или location{m,n} (для входов массива ячеек) содержит расположение папки записи кадров для n-й сигнал signalNames который находится в mth groundTruthMultisignal объект gTruth.

Можно указать расположение папок как относительные пути или полные пути к файлам. Если какие-либо указанные расположения папок не существуют, writeFrames создает папки. Все расположения папок должны быть уникальными. Если файлы уже существуют в указанной папке и существующие файлы доступны для записи, то writeFrames функция перезаписывает их.

Временные метки кадров для записи, указанные как duration вектор или Mоколо-N массив ячеек duration векторы, где:

  • M - количество groundTruthMultisignal объекты в gTruth.

  • N - количество сигналов в signalNames.

  • timestamps{m,n} содержит временные метки для n-й сигнал signalNames который находится в mth groundTruthMultisignal объект gTruth.

При записи кадров только для одного сигнала и одного groundTruthMultisignal объект, укажите timestamps как единый duration вектор.

По умолчанию writeFrames функция записывает все кадры сигнала. Если сигнал не имеет кадра с указанными временными метками, функция записывает кадр с ближайшей предшествующей временной меткой.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'NamePrefix',["video" "lidar"],'FileType',["png" "ply"] записывает видеокадры с именами файлов формата video_001.png, video_002.pngи так далее, и записывает лидарные кадры с именами файлов формата lidar_001.ply, lidar_002.plyи так далее.

Префикс имени файла для каждого сигнала в signalNames, указанная как пара, разделенная запятыми, состоящая из 'NamePrefix' и символьный вектор, строковый скаляр, клеточный массив символьных векторов или строковый вектор.

Каждый элемент 'NamePrefix' указывает тип файла для сигнала в соответствующей позиции signalNames. По умолчанию 'NamePrefix' - имя каждого сигнала в signalNames.

Тип файла для каждого сигнала в signalNames, указанная как пара, разделенная запятыми, состоящая из 'FileType' и символьный вектор, строковый скаляр, клеточный массив символьных векторов или строковый вектор.

Каждый элемент 'FileType' указывает тип файла для сигнала в соответствующей позиции signalNames. Этот аргумент пары имя-значение используется для указания расширений файлов в именах записанных файлов.

Поддерживаемые типы файлов для сигнала зависят от типа этого сигнала. Image или PointCloud.

Тип сигналаПоддерживаемые типы файлов
ImageВсе типы файлов, поддерживаемые imwrite функция
PointCloud

"pcd" или "ply"

Файлы данных облака точек (PCD) и полигона (PLY) записываются с использованием двоичной кодировки. Для получения дополнительной информации об этих форматах файлов см. pcwrite функция.

Просмотр типов сигналов, хранящихся в groundTruthMultisignal объект, gTruth, используйте следующий код:

gTruth.DataSource.SignalType

Пример: 'FileType','png'

Пример: 'FileType',"png"

Пример: 'FileType',{'png','ply'}

Пример: 'FileType',["png" "ply"]

Отображение информации о ходе записи в командной строке MATLAB ®, указанной как разделенная запятыми пара, состоящая из 'Verbose' и логический 1 (true) или 0 (false).

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

свернуть все

Имена файлов записанных кадров, возвращаемых в виде Mоколо-N массив ячеек струнных векторов, где:

  • M - количество groundTruthMultisignal объекты в gTruth.

  • N - количество сигналов в signalNames.

  • fileNames{m,n} содержит имена файлов для кадров n-й сигнал signalNames который находится в mth groundTruthMultisignal объект gTruth.

Имена файлов для каждого сигнала возвращаются в векторе строкового столбца, где каждая строка содержит имя файла для записанного кадра. Если указан ввод timestamps, то каждое имя файла представляет собой записанный кадр на отметке времени в соответствующей позиции timestamps.

Каждый выходной файл имеет имя NamePrefix_UID.FileType, где:

  • NamePrefix - префикс имени файла. Чтобы задать префикс имени файла, используйте 'NamePrefix' аргумент пары имя-значение.

  • UID - уникальный целочисленный индекс для каждого записанного кадра. writeFrames функция генерирует эти индексы.

  • FileType - расширение типа файла. Чтобы задать расширение типа файла, используйте 'FileType' аргумент пары имя-значение.

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