exponenta event banner

pixelLabelDatastore

Хранилище данных для данных пиксельной метки

Описание

Вы можете использовать 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 или для указания параметров файлов, включаемых в хранилище данных. Можно указать несколько пар имя-значение. Заключите каждое имя свойства в кавычки.

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

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

развернуть все

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

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

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

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

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

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

Если файлы недоступны локально, то полный путь к файлам или папкам должен быть интернационализированным идентификатором ресурса (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-на-3, клеточный массив векторов столбцов или клеточный массив матриц m-на-3. Значения должны быть целыми числами в диапазоне [0, 255]. Матрицы m-на-3 поддерживаются только для изображений RGB.

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

развернуть все

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

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

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

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

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

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

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

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

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

    • Определить 'AlternateFileSystemRoots' в виде массива ячеек строковых векторов.

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

    • Либо укажите 'AlternateFileSystemRoots' как массив ячеек массива ячеек символьных векторов.

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

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

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

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

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

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

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

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

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

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

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

ReadFcn не поддерживается при указании данных истинности грунта gTruth.

Пример: @customreader

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

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

Примеры

свернуть все

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

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

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

Создание хранилища данных образа.

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;

Создание хранилища данных образа.

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 сохраняет файлы в порядке их добавления в хранилище данных. При одновременном считывании изображения истинности земли и данных пиксельной метки может возникнуть несоответствие между изображениями и метками. Если это происходит, переименуйте файлы меток пикселей так, чтобы они имели правильный порядок. Например, переименовать 'file1.jpg', … , 'file9.jpg' кому 'file01.jpg', …, 'file09.jpg'.

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

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