Main Content

bigimageshow

Display 2-D blockedImage object

Description

A bigimageshow object displays data from a blockedImage object. The bigimageshow object progressively loads image data based on image extents and screen resolution.

Creation

Description

bigimageshow(bim) displays the 2-D blocked image bim.

For categorical data, bigimageshow sets the axis colormap to parula. For numeric data, gray is the default colormap.

bigimageshow(hax,bim) displays the blocked image, bim, in the axes specified by hax.

b = bigimageshow(___) returns the bigimageshow object b. Use b to modify the display settings after you display the blocked image.

example

b = bigimageshow(___,Name,Value) sets initial display properties using name-value pairs. You can specify multiple name-value pairs. Enclose each argument or property name in quotes.

For example, bigimageshow(bim,'GridVisible','on','GridLineStyle',':') displays the blocked image, bim, and overlays dotted grid lines.

Input Arguments

expand all

Blocked image, specified as a blockedImage object.

Parent axes of bigimageshow object, specified as an axes object.

Properties

expand all

Parent axes of the bigimageshow object, specified as an axes object. If you do not specify a parent, bigimageshow uses the handle to the current figure, gca. If a figure does not exist, bigimageshow creates a new figure.

2-D blockedImage object to display, specified as a blockedImage object.

Color data mapping method, specified as 'direct' or 'scaled'. Use this property to control the mapping of color data values in CData into the colormap. CData must be a vector or a matrix defining indexed colors. This property has no effect if CData is a 3-D array defining RGB colors.

The methods have these effects:

  • 'direct' — Interpret the values as indices into the current colormap. Values with a decimal portion are fixed to the nearest lower integer.

    • If the values are of type double or single, values of 1 or less map to the first color in the colormap. Values equal to or greater than the length of the colormap map to the last color in the colormap.

    • If the values are of type uint8, uint16, uint32, uint64 , int8, int16, int32, or int64, values of 0 or less map to the first color in the colormap. Values equal to or greater than the length of the colormap map to the last color in the colormap (or up to the range limits of the type).

    • If the values are of type logical, values of 0 map to the first color in the colormap and values of 1 map to the second color in the colormap.

  • 'scaled' — Scale the values to range between the minimum and maximum color limits. The CLim property of the axes contains the color limits.

Transparency data, specified in one of these forms:

  • Numeric scalar — Use a consistent transparency across the entire image.

  • 2-D blockedImage object — Transparency data must have the same rows and columns extent as the CData 2-D blockedImage object. The blocked image can have multiple resolution levels, in which case, bigimageshow selects the level closest to the current ResolutionLevel for display.

The AlphaDataMapping property controls how MATLAB® interprets the alpha data transparency values.

Example: 0.5

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Interpretation of AlphaData values, specified as one of these values:

  • 'none' — Interpret the values as transparency values. A value of 1 or greater is completely opaque, a value of 0 or less is completely transparent, and a value between 0 and 1 is semitransparent.

  • 'scaled' — Map the values into the figure’s alphamap. The minimum and maximum alpha limits of the axes determine the alpha data values that map to the first and last elements in the alphamap, respectively. For example, if the alpha limits are [3 5], alpha data values less than or equal to 3 map to the first element in the alphamap. Alpha data values greater than or equal to 5 map to the last element in the alphamap. The ALim property of the axes contains the alpha limits. The Alphamap property of the figure contains the alphamap.

  • 'direct' — Interpret the values as indices into the figure’s alphamap. Values with a decimal portion are fixed to the nearest lower integer:

    • If the values are of type double or single, values of 1 or less map to the first element in the alphamap. Values equal to or greater than the length of the alphamap map to the last element in the alphamap.

    • If the values are of type integer, then values of 0 or less map to the first element in the alphamap. Values equal to or greater than the length of the alphamap map to the last element in the alphamap (or up to the range limits of the type). The integer types are uint8, uint16, uint32, uint64, int8, int16, int32, and int64.

    • If the values are of type logical, values of 0 map to the first element in the alphamap and values of 1 map to the second element in the alphamap.

