Main Content

read

(Not recommended) Read data from bigimageDatastore

Since R2019b

The read function of the bigimageDatastore object is not recommended. Use the read function associated with the blockedImageDatastore object instead. For more information, see Compatibility Considerations.

Description

data = read(bigds) returns a batch of data from a big image datastore, bigds. Subsequent calls to the read function continue reading from the endpoint of the previous call.

example

[data,info] = read(bigds) also returns information about the extracted data, including metadata, in info.

Examples

collapse all

Create a bigimage using a modified version of image "tumor_091.tif" from the CAMELYON16 data set. The original image is a training image of a lymph node containing tumor tissue. The original image has eight resolution levels, and the finest level has resolution 53760-by-61440. The modified image has only three coarse resolution levels. The spatial referencing of the modified image has been adjusted to enforce a consistent aspect ratio and to register features at each level.

bim = bigimage('tumor_091R.tif');

Create a bigimageDatastore that manages blocks of the big image at the finest resolution level.

bimds = bigimageDatastore(bim,1)
bimds = 
  bigimageDatastore with properties:

            ReadSize: 1
          BorderSize: [0 0]
           PadMethod: 0
              Images: [1x1 bigimage]
              Levels: 1
           BlockSize: [1024 1024]
        BlockOffsets: [1024 1024]
    IncompleteBlocks: 'same'
    BlockLocationSet: [1x1 blockLocationSet]

Change the 'ReadSize' property of the datastore to 3.

bimds.ReadSize = 3;

Read one batch of image data from the datastore.

[data,info] = read(bimds);

Display the returned image data in a montage with a black border around each image. The montage shows that the datastore reads blocks of the big image in row-major order.

montage(data,'Size',[1 3],"BorderSize",10)

Figure contains an axes object. The axes object contains an object of type image.

Display the information about the returned data.

info
info = struct with fields:
              Level: [1 1 1]
        ImageNumber: [1 1 1]
    BlockStartWorld: [3x2 double]
      BlockEndWorld: [3x2 double]
     DataStartWorld: [3x2 double]
       DataEndWorld: [3x2 double]

Inspect the (x,y) coordinates of the center of the top-left pixel of each returned block of data.

info.BlockStartWorld
ans = 3×2

           1           1
        1025           1
        2049           1

Input Arguments

collapse all

Big image datastore, specified as a bigimageDatastore object.

  • The datastore contains one or more big images, Images, each with Channels number of channels.

  • The datastore reads blocks from each big image at specified resolution levels, Levels.

  • The datastore specifies the number of blocks to read in each batch, ReadSize.

  • The datastore specifies the m-by-n pixel size of blocks to read, BlockSize.

Output Arguments

collapse all

Output data, returned as a cell array with ReadSize elements. Each cell contains an m-by-n-by-Channels numeric array.

Information about output data, returned as a struct containing these fields.

Field NameDescription
LevelResolution level of the data, specified as a 1-by-ReadSize vector of positive integers.
ImageNumberIndex of the big image providing the data, specified as a 1-by-ReadSize vector of positive integers.
BlockStartWorld(x,y) coordinates of the center of the top-left pixel of the data, excluding padding, specified as a ReadSize-by-2 numeric vector. Values are in world-coordinates.
BlockEndWorld(x,y) coordinates of the center of the bottom-right pixel of the data, excluding padding, specified as a ReadSize-by-2 numeric vector. Values are in world-coordinates.
DataStartWorld(x,y) coordinates of the center of the top-left pixel of the data, including padding, specified as a ReadSize-by-2 numeric vector. Values are in world-coordinates.
DataEndWorld(x,y) coordinates of the center of the bottom-right pixel of the data, including padding, specified as a ReadSize-by-2 numeric vector. Values are in world-coordinates.

Version History

Introduced in R2019b

expand all