ImageDatastore - Datastore for image data - MATLAB (original) (raw)

Description

Use an ImageDatastore object to manage a collection of image files, where each individual image fits in memory, but the entire collection of images does not necessarily fit. You can create an ImageDatastore object using the imageDatastore function, specify its properties, and then import and process the data using object functions.

Creation

Syntax

Description

`imds` = imageDatastore([location](#d126e338974)) creates a datastore imds from the collection of image data specified by location.

`imds` = imageDatastore([location](#d126e338974),[Name,Value](#namevaluepairarguments)) specifies additional parameters and properties for imds using one or more name-value pair arguments.

example

Input Arguments

expand all

location — Files or folders to include in datastore

FileSet | DsFileSet object | string array | character vector | cell array of character vectors

Files or folders to include in the datastore, specified as one of these values:

Files or folders can be local or remote:

When you specify a folder, the datastore includes only files with supported file formats and ignores files with any other format. To specify a custom list of file extensions to include in your datastore, see the FileExtensions name-value argument.

The imageDatastore function supports files that have an imformats format.

Example: "file1.jpg"

Example: "../dir/data/file1.png"

Example: ["C:\dir\data\file1.tif","C:\dir\data\file2.tif"]

Example: "C:\dir\data\*.jpg"

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: imds = imageDatastore("C:\dir\imagedata",FileExtensions=[".jpg",".tif"])

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: imds = imageDatastore("C:\dir\imagedata","FileExtensions",[".jpg",".tif"])

IncludeSubfolders — Subfolder inclusion flag

false (default) | true

Subfolder inclusion flag, specified as the name-value argument consisting of"IncludeSubfolders" and true orfalse. Specify true to include all files and subfolders within each folder or false to include only the files within each folder.

If you do not specify "IncludeSubfolders", then the default value isfalse.

Example: "IncludeSubfolders",true

Data Types: logical | double

FileExtensions — Image file extensions

character vector | cell array of character vectors | string scalar | string array

Image file extensions, specified as the comma-separated pair consisting of "FileExtensions" and a character vector, cell array of character vectors, string scalar, or string array. The specified extensions do not require animformats format, and you can use the empty quotes "" to represent files without extensions. If you do not specify "FileExtensions", thenimageDatastore automatically includes all images with imformats extensions in the specified path. If you want to include extensions thatimformats does not recognize, then specify all extensions.

Example: "FileExtensions",".jpg"

Example: "FileExtensions",[".jpg",".png"]

Data Types: char | cell | string

AlternateFileSystemRoots — Alternate file system root paths

string vector | cell array

Alternate file system root paths, specified as the name-value argument consisting of"AlternateFileSystemRoots" and a string vector or a cell array. Use"AlternateFileSystemRoots" when you create a datastore on a local machine, but need to access and process the data on another machine (possibly of a different operating system). Also, when processing data using the Parallel Computing Toolbox™ and the MATLAB® Parallel Server™, and the data is stored on your local machines with a copy of the data available on different platform cloud or cluster machines, you must use"AlternateFileSystemRoots" to associate the root paths.

The value of "AlternateFileSystemRoots" must satisfy these conditions:

For more information, see Set Up Datastore for Processing on Different Machines or Clusters.

Example: ["Z:\datasets","/mynetwork/datasets"]

Data Types: string | cell

LabelSource — Source providing label data

"none" (default) | "foldernames"

Source providing label data, specified as the name-value argument consisting of "LabelSource" and either"none" or "foldernames". If "none" is specified, then theLabels property is empty. If"foldernames" is specified, then labels are assigned according to the folder names and stored in theLabels property. You can later modify the labels by accessing the Labels property directly.

The "LabelSource" name-value argument is not usable if a FileSet object is used as the file or folder location.

Data Types: char | string

In addition to these name-value pairs, you also can specify any of the properties on this page as name-value pairs, except for theFiles property.

Properties

expand all

ImageDatastore properties describe the data and specify how to read the data from the datastore. You can specify the value ofImageDatastore properties using name-value arguments when you create the datastore object. To view or modify a property after creating the object, use the dot notation.

For example, you can create an ImageDatastore object and specify the "ReadFcn" parameter:

imds = imageDatastore("peppers.png","ReadFcn",@customreader);

Alternatively, you can assign "ReadFcn" to @customreader after you create the ImageDatastore:

imds = imageDatastore("peppers.png"); imds.ReadFcn = @customreader;

Files — Files included in datastore

character vector | cell array of character vectors | string scalar | string array

Files included in the datastore, resolved as a character vector, cell array of character vectors, string scalar, or string array. Each character vector or string is a full path to a file. The location argument in the imageDatastore anddatastore functions defines Files when the datastore is created.

Example: {"C:\dir\data\file1.jpg";"C:\dir\data\file2.jpg"}

Data Types: char | cell | string

Folders — Folders used to construct datastore

cell array of character vectors

This property is read-only.

Folders used to construct datastore, returned as a cell array of character vectors. The cell array is oriented as a column vector. Each character vector is a path to a folder that contains data files. Thelocation argument in theimageDatastore and datastore functions defines Folders when the datastore is created.

Data Types: cell

ReadSize — Number of image files to read

1 (default) | positive integer scalar

Number of image files to read in a call to the read function, specified as a positive integer scalar. Each call to theread function reads at mostReadSize images.

Labels — File labels

categorical, logical, or numeric vector | cell array | string array

File labels for the files in the datastore, specified as a vector, a cell array, or a string array. The order of the labels in the array corresponds to the order of the associated files in the datastore. If you specify"LabelSource","foldernames" when creating theImageDatastore object, then the label name for a file is the name of the folder containing it. If you do not specify"LabelSource","foldernames", thenLabels is an empty cell array or string array. If you change the Files property after the datastore is created, then the Labels property is not automatically updated to incorporate the added files.

Data Types: categorical | cell | logical | double | single | string

ReadFcn — Function that reads image data

@readDatastoreImage (default) | function handle

Function that reads image data, specified as a function handle. The function must take an image file name as input, and then it outputs the corresponding image data. For example, if customreader is the specified function to read the image data, then it must have a signature similar to this:

function data = customreader(filename) ... end

If more than one output argument exists, thenimageDatastore uses only the first argument and ignores the rest.

Note

Using ReadFcn to transform or pre-process 2-D images is not recommended. For file formats recognized by imformats, specifyingReadFcn slows down the performance ofimageDatastore. For more efficient ways to transform and pre-process images, see Preprocess Images for Deep Learning (Deep Learning Toolbox).

Example: @customreader

Data Types: function_handle

SupportedOutputFormats — Formats supported for writing

string row vector

This property is read-only.

Formats supported for writing, returned as a row vector of strings. This property specifies the possible output formats when using writeall to write output files from the datastore.

DefaultOutputFormat — Default output format

string scalar

This property is read-only.

Default output format, returned as a string scalar. This property specifies the default format when using writeall to write output files from the datastore.

Data Types: string

Object Functions

Examples

collapse all

Create ImageDatastore Object Using Subfolders and Labels

Create an ImageDatastore object associated with all .tif files in the MATLAB® path and its subfolders. Use the folder names as label names.

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\matlab_images\tif\corn.tif' } Folders: { '...\matlab\toolbox\matlab' } Labels: [demos; imagesci] AlternateFileSystemRoots: {} ReadSize: 1 SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage

Specify Images to Read

Create a FileSet object containing four images. Create an ImageDatastore object.

fs = matlab.io.datastore.FileSet(["street1.jpg","street2.jpg","peppers.png","corn.tif"])

fs = FileSet with properties:

                NumFiles: 4
            NumFilesRead: 0
                FileInfo: Show FileInfo for all 4 files
AlternateFileSystemRoots: {}

imds = imageDatastore(fs)

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 } Folders: { '...\matlab\toolbox\matlab\demos'; '...\matlab\toolbox\matlab\imagesci' } AlternateFileSystemRoots: {} ReadSize: 1 Labels: {} SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage

Preview the first image.

image of street

Read only the second and third images, one at a time.

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

Read all four images and view the third image.

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

image of vegetables

Limitations

Extended Capabilities

Thread-Based Environment

Run code in the background using MATLAB® backgroundPool or accelerate code with Parallel Computing Toolbox™ ThreadPool.

Usage notes and limitations:

For more information, see Run MATLAB Functions in Thread-Based Environment.

Version History

Introduced in R2015b

expand all

R2024b: Read data over HTTP and HTTPS using datastore functions

You can read data from primary online sources by performing datastore operations over an internet URL.