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') создает пиксельный 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™, смотрите работу с Удаленными данными (MATLAB).

Пример: '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-by-3 матрицы

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

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

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

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

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

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

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

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 для Обработки на Различных Машинах или Кластерах (MATLAB).

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

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

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

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

ReadFcn свойство не поддержано, когда вы задаете достоверные данные gTruth.

Пример: @customreader

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

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

Примеры

свернуть все

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

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

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

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

imds = imageDatastore(imDir);

Создайте пиксельный datastore метки.

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 array
    {'sky'     }
    {'grass'   }
    {'building'}
    {'sidewalk'}

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

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

Задайте местоположение 3-D объема и данных о пиксельных метках. Эти данные являются помеченным 3-D сканированием MRI мозга.

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

Создайте пиксельный datastore метки.

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)
ans = 3×1 cell array
    {'edema'            }
    {'nonEnhancingTumor'}
    {'enhancingTumour'  }

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

h = labelvolshow(L,V);

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

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

Советы

  • 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 или Ground Truth Labeler, используйте pixelLabelTrainingData функция.

Введенный в R2017b