exponenta event banner

imageDatastore

Хранилище данных для данных изображения

Описание

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

Создание

Описание

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

пример

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

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

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

Файлы или папки, включенные в хранилище данных, указанные как путь или DsFileSet объект.

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

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

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

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

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

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' при создании хранилища данных на локальном компьютере, но при необходимости доступа и обработки данных на другом компьютере (возможно, в другой операционной системе). Кроме того, при обработке данных с помощью 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

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

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

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

Свойства

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

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

Например, можно создать ImageDatastore и укажите 'ReadFcn' параметр:

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Пример: @customreader

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Создание 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. Более эффективные способы преобразования и предварительной обработки изображений см. в разделе Препроцессные изображения для глубокого обучения (панель инструментов глубокого обучения).

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