Create circle
viscircles(___,
uses name-value pair arguments to specify additional properties of the
circles.Name,Value
)
returns
a handle, h
= viscircles(___)h
, to the drawn circles.
Read the image into the workspace and display it.
A = imread('circlesBrightDark.png');
imshow(A)
Define the radius range.
Rmin = 30; Rmax = 65;
Find all the bright circles in the image within the radius range.
[centersBright, radiiBright] = imfindcircles(A,[Rmin Rmax],'ObjectPolarity','bright');
Find all the dark circles in the image within the radius range.
[centersDark, radiiDark] = imfindcircles(A,[Rmin Rmax],'ObjectPolarity','dark');
Draw blue lines around the edges of the bright circles.
viscircles(centersBright, radiiBright,'Color','b');
Draw red dashed lines around the edges of the dark circles.
viscircles(centersDark, radiiDark,'LineStyle','--');
The viscircles
function does not clear the target axes before plotting circles. To remove circles that have been previously plotted in an axes, use the cla
function. To illustrate, this example creates a new figure and then loops, drawing a set of circles with each iteration, clearing the axes each time.
figure colors = {'b','r','g','y','k'}; for k = 1:5 % Create 5 random circles to display, X = rand(5,1); Y = rand(5,1); centers = [X Y]; radii = 0.1*rand(5,1); % Clear the axes. cla % Fix the axis limits. xlim([-0.1 1.1]) ylim([-0.1 1.1]) % Set the axis aspect ratio to 1:1. axis square % Set a title. title(['k = ' num2str(k)]) % Display the circles. viscircles(centers,radii,'Color',colors{k}); % Pause for 1 second. pause(1) end
centers
— Coordinates of circle centersCoordinates of circle centers, specified as a P
-by-2
matrix, such as that obtained from imfindcircles
. The
x-coordinates of the circle centers are in the first
column and the y-coordinates are in the second column.
The coordinates can be integers (of any numeric type) or floating-point
values (of type double
or
single
).
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
radii
— Circle radiiCircle radii, specified as a column vector such as that returned
by imfindcircles
. The radius value at radii(j)
corresponds to the circle with center coordinates centers(j,:)
.
The values of radii
can be nonnegative integers
(of any numeric type) or floating-point values (of type double
or single
).
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
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
.
viscircles(centers,radii,'Color','b')
specifies blue circle edges,
using the short color name for blue.'EnhanceVisibility'
— Augment drawn circles with contrasting features to improve visibilitytrue
(default) | false
Augment drawn circles with contrasting features to improve visibility, specified as a logical
value true
or false
. If you set
the value to true
, then viscircles
draws a contrasting circle below the colored circle.
Data Types: logical
'Color'
— Color of boundary'red'
(default) | RGB triplet | hexadecimal color code | color name | short color nameColor 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 Name | Short Name | RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|---|---|
'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 applicable | Not applicable | Not applicable | No color |
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB® uses in many types of plots.
RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|
[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: viscircles(centers,radii,'Color','r');
Example: viscircles(centers,radii,'Color','green');
Example: viscircles(centers,radii,'Color',[0 0
1]);
Example: viscircles(centers,radii,'Color','#FF8800');
'LineStyle'
— Line style of circle edge'-'
(default) | '--'
| ':'
| '-.'
| 'none'
Line style of circle edge, specified as the comma-separated
pair consisting of 'LineStyle'
and any line specifier
in the table below.
Line Style | Description | Resulting Line |
---|---|---|
'-' | Solid line |
|
'--' | Dashed line |
|
':' | Dotted line |
|
'-.' | Dash-dotted line |
|
'none' | No line | No line |
'LineWidth'
— Width of circle edge2
(default) | positive numberWidth of circle edge, specified a positive number. Line width is expressed in points, where each point equals 1/72 of an inch.
Data Types: double
You have a modified version of this example. Do you want to open this example with your edits?