Main Content


Plot region boundaries



visboundaries(BW) draws boundaries of regions in the binary image BW on the current axes. BW is a 2-D binary image where pixels that are logical true belong to the foreground region and pixels that are logical false constitute the background. visboundaries uses bwboundaries to find the boundary pixel locations in the image.

visboundaries(B) draws region boundaries specified by B, where B is a cell array containing the boundary pixel locations of the regions, similar in structure to the first output from bwboundaries.

visboundaries(ax,___) draws region boundaries on the axes specified by ax.


visboundaries(___,Name,Value) uses name-value pair arguments to specify additional properties of the boundaries.

h = visboundaries(___) returns a handle h, for the boundaries.


collapse all

Read image.

BW = imread('blobs.png');

Compute boundaries.

B = bwboundaries(BW);

Display image and plot boundaries on image.

hold on

Figure contains an axes. The axes contains 3 objects of type line, image.

Read image and display it.

I = imread('toyobjects.png');
hold on

Segment the image using the active contours (snakes) algorithm. First, specify the initial contour location close to the object that is to be segmented.

mask = false(size(I));
mask(50:150,40:170) = true;

Display the initial contour on the original image in blue.


Figure contains an axes. The axes contains 3 objects of type line, image.

Segment the image using the 'edge' method using 200 iterations.

bw = activecontour(I,mask,200,'edge');

Display the final contour on the original image in red.

title('Blue - Initial Contour, Red - Final Contour');

Figure contains an axes. The axes with title Blue - Initial Contour, Red - Final Contour contains 5 objects of type line, image.

Input Arguments

collapse all

Binary image, specified as a logical array.

Data Types: logical

Boundary pixel locations, specified as a cell array. Each cell contains a Q-by-2 matrix, where Q is the number of boundary pixels for the corresponding region. Each row of these Q-by-2 matrices contains the row and column coordinates of a boundary pixel.

Data Types: cell

Image on which to draw boundaries, specified as an axes object.

Data Types: double

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: visboundaries(bw,'Color','b');

Color of the boundary, specified as an RGB triplet, a hexadecimal color code, a color name, or a short color name.

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'

'none'Not applicableNot applicableNot applicableNo color

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: visboundaries(bw,'Color','r');

Example: visboundaries(bw,'Color','green');

Example: visboundaries(bw,'Color',[0 0 1]);

Example: visboundaries(bw,'Color','#FF8800');

Line style of boundary edge, specified as the comma-separated pair consisting of 'LineStyle' and any line specifier in the table below.

Line StyleDescriptionResulting Line
'-'Solid line

'--'Dashed line

':'Dotted line

'-.'Dash-dotted line

'none'No lineNo line

Example: visboundaries(bw,'LineStyle','-.');

Width of the line used for the boundary, specified as a positive number. Specify this value in points, where one point = 1/72 inch.

Example: visboundaries(bw,'LineWidth',4);

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

Augment the drawn boundary with contrasting features to improve visibility on a varying background, specified as the logical flag true or false.

Example: visboundaries(bw,'EnhanceVisibility',true);

Data Types: logical

Output Arguments

collapse all

Boundary line, returned as an hggroup object. h is the child of the axes ax if specified, otherwise h is the child of the current axes.

Introduced in R2015a