Resolution level of the 2-D blockedImage object to display, specified as a positive integer that identifies a resolution level of the 2-D blockedImage object in the CData property. Resolution level can also be specified as 'fine' or 'coarse' corresponding to these two limits. The default value is computed based on available screen space and resolution.

Selection mode for resolution level, specified as one of these values:

  • 'auto' — Automatically select resolution level based on parent axes and available screen size.

  • 'manual' — Manually specify resolution level by setting the ResolutionLevel property.

Grid visibility, specified as 'off' or 'on'. bigimageshow spaces the grid in world units to include as many pixels as specified by CData.BlockSize at the current GridResolutionLevel.

Resolution level of blocked image at which to show grid, specified as one of these values:

  • positive integer — Display the grid specified as a numeric scalar that identifies a resolution level of the 2-D blockedImage object in CData property. Value is between 1 and the value of the NumLevels property of the blocked image in the bigimageshow CData property.

  • 'fine' — Display the grid at the finest resolution level.

  • 'coarse' — Display the grid at the coarsest resolution level.

By default, GridLevel has the same value as ResolutionLevel property.

Selection mode for grid level, specified as one of these values:

  • 'auto' — Select the grid resolution level to match the image data resolution level ResolutionLevel.

  • 'manual' — Manually specify the grid resolution level by setting the GridLevel property.

Grid line color, specified as an RGB triplet, a hexadecimal color code, a color name, or a short color name. To display the grid lines, set the GridVisible property to 'on'.

