Main Content

getBlock

(To be removed) Read block of bigimage object

Since R2019b

The getBlock function of the bigimage object will be removed in a future release. Use the getBlock function associated with the blockedImage object instead. For more information, see Compatibility Considerations.

Description

example

data = getBlock(bigimg,level,locationWorld) reads the big image data in bigimg at the specified resolution level, and returns pixel data for the entire block that contains coordinate locationWorld.

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');

Display the bigimage by using the bigimageshow function. Overlay a grid that shows the block boundaries at the finest resolution level.

hb = subplot(1,2,1);
bigimageshow(bim,'GridVisible','on','GridLevel',1);

Specify the (x,y) coordinate of a block to display. Get the block containing the coordinate. Add a Point ROI over the displayed bigimage at the specified coordinate.

coord = [2500,2500];
blk = getBlock(bim,1,coord);
hp = drawpoint(hb,'Position',coord);

In the figure, display the block next to the entire bigimage. You can use imshow to display the block because the block fits in memory and has a single resolution level.

ha = subplot(1,2,2);
imshow(blk,'Parent',ha)

Add a listener to the Point ROI. When you drag the ROI with the mouse, the figure is updated to show the block containing the current ROI coordinates.

title(hb,'Drag Point to Select Block');
addlistener(hp, ...
    'ROIMoved',@(~,~) imshow(getBlock(bim,1,hp.Position),'Parent',ha));

Input Arguments

collapse all

Big image, specified as a bigimage object.

Resolution level, specified as a positive integer that is less than or equal to the number of resolution levels of bigimg.

Coordinate of a point, specified as a 1-by-2 numeric vector of the form [x y]. The location is specified in world coordinates, which are the pixel locations relative to the highest resolution level. The position must be a valid position within bigimg.

Output Arguments

collapse all

Pixel data, returned as a numeric array of the same data type as the big image, bigimg.ClassUnderlying.

Version History

Introduced in R2019b

expand all

R2023b: getBlock will be removed

The bigimage object and this function will be removed in a future release. Use the getBlock function of the blockedImage object instead.

To update your code, first create a blockedImage object to read your image data. Then, follow these steps:

  • Convert from (x, y) world coordinates to (row, column) world coordinates by switching the order of the two elements.

  • Convert the world coordinates to pixel subscripts using the world2sub function. If you want to get the block at a resolution level other than level 1, then specify that level by using the Level name-value argument.

  • Convert the pixel subscripts to block subscripts using the sub2blocksub function. If you want to get the block at a resolution level other than level 1, then specify that level by using the Level name-value argument.

    Note that if the dimensionality of the blocked image is greater than 2, then increase the length of the vector of pixel subscripts by one for each unspecified dimension. You can specify the value 1 for these additional elements. For example, a 2-D color image has a dimensionality of 3 because of the color channel. You must append one element to the vector of pixel subscripts when you call the sub2blocksub function.

  • Pass the blocked image and the block subscripts to the getBlock function. If you want to get the block at a resolution level other than level 1, then specify that level by using the Level name-value argument.

Discouraged UsageRecommended Replacement

This example uses the getBlock function with a bigimage object to get the image data in the block surrounding world (x, y) coordinates (1000, 2500) at the highest resolution level.

filename = "tumor_091R.tif";
bim = bigimage(filename);
coordWorld = [1000 2500];
blk = getBlock(bim,1,coordWorld);

Here is equivalent code using a blockedImage object. Because this image is a color image with dimensionality 3, add an element to the pixel subscripts to represent the unspecified dimension.

filename = "tumor_091R.tif";
blockedIm = blockedImage(filename);
coordWorld = [1000 2500];
coordRC = flip(coordWorld);
subPixel = world2sub(blockedIm,coordRC);
subBlock = sub2blocksub(blockedIm,[subPixel 1]);
blk = getBlock(blockedIm,subBlock);

This example repeats the operation at resolution level 2.

lvl = 2;
blk = getBlock(bim,lvl,coordWorld);

This example repeats the operations at resolution level 2 by specifying the Level name-value argument.

lvl = 2;
subPixel = world2sub(blockedIm,coordRC,Level=lvl);
subBlock = sub2blocksub(blockedIm,[subPixel 1],Level=lvl);
blk = getBlock(blockedIm,subBlock,Level=lvl);