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);

Загрузка 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-by- N матрица строк или M-by- N массив ячеек из векторов символов, где:

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

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

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

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

Временные метки систем координат, заданные как duration вектор или M-by- 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-by- 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