imageDatastore

Datastore для данных изображений

Описание

Использование ImageDatastore объект для управления набором файлов изображений, где каждое отдельное изображение помещается в памяти, но весь набор изображений не обязательно помещается. Можно создать ImageDatastore объект с использованием imageDatastore function, задайте его свойства, а затем импортируйте и обрабатывайте данные с помощью функций object.

Создание

Описание

imds = imageDatastore(location) создает хранилище datastore imds из набора данных изображений, заданных location.

пример

imds = imageDatastore(location,Name,Value) задает дополнительные параметры и свойства для imds использование одного или нескольких аргументов пары "имя-значение".

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

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

Файлы или папки, включенные в datastore, задаются в виде пути или DsFileSet объект.

  • path - Задайте путь как вектор символов, массив ячеек из векторов символов, строковый скаляр или строковые массивы, содержащий расположение локальных или удаленных файлов или папок.

    • Локальные файлы или папки - Задайте location как локальный путь к файлам или папкам. Если файлов нет в текущей папке, то локальный путь должен задавать полные или относительные пути. Файлы в подпапках указанной папки не включаются автоматически в datastore. При указании локального пути можно использовать символ подстановки (*). Этот символ указывает, что datastore включает все соответствующие файлы или все файлы в соответствующих папках.

    • Удаленные файлы или папки - Задайте location чтобы быть полными путями к файлам или папкам в качестве единого указателя ресурса (URL) формы hdfs:///path_to_file. Для получения дополнительной информации см. раздел Работа с удаленными данными.

  • DsFileSet объект - Вы также можете задать location как DsFileSet объект. Для получения дополнительной информации смотрите matlab.io.datastore.DsFileSet.

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

The imageDatastore функция поддерживает файлы, которые имеют imformats формат.

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

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

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

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

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

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

Пример: imds = imageDatastore('C:\dir\imagedata','FileExtensions',{'.jpg','.tif'})

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

Если вы не задаете 'IncludeSubfolders', затем значение по умолчанию false.

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

Типы данных: logical | double

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

Пример: 'FileExtensions','.jpg'

Пример: 'FileExtensions',{'.jpg','.png'}

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

Альтернативные корневые пути файловой системы, заданные как разделенная разделенными запятой парами, состоящая из '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

Источник, обеспечивающий данные метки, заданный как разделенная разделенными запятой парами, состоящая из 'LabelSource' и 'none' или 'foldernames'. Если 'none' задается, затем Labels свойство пустое. Если 'foldernames' задается, затем подписи назначаются в соответствии с именами папок и хранятся в Labels свойство. Можно позже изменить метки, обратившись к Labels свойство непосредственно.

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

В дополнение к этим парам "имя-значение", вы также можете задать любое из свойств на этой странице как пары "имя-значение", кроме Files свойство.

Свойства

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

ImageDatastore свойства описывают данные и определяют, как считать данные из datastore. Можно задать значение ImageDatastore свойства с использованием аргументов пары "имя-значение" при создании объекта datastore. Чтобы просмотреть или изменить свойство после создания объекта, используйте запись через точку.

Для примера можно создать ImageDatastore и задайте 'ReadFcn' параметр:

imds = imageDatastore('peppers.png','ReadFcn',@customreader);
Также можно назначить 'ReadFcn' на @customreader после создания ImageDatastore:
imds = imageDatastore('peppers.png');
imds.ReadFcn = @customreader;

Файлы, включенные в datastore, разрешаются как векторы символов, массив ячеек с векторами символов, строковый скаляр или строковые массивы. Каждый вектор или строка символов является полным путем к файлу. The location аргумент в imageDatastore и datastore функции определяют Files при создании datastore.

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

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

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

Папки, используемые для создания datastore, возвращенные как массив ячеек из векторов символов. Массив ячеек ориентирован как вектор-столбец. Каждый вектор символов является путем к папке, которая содержит файлы данных. The location аргумент в imageDatastore и datastore функции определяют Folders при создании datastore.

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

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

Метки файлов для файлов в datastore, заданные как вектор, массив ячеек или строковые массивы. Порядок меток в массиве соответствует порядку связанных файлов в datastore. Если вы задаете 'LabelSource','foldernames' при создании ImageDatastore объект, затем имя метки для файла является именем папки, содержащей его. Если вы не задаете 'LabelSource','foldernames', затем Labels - пустой массив ячеек или строковые массивы. Если вы меняете Files свойство после создания datastore, затем Labels свойство не обновляется автоматически для включения добавленных файлов.

Типы данных: categorical | cell | logical | double | single | string

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

function data = customreader(filename)
...
end
Если существует более одного выходного аргумента, то imageDatastore использует только первый аргумент и игнорирует остальное.

Примечание

Использование ReadFcn для преобразования или предварительной обработки 2-D изображения не рекомендованы. Для форматов файлов, распознанных imformats, определение ReadFcn замедляет эффективность imageDatastore. Более эффективные способы преобразования и предварительной обработки изображений см. в разделе «Предварительная обработка изображений для глубокого обучения» (Deep Learning Toolbox).

Пример: @customreader

Типы данных: function_handle

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

Список форматов, поддерживаемых для записи, возвращаемый как вектор-строка строк. Это свойство задает возможные выходные форматы при использовании writeall для записи выходных файлов из datastore.

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

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

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

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

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

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

Примеры

свернуть все

Создайте ImageDatastore объект, сопоставленный со всеми .tif файлы в пути MATLAB ® и его подпапках. Используйте имена папок в качестве имен меток.

imds = imageDatastore(fullfile(matlabroot,'toolbox','matlab'),...
'IncludeSubfolders',true,'FileExtensions','.tif','LabelSource','foldernames')
imds = 

  ImageDatastore with properties:

       Files: {
              ' ...\matlab\toolbox\matlab\demos\example.tif';
              ' ...\matlab\toolbox\matlab\imagesci\corn.tif'
              }
      Labels: [demos; imagesci]
    ReadSize: 1
     ReadFcn: @readDatastoreImage

Создайте ImageDatastore объект, содержащий четыре изображения и предварительный просмотр первого изображения.

imds = imageDatastore({'street1.jpg','street2.jpg','peppers.png','corn.tif'})
imds = 

  ImageDatastore with properties:

       Files: {
              ' ...\matlab\toolbox\matlab\demos\street1.jpg';
              ' ...\matlab\toolbox\matlab\demos\street2.jpg';
              ' ...\matlab\toolbox\matlab\imagesci\peppers.png'
               ... and 1 more
              }
    ReadSize: 1
      Labels: {}
     ReadFcn: @readDatastoreImage

imshow(preview(imds));

Чтение только второго и третьего изображений, по одному.

for i = 2:3
    img = readimage(imds,i);
end

Прочитайте все четыре изображения и посмотрите третье изображение.

imgs = readall(imds);
imshow(imgs{3})

Ограничения

  • Использование ReadFcn для преобразования или предварительной обработки 2-D изображений не рекомендуется. Для форматов файлов, распознанных imformats, определение ReadFcn замедляет эффективность imageDatastore. Более эффективные способы преобразования и предварительной обработки изображений см. в разделе «Предварительная обработка изображений для глубокого обучения» (Deep Learning Toolbox).

Введенный в R2015b