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. Specify ax as the first input argument followed by any of the input argument combinations in the previous syntaxes.


visboundaries(___,Name,Value) uses name-value 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

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.


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

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 Arguments

Specify optional pairs of arguments as Name1=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.

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

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 string scalar or character vector 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. Therefore, 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"

Sample of the color red

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

Sample of the color green

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

Sample of the color blue

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

Sample of the color cyan

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

Sample of the color magenta

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

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

"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"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Example: 'Color','r'

Example: 'Color','green'

Example: 'Color',[0 0 1]

Example: '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

Sample of solid line

"--"Dashed line

Sample of dashed line

":"Dotted line

Sample of dotted line

"-."Dash-dotted line

Sample of dash-dotted line, with alternating dashes and dots

"none"No lineNo line

Example: '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: '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 a numeric or logical 1 (true) or 0 (false).

Example: '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.

Version History

Introduced in R2015a