pixelLabelDatastore

Datastore для данных о пиксельных метках

Описание

Можно использовать PixelLabelDatastore объект для чтения данных о пиксельных метках для семантической сегментации.

Чтение данных о пиксельных метках из PixelLabelDatastore, использовать read функция. Эта функция возвращает категориальный массив, который содержит категориальную метку, назначенную каждому местоположению (i, j) пикселя или (i, j, k) воксели местоположению.

Создание

Создайте PixelLabelDatastore объект с использованием pixelLabelDatastore функция, описанная здесь. После создания объекта можно использовать функции, которые получают доступ к данным и управляют ими. Вы можете использовать запись через точку для изменения ReadSize и ReadFcn свойства.

Описание

пример

pxds = pixelLabelDatastore(gTruth) создает PixelLabelDatastore объект из groundTruth объект или массив groundTruth объекты.

pxds = pixelLabelDatastore(location,classNames,pixelLabelIDs) создает PixelLabelDatastore объект из файлов изображений, которые хранят данные о пиксельных метках, в папке или файлах, заданных location. Функция создает объект с помощью идентификаторов пикселей, которые сопоставляют значения пиксельных меток изображений с именами классов.

pxds = pixelLabelDatastore(___,Name,Value) создает PixelLabelDatastore объект, использующий аргументы пары "имя-значение", чтобы задать один или оба из ReadSize или AlternateFileSystemRoots свойства. Для входа файла изображения можно также использовать аргументы пары "имя-значение", чтобы задать ReadFcn свойство или для задания опций для файлов, включаемых в datastore. Можно задать несколько пары "имя-значение". Заключайте каждое имя свойства в кавычки.

Для примера, pixelLabelDatastore(loc,names,ids,'ReadSize',8,'FileExtensions','png') создает pixel label datastore, который включает только изображения PNG и который читает восемь изображений во время каждого вызова read функция.

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

расширить все

Достоверные данные, заданные как groundTruth объект или как массив groundTruth объекты. Каждый groundTruth объект содержит информацию об источнике данных, списке определений меток и всех отмеченных метках для набора меток основной истины.

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

locationОписание
вектор символов, строковые массивыИмя папки. Файлы в подпапках указанной папки не включаются автоматически в datastore. datastore включает только изображения с поддерживаемыми форматами файлов и игнорирует любой другой формат. Просмотр списка поддерживаемых форматов файлов при помощи imformats функция.
массив ячеек из векторов символовИмена файлов нескольких изображений.

pixelLabelDatastore расширяет имена файлов и хранит полные пути к файлам в Files свойство.

Вы можете использовать символ подстановки (*) при указании location. Этот символ указывает, что все соответствующие файлы или все файлы в соответствующих папках включены в datastore.

Если файлов нет в текущей папке, необходимо указать полный или относительный путь.

Если файлы недоступны локально, то полный путь к файлам или папкам должен быть интернационализированным идентификатором ресурса (IRI), таким как hdfs :// hostname: portnumber/ path_to_file. Для получения информации об использовании datastore с Amazon S3™ и HDFS™ см. «Работа с удаленными данными».

Пример: 'file1.jpg'

Пример: '../dir/data/file1.png'

Пример: {'C:\dir\data\file1.tif','C:\dir\data\file2.tif'}

Пример: 'C:\dir\data\*.jpg'

Типы данных: char | cell

Имена классов, заданные как массив ячеек из строк или векторов символов. pixelLabelDatastore преобразует имена в массив ячеек и сохраняет имена в ClassNames свойство.

Пример: ["sky" "grass" "building" "sidewalk"]

Идентификаторы для сопоставления меток пикселей с ClassNames, заданный как вектор, матрица m -by-3, массив ячеек из векторов-столбцов или массив ячеек из матриц m by-3. Значения должны быть целыми числами в области значений [0, 255]. m -by-3 матрицы поддерживаются только для изображений RGB.

ФорматОписание
векторДлина вектора должна равняться количеству имен классов. Значения должны быть уникальными.
m -by-3 матрицаm соответствует количеству имен классов. Каждая строка содержит вектор с 3 элементами, представляющий значение пикселя RGB для связи с каждым именем класса. Векторы должны быть уникальными. Используйте этот формат для данных о пиксельных метках, хранящихся в виде изображений RGB.

массив ячеек векторов-столбцов

массив ячеек из матриц m-на-3

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

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

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