For a custom color, specify an RGB triplet or a hexadecimal color code.

  • An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0,1]; for example, [0.4 0.6 0.7].

  • A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (#) followed by three or six hexadecimal digits, which can range from 0 to F. The values are not case sensitive. Thus, the color codes '#FF8800', '#ff8800', '#F80', and '#f80' are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

Color NameShort NameRGB TripletHexadecimal Color CodeAppearance
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.

RGB TripletHexadecimal Color CodeAppearance
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Example: b.GridColor = [1 0 0]

Example: b.GridColor = 'r'

Example: b.GridColor = 'red'

Example: b.GridColor = '#FF0000'

Grid line transparency, specified as a value in the range [0, 1]. A value of 1 means completely opaque and a value of 0 means completely transparent. To display the grid lines, set the GridVisible property to 'on'.

Example: b.GridAlpha = 0.5

Grid line width, specified as a positive numeric value, measured in points. To display the grid lines, set the GridVisible property to 'on'.

Grid line style, specified as one of the line styles in this table.

Line StyleDescriptionResulting Line
'-'Solid line

'--'Dashed line

':'Dotted line

'-.'Dash-dot line

To display the grid lines, set the GridVisible property to 'on'.

Example: b.GridLineStyle = '--'

Interpolation method used to resample pixels, specified as 'linear' for bilinear interpolation, or 'nearest' for nearest neighbor interpolation.

For categorical data, bigimageshow supports only nearest neighbor interpolation. For logical data, the default value is 'nearest'.

On Windows systems with a software version of OpenGL, the only supported interpolation option is 'nearest'.

Control image visibility, specified as one of these values:

  • 'on' — Display the bigimageshow object.

  • 'off' — Hide the object without deleting it. You still can access the properties of an invisible object.

Object Functions

showmaskShow mask overlay at specified inclusion threshold
hidemaskHide mask overlay in bigimageshow object

Examples

collapse all

Create a blocked image using a modified version of the 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 = blockedImage('tumor_091R.tif');

Display the blocked image.

h = bigimageshow(bim);

Zoom in on a region in the image.

xlim([2100, 2600])
ylim([1800 2300])

To view the image at various resolution levels, specify a new value for the ResolutionLevel property. The axis limits remain the same, but bigimageshow ensures that the images from other levels are correctly sized. When you set ResolutionLevel , the ResolutionLevelMode value changes to 'manual' automatically.

h.ResolutionLevel = 3;
pause(1);
h.ResolutionLevel = 2;
pause(1);
h.ResolutionLevel = 1;
pause(1);

Create a blocked image from a sample image included with the toolbox.

bim = blockedImage('tumor_091R.tif','BlockSize', [128 128]);

Display the blocked image with bigimageshow, specifying that you want the grid to be visible, on the finest resolution level. Also specify the color, width, and transparency.

 h = bigimageshow(bim,...
      'GridVisible','on', 'GridLevel', 1,...
      'GridLineWidth', 2, 'GridColor','k','GridAlpha',0.3);

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

bim = blockedImage('tumor_091R.tif');

Create a coarse mask.

bmask = apply(bim, @(im)im2gray(im.Data)<120, "Level", 3);

Overlay the mask as an alpha layer.

ha1 = subplot(1,2,1);
h = bigimageshow(bim);
h.AlphaData = bmask;
h.AlphaDataMapping = 'direct';
alphamap([0.4 1])
h.Parent.Color = 'r';

Independently visualize the mask.

ha2 = subplot(1,2,2);
bigimageshow(bmask);

linkaxes([ha1, ha2]);

Create a blocked image 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 = blockedImage('tumor_091R.tif');

Create a mask using the coarsest resolution level of the blocked image.

bmask = apply(bim, @(im)im2gray(im.Data)<120, "Level", 3);

Display the blocked image with the mask.

h = bigimageshow(bim);
showmask(h, bmask);

Experiment with different inclusion thresholds and block sizes to get a better fit of the mask over the stained area. By default, the inclusion threshold is 0.5.

showmask(h, bmask, 'InclusionThreshold', 0.2);
showmask(h, bmask, 'InclusionThreshold', 0);
showmask(h, bmask, 'InclusionThreshold', 0.06);

Change the block size to get a tighter fit.

showmask(h, bmask, 'InclusionThreshold', 0.06, 'BlockSize', [256 256]);
showmask(h, bmask, 'InclusionThreshold', 0.14, 'BlockSize', [256 256]);

When you are satisfied with the mask, use it to segment the lymph node.

bls = selectBlockLocations(bim,'BlockSize', [256 256],...
                                'Mask', bmask, 'InclusionThreshold', 0.14);
bregion = apply(bim, @(im)im.Data, 'BlockLocationSet', bls);
figure
bigimageshow(bregion);

Create a blocked image using a modified version of the 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 = blockedImage('tumor_091R.tif');

Create a label image at a coarse level.

cim = gather(bim);
cgim = im2gray(cim);
numClasses = 4;
thresh = multithresh(cgim, numClasses-1);
labels = imquantize(cgim, thresh);
imagesc(labels)
axis square
title('Coarse label image');

Convert the labels image back to a blockedImage, using the same spatial referencing as the original image.

blabels = blockedImage(labels,'WorldStart',bim.WorldStart(3,1:2),...
    'WorldEnd', bim.WorldEnd(3,1:2));

Display the original blockedImage.

figure
hB = bigimageshow(bim);

Overlay the labels image on the original blocked image in a new axis. Use interpolation to ensure labels have crisp boundaries and the AlphaData property to control the transparency of the label layer. Turn off the axes visibility so the underlying image shows through. Specify unique colors for each label.

hLa = axes;
hL = bigimageshow(blabels, 'Parent', hLa);
hL.Interpolation = 'nearest';
hL.AlphaData = 0.3;
hLa.Visible = 'off';
hLa.CLim = [1 numClasses];
colormap(hLa,hsv(numClasses));

References

[1] Bejnordi, Babak Ehteshami, Mitko Veta, Paul Johannes van Diest, Bram van Ginneken, Nico Karssemeijer, Geert Litjens, Jeroen A. W. M. van der Laak, et al. “Diagnostic Assessment of Deep Learning Algorithms for Detection of Lymph Node Metastases in Women With Breast Cancer.” JAMA 318, no. 22 (December 12, 2017): 2199–2210. https://doi.org/10.1001/jama.2017.14585.

Introduced in R2019b