skimage2.draw.circle_perimeter#
- skimage2.draw.circle_perimeter(r, c, radius, method='bresenham', shape=None)[source]#
Generate circle perimeter coordinates.
- Parameters:
- r, cint
Centre coordinate of circle.
- radiusint
Radius of circle.
- method{âbresenhamâ, âandresâ}, optional
bresenham : Bresenham method (default) andres : Andres method
- shapetuple, optional
Image shape which is used to determine the maximum extent of output pixel coordinates. This is useful for circles that exceed the image size. If None, the full extent of the circle is used. Must be at least length 2. Only the first two values are used to determine the extent of the input image.
- Returns:
- rr, cc(N,) ndarray of int
Bresenham and Andresâ method: Indices of pixels that belong to the circle perimeter. May be used to directly index into an array, e.g.
img[rr, cc] = 1.
Notes
Andres method presents the advantage that concentric circles create a disc whereas Bresenham can make holes. There is also less distortions when Andres circles are rotated. Bresenham method is also known as midpoint circle algorithm. Anti-aliased circle generator is available with
circle_perimeter_aa.References
[1]J.E. Bresenham, âAlgorithm for computer control of a digital plotterâ, IBM Systems journal, 4 (1965) 25-30.
[2]E. Andres, âDiscrete circles, rings and spheresâ, Computers & Graphics, 18 (1994) 695-706.
Examples
>>> from _skimage2.draw import circle_perimeter >>> img = np.zeros((10, 10), dtype=np.uint8) >>> rr, cc = circle_perimeter(4, 4, 3) >>> img[rr, cc] = 1 >>> img array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 1, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)