Пример: 'IncludeSubfolders',true

Включите подпапки, заданные как разделенная разделенными запятой парами, состоящая из 'IncludeSubfolders' и false (0), или true (1). Задайте true включать все файлы и подпапки в каждую папку или false для включения только файлов в каждую папку.

The IncludeSubfolders аргумент не поддерживается, когда задаются достоверные данные gTruth.

Расширения файлов для включения в datastore, заданные как разделенная разделенными запятой парами, состоящая из 'FileExtensions' и вектор символов, массив ячеек из векторов символов, строковый скаляр или строковые массивы. По умолчанию datastore включает файлы со всеми расширениями, поддерживаемыми imformats функция.

The FileExtensions аргумент не поддерживается, когда задаются достоверные данные gTruth.

Пример: ["png" "gif" "bmp"]

Свойства

расширить все

Это свойство доступно только для чтения.

Файлы, включенные в datastore, задаются как векторы символов или массив ячеек векторов символов. Каждый вектор символов является полным путем к файлу. Когда вы создаете PixelLabelDatastore объект, используйте location аргумент, чтобы задать это свойство.

Это свойство доступно только для чтения.

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

Максимальное количество файлов изображений для чтения в каждом вызове read функция, заданная как положительное целое число.

Альтернативные корневые пути файловой системы, заданные как разделенная разделенными запятой парами, состоящая из 'AlternateFileSystemRoots' и строковый вектор или массив ячеек. Использование 'AlternateFileSystemRoots' когда вы создаете datastore на локальной машине, но должны получить доступ и обработать данные на другой машине (возможно, другой операционной системы). Кроме того, при обработке данных с помощью Parallel Computing Toolbox™ и MATLAB® Parallel Server™, и данные хранятся на локальных машинах с копией данных, доступных на другой платформе облака или кластерных машинах, необходимо использовать 'AlternateFileSystemRoots' для связи корневых путей.

  • Чтобы связать набор корневых путей, эквивалентных друг другу, задайте 'AlternateFileSystemRoots' как строковый вектор. Для примера,

    ["Z:\datasets","/mynetwork/datasets"]

  • Чтобы связать несколько наборов корневых путей, эквивалентных datastore, задайте 'AlternateFileSystemRoots' как массив ячеек, содержащий несколько строк, где каждая строка представляет набор эквивалентных корневых путей. Задайте каждую строку в массиве ячеек как строковый вектор или массив ячеек из векторов символов. Для примера:

    • Задайте 'AlternateFileSystemRoots' как массив ячеек из строковых векторов.

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • Кроме того, задайте 'AlternateFileSystemRoots' как массив ячеек массива ячеек из векторов символов.

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

Значение 'AlternateFileSystemRoots' должны удовлетворять следующим условиям:

  • Содержит одну или несколько строк, где каждая строка задает набор эквивалентных корневых путей.

  • Каждая строка задает несколько корневых путей, и каждый корневой путь должен содержать не менее двух символов.

  • Корневые пути уникальны и не являются подпапками друг друга.

  • Содержит по крайней мере один корневой путь, указывающий на расположение файлов.

Для получения дополнительной информации смотрите Настройка Datastore для обработки на различных машинах или кластерах.

Пример: ["Z:\datasets","/mynetwork/datasets"]

Типы данных: string | cell

Функция, которая считывает пиксельные маркированные данные изображения, заданные как указатель на функцию. Пользовательская функция чтения должна взять имя файла изображения за вход, а затем вывести соответствующие пиксельные маркированные данные как категориальную матрицу, логическую матрицу или числовую матрицу типа данных uint8. Для примера, если customreader является заданной функцией для чтения данных изображения, тогда она должна иметь сигнатуру, подобную следующей:

function C = customreader(filename)
...
end
Если функция read имеет более одного выходного аргумента, то используется только первый. Остальные игнорируются.

The ReadFcn свойство не поддерживается при задании достоверных данных gTruth.

Пример: @customreader

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

combineОбъедините данные из нескольких хранилищ данных
countEachLabelКоличество вхождений меток пикселей или коробок
hasdataОпределите, доступны ли данные для чтения из datastore
numpartitionsКоличество разделов для datastore
partitionРазделите метку datastore
previewЧтение первой строки данных в datastore
readЧтение данных из datastore
readallЧтение всех данных в datastore
readimageЧтение указанных данных о пиксельных метках файла
resetСбросьте datastore в начальное состояние
shuffleВозврат перемещенной версии datastore
transformПреобразуйте datastore
subsetСоздайте подмножество datastore или набора файлов
isPartitionableОпределите, является ли datastore разделяемым
isShuffleableОпределите, является ли datastore shuffleable

