imageDatastore

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

Описание

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

Создание

Описание

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 свойство.

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

Типы данных: логический | 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

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

Папки, используемые, чтобы создать datastore, возвратились как массив ячеек из символьных векторов. Массив ячеек ориентирован как вектор-столбец. Каждый вектор символов является путем к папке, которая содержит файлы данных. 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 преобразовать или предварительно обработать 2D изображения не рекомендуются. Для форматов файлов, распознанных 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Объедините данные от нескольких datastores
isPartitionableОпределите, partitionable ли datastore
isShuffleableОпределите, shuffleable ли datastore

Примеры

свернуть все

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

Ограничения

Введенный в R2015b