pixelLabelDatastore

Datastore для пикселя маркирует данные

Описание

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

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

Создание

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

Синтаксис

pxds = pixelLabelDatastore(gTruth)
pxds = pixelLabelDatastore(location,classNames,pixelLabelIDs)
pxds = pixelLabelDatastore(___,Name,Value)

Описание

пример

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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Считайте все пиксельные данные о метке
readimageСчитайте заданный пиксельный файл данных метки
resetСбросьте пиксельный datastore метки к начальному состоянию
transformПреобразуйте datastore

Примеры

свернуть все

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

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

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

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

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

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

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

Отобразите категории метки в C.

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

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

B = labeloverlay(I,C);
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