Примеры

свернуть все

Наложите данные о пиксельных метках на изображение.

Установите местоположение изображения и данные о пиксельных метках.

dataDir = fullfile(toolboxdir('vision'),'visiondata');
imDir = fullfile(dataDir,'building');
pxDir = fullfile(dataDir,'buildingPixelLabels');

Создайте изображение datastore.

imds = imageDatastore(imDir);

Создайте хранилище данных меток пикселей.

classNames = ["sky" "grass" "building" "sidewalk"];
pixelLabelID = [1 2 3 4];
pxds = pixelLabelDatastore(pxDir,classNames,pixelLabelID);

Считайте изображение и данные о пиксельных метках. read(pxds) возвращает категориальную матрицу, C. Элемент C (i, j) в матрице является категориальной меткой, назначенной пикселю в местоположении l (i, j).

I = read(imds);
C = read(pxds);

Отображение категорий меток в C.

categories(C{1})
ans = 4x1 cell
    {'sky'     }
    {'grass'   }
    {'building'}
    {'sidewalk'}

Наложите и отобразите данные о пиксельных метках на изображение.

B = labeloverlay(I,C{1});
figure
imshow(B)

Figure contains an axes. The axes contains an object of type image.

Укажите местоположение 3-D объема и данных о пиксельных метках. Эти данные являются меткой 3-D МРТ скана головного мозга.

dataDir = fullfile(toolboxdir('images'),'imdata');
imDir = fullfile(dataDir,'BrainMRILabeled','images');
pxDir = fullfile(dataDir,'BrainMRILabeled','labels');

Укажите пользовательский ReadFcn. Этот пример задает функцию, вызываемую samplePXDSMatReader (определено в конце примера), которые считывают 3-D изображения из .MAT файлов изображений.

matReader = @samplePXDSMatReader;

Создайте изображение datastore.

imds = imageDatastore(imDir,'FileExtensions','.mat','ReadFcn',matReader);

Создайте хранилище данных меток пикселей.

classNames = ["edema","nonEnhancingTumor","enhancingTumour"];
pixelLabelID = [1 2 3];
pxds = pixelLabelDatastore(pxDir,classNames,pixelLabelID,'FileExtensions','.mat','ReadFcn',matReader);

Чтение тома и данных о пиксельных метках. L является категориальной матрицей, где L(i,j,k) - категориальная метка, назначенная V(i,j,k).

V = read(imds);
L = read(pxds);

Отображение категорий меток.

categories(L{1})
ans = 3×1 cell
    {'edema'            }
    {'nonEnhancingTumor'}
    {'enhancingTumour'  }

Визуализируйте результат с помощью labelvolshow.

h = labelvolshow(L{1},V);

Этот пример задает вспомогательную функцию, samplePXDSMatReader, чтобы считать 3-D данные изображения из файлов изображения. Эта функция загружает .MAT файл и возвращает первую переменную, сохраненную в этом файле.

function data = samplePXDSMatReader(filename)
    inp = load(filename);
    f = fields(inp);
    data = inp.(f{1});
end

Совет

  • A pixelLabelDatastore хранит файлы в лексикографическом порядке. Например, если у вас есть двенадцать файлов с именем 'file1.jpg', 'file2.jpg', …, 'file11.jpg', и 'file12.jpg', затем файлы хранятся в следующем порядке:

    'file1.jpg'
    'file10.jpg'
    'file11.jpg'
    'file12.jpg'
    'file2.jpg'
    'file3.jpg'
    ...
    'file9.jpg'

    Напротив, imageDatastore хранит файлы в том порядке, в котором они добавляются в datastore. Если вы одновременно считываете основную истину изображение и данные о пиксельных метках, то вы можете столкнуться с несоответствием между изображениями и метками. Если это происходит, переименуйте файлы пиксельных меток так, чтобы они имели правильный порядок. Например, переименуйте 'file1.jpg', …, 'file9.jpg' на 'file01.jpg', …, 'file09.jpg'.

  • Чтобы извлечь данные семантической сегментации из groundTruth объект, сгенерированный приложением Video Labeler, используйте pixelLabelTrainingData функция.

Введенный в R2017b