imageDatastore

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

Описание

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

Создание

Синтаксис

imds = imageDatastore(location)
imds = imageDatastore(location,Name,Value)

Описание

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

пример

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

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

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

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

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

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

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

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

Когда location представляет папку, datastore включает только поддерживаемые форматы файлов и игнорирует любой другой формат. Чтобы задать пользовательский список расширений файла, чтобы включать в ваш datastore, смотрите свойство 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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, разрешенный как вектор символов, массив ячеек из символьных векторов, представляют в виде строки скаляр или массив строк. Каждый вектор символов или строка являются полным путем к файлу. Аргумент location в imageDatastore и функциях datastore задает Files, когда datastore создается.

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

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

Количество файлов изображений, чтобы читать в вызове функции 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, чтобы преобразовать или предварительно обработать 2D изображения не рекомендуется. Для форматов файлов, распознанных imformats, задавая ReadFcn, замедляет производительность imageDatastore. Для более эффективных способов преобразовать и предварительно обработать изображения, смотрите, Предварительно обрабатывают Изображения для Глубокого обучения (Deep Learning Toolbox).

Пример: @customreader

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

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

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

Примеры

свернуть все

Создайте объект 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})

Ограничения

Альтернативы

Также можно создать объект ImageDatastore с помощью функции datastore. Например, ds = datastore(location,'Type','image') создает datastore из набора файлов, заданных location.

Введенный в R2015b

Для просмотра документации необходимо авторизоваться на сайте