a shape A can also be defined as the set of centers of the discs that touch the boundary of A in two or more locations. This definition assures that the skeleton points are equidistant from the shape boundary and is mathematically equivalent to Blum's medial axis transform. Ridges of the distance function Many definitions of skeleton make use of the concept of distance function, which is a function that returns for each point x inside a shape A its distance to the closest point on the boundary of A. Using the distance function is very attractive because its computation is relatively fast. One of the definitions of skeleton using the distance function is as the ridges of the distance function. There is a common mis-statement in the literature that the skeleton consists of points which are "locally maximum" in the distance transform. This is simply not the case, as even cursory comparison of a distance transform and the resulting skeleton will show. Ridges may have varying height, so a point on the ridge may be lower than its immediate neighbor on the ridge. It is thus not a local maximum, even though it belongs to the ridge. It is, however, less far away vertically than its ground distance would warrant. Otherwise it would be part of the slope. Other definitions Points with no upstream segments in the distance function. The upstream of a point x is the segment starting at x which follows the maximal gradient path. Points where the gradient of the distance function are different from 1 (or, equivalently, not well defined) Smallest possible set of lines that preserve the topology and are equidistant to the borders Skeletonization algorithms There are many different algorithms for computing skeletons for shapes in digital images, as well as continuous sets. Using morphological operators (See Morphological skeleton) Supplementing morphological operators with shape based pruning Using intersections of distances from boundary sections Using curve evolution Using level sets Finding ridge points on the distance function "Peeling" the shape, without changing the topology, until convergence Zhang-Suen Thinning Algorithm Skeletonization algorithms can sometimes create unwanted branches on the output skeletons. Pruning algorithms are often used to remove these branches. See also Medial axis Straight skeleton β-skeleton Grassfire Transform Stroke-based fonts Notes References . . . . . . . . . . . . . . Open source software ITK (C++) Skeletonize3D (Java) Graphics