Transcript
Page 1: Integrating digital topology in image-processing libraries

I

JI

a

A

R

R

2

A

K

D

I

I

[ild

0d

c o m p u t e r m e t h o d s a n d p r o g r a m s i n b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58

journa l homepage: www. int l .e lsev ierhea l th .com/ journa ls /cmpb

ntegrating digital topology in image-processing libraries

ulien Lamy ∗

rcad, 1, Place de l’Hopital, 67091 Strasbourg Cedex, France

r t i c l e i n f o

rticle history:

eceived 14 February 2006

eceived in revised form

8 August 2006

ccepted 28 August 2006

a b s t r a c t

This paper describes a method to integrate digital topology informations in image-

processing libraries. This additional information allows a library user to write algorithms

respecting topological constraints, for example, a seed fill or a skeletonization algorithm. As

digital topology is absent from most image-processing libraries, such constraints cannot be

fulfilled. We describe and give code samples for all the structures necessary for this integra-

tion, and show a use case in the form of a homotopic thinning filter inside ITK. The obtained

eywords:

igital topology

mage-processing library

TK

filter can be up to a hundred times as fast as ITK’s thinning filter and works for any image

dimension. This paper mainly deals of integration within ITK, but can be adapted with only

minor modifications to other image-processing libraries.

© 2006 Elsevier Ireland Ltd. All rights reserved.

Code genericity

1. Introduction

Digital image processing is by nature a discrete process:though signal processing algorithms can be applied to digi-tal images, they have to be adapted in some way to take intoaccount that the image they process is not a continuous signalanymore but a set of pixels, or of voxels for three-dimensionalimages.

This discrete nature causes few problems at the geometriclevel, as most of the geometric operations that can be appliedon an image are independent of the underlying grid. At a topo-logical level, this is however different. The notion at the verybase of topology, the neighborhood, is radically different fromcontinuous spaces to discrete spaces. This leads to continuoustopological algorithms not respecting topological constraintswhen applied on a digital grid.

Algorithms based on topological information are numer-ous, from connected component labeling to skeletonization

1] or loop removal, all of which are used in the field of med-cal image processing [2–4]. In two major image-processingibraries, ITK [5] and Vigra [6], the type of neighborhood useduring the algorithm is hard-coded in that algorithm. This

∗ Tel.: +33 388 119 079; fax: +33 388 119 099.E-mail address: [email protected].

169-2607/$ – see front matter © 2006 Elsevier Ireland Ltd. All rights resoi:10.1016/j.cmpb.2006.08.006

causes of course a loss of flexibility, but also a loss of coher-ence when processing both the foreground and the back-ground of a digital image, as it is a well-known fact thattwo different connectivities must be used for the backgroundand the foreground [7]. If this condition is not respected, theJordan theorem [8] will not hold and situations will arisewhere a closed curve does not partition the space in tworegions.

This rigid characteristic of those both major libraries isdue to the lack of pertinent data structures to correctly rep-resent the topology of digital images. In this paper, we showhow to integrate the digital topology information in an image-processing library in a way that is:

• generic, with respect to both the image dimension and thedifferent types of neighborhood;

• automated, in the sense that as few “special case” code aspossible has to be written;

• fast, by pre-computing as many things as possible.

The language used in this paper is C++, as this work wasrealized within the ITK framework. However, the concepts

erved.

Page 2: Integrating digital topology in image-processing libraries

m s i n b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58

Fig. 1 – Cells in R2, with underlying digital grid andcoordinates. Green: 0-cells (vertices); yellow: 1-cells (edges);blue: 2-cells (faces). (For interpretation of the references tocolour in this figure legend, the reader is referred to the

• Ji = Ii if Ii = ]zi, zi + 1[,• Ji = ]zi − 1, zi + 1[ if Ii = {zi}.

Fig. 2 – Cells in R3. Green: 0-cells (vertices); yellow: 1-cells

52 c o m p u t e r m e t h o d s a n d p r o g r a

explained here could easily be adapted to other languages,and other image-processing libraries.

We will first present the limitations of two major image-processing libraries, ITK and Vigra, with respect to digitaltopology, and detail the theoretical background. We will thenpresent the necessary structures to integrate digital topologyin an image-processing library, and give an example on how touse these structures to implement a homotopic skeletoniza-tion algorithm. We conclude by summarizing our work and bygiving leads for future improvements.

2. Previous work

In this section, we show how both the ITK and Vigra librarieslack the necessary structures to correctly embed digital topol-ogy in the images and algorithms.

In ITK, there is no structure related to digital topology. Allalgorithms use a hard-coded neighborhood, usually the 18-neighborhood in three-dimensions, and the 4-neighborhoodin two-dimensions. As these neighborhoods are hard-coded,it is not possible to use coherent connectivities for the back-ground and the foreground.

In Vigra, there is a basic support for digital topology, usingthe NeighborhoodCirculator class. This class is howeverlimited to two-dimensional images and treats the four- andeight-connectivity in a non-generic way. In our sense, thisis not an easily maintainable solution: each connectivity istreated as a special case. And as the developer has to hand-code every case, this multiplies the possible sources of errorsby the number of cases.

The lack of digital topology information in those two majorimage-processing libraries shows that it will be difficult, oreven impossible, to write algorithms respecting topologicalconstraints.

3. Digital topology basics

We will now recall the basics of digital topology, and presentthe notations used in the rest of the article. To ensure that ourframework will be generic with respect both to the dimensionof the image and the type of neighborhood, we will use a celldecomposition representation [9].

In this representation, a binary image of any dimension isrepresented as a set of cells, with well-defined neighboringrelations, rather that just a set of pixels (cells of dimension 2)or voxels (cells of dimension 3).

3.1. Cells

Let us consider images of dimension n. A k-cell of Rn [9] isdefined as a subset of Rn of the form c = I1 × · · · × In such that:

• Ii is either of the form ]zi, zi + 1[ or the form {zi} (zi ∈Z);• k of the n sets Ii are of the form ]zi, zi + 1[ and the other n − k

are of the form {z }.

i

The dimension of a k-cell is k. A n-cell has the form ]z1,z1 + 1[ × ]z2, z2 + 1[× · · · ×]zn, zn + 1[, and is thus a pixel/voxel ofthe image, occupying a unit area/volume.

web version of the article.)

Similarly, a 0-cell has the form {z1}× {z2}× · · · × {zn}, andis a vertex of a pixel/voxel, of coordinates (z1, z2, . . ., zn).

A graphical definition of the cells of R2 and R3 is presentedin Figs. 1 and 2.

Using the more usual vocabulary of modeling, we can seethat we have the following equivalences, up to three-cells:

• 0-cell: vertices;• 1-cell: edges;• 2-cells: faces;• 3-cells: solids.

We will now define the open star of a cell, which will beused in the definition of connectivity. The open star St(c) of a k-cell c is the smallest open set containing c, i.e. St(c) = J1 × · · · × Jnwhere

(edges); blue: 2-cells (faces); red: 3-cells (solids). (Forinterpretation of the references to colour in this figurelegend, the reader is referred to the web version of thearticle.)

Page 3: Integrating digital topology in image-processing libraries

c o m p u t e r m e t h o d s a n d p r o g r a m s i n b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58 53

Fig. 3 – Open stars of 0-cell (vertex, left) and 1-cell (edge,r

ctR

3

Tdrn

ce

n1lttl

ecdwd

(

Tb

F(

Table 1 – Equivalences between connectivities expressedwith usual notation and with cell notation

Regular connectivity Cell connectivity

4, in two dimensions (2,1)8, in two dimensions (2,0)6, in three dimensions (3,2)18, in three dimensions (3,1)26, in three dimensions (3,0)

ight) in R2.

From this definition, we can see that the open star of a k-cellcontains the cell c as well as every �-cell adjacent to c such

hat k ≤ � ≤ n. A graphical representation of the open stars in2 can be seen in Fig. 3.

.2. Connectivity

his cell decomposition and the open star definition yields aefinition and a notation of connectivity that is generic withespect to both the dimension of the image and the type ofeighborhood.

Let di be the dimension of the image. We say that two di-ells (i.e. pixels or voxels) c1 and c2 are (di, dj)-neighbors if therexist a dj-cell (dj < di) c such that c1 ∈ St(c) and c2 ∈ St(c).

As shown in Fig. 4, in two-dimension, the (2, 0)-eighborhood is equivalent to the 8-neighborhood and the (2,)-neighborhood is equivalent to the 4-neighborhood. Simi-arly, in three-dimension, the (3,0)-neighborhood is equivalento the 26-neighborhood, the (3, 1)-neighborhood is equivalento the 18-neighborhood and the (3,2)-neighborhood is equiva-ent to the 6-neighborhood.

Using that definition, we can see that there are di differ-nt possible neighborhoods for a given image dimension. Wean also see that two di-cells that are (di, dj)-neighbors have

j coordinates which are the same, and di − dj coordinateshich differ by −1 or +1. The number of neighbors in a (di,

j)-neighborhood is then

di

dj

)2di−dj (1)

his result will allow us to compute the exact number of neigh-ors in a later section.

ig. 4 – (2,0)-Neighborhood (left) and (2, 1)-neighborhoodright).

Fig. 5 – Simple closed curve, which can invalidate theJordan theorem.

From this notion of neighborhood, we say that two (di)-cells c1 and c2 are (di, dj)-connected if there exists an integerk (dj ≤ k ≤ di − 1) such that c1 and c2 are (di, k)-neighbors. Weget the same mappings as mentioned above, which are sum-marized in Table 1.

3.3. Jordan theorem and background connectivity

In the continuous space Rn, the Jordan theorem states that asimple (i.e. non-overlapping) closed surface divides the spacein two parts, the interior and the exterior. In a discrete space,depending on how the connectivities are chosen for the fore-ground and the background, this theorem can be invalidated.The simple closed curved show in Fig. 5 intuitively divides thespace in two parts. However, if the curve is (2, 0)-connectedand the background is also (2, 0)-connected, the backgroundis no more divided in two parts. In the opposite case, i.e. the (2,1)-connectivity is used for the background and the foreground,the background has two components, but the curve enclosingit is not closed anymore.

It has been proven [10] that the (di, di − 1)-connectivity mustbe used either for the foreground or the background. The (di,0)-connectivity is usually chosen for the other connectivity.

4. Integration in an image-processinglibrary

With the basic notions of neighborhood and connectivity welldefined, we now present the C++ structures necessary to inte-

grate digital topology in an image-processing library. We firstpresent the connectivity structure, then a helper to definethe background connectivity from the foreground connectiv-ity, and finally show how to use those to compute topological
Page 4: Integrating digital topology in image-processing libraries

m s i

54 c o m p u t e r m e t h o d s a n d p r o g r a

numbers, which characterize the topology of a point in animage.

4.1. Connectivity

We have seen in the previous section that the connectivity def-inition based on cell decomposition allows a notation partic-ularly suited for programming: a connectivity is fully definedby the dimension of the image and the minimum dimensionof the cell connecting two pixels/voxels.

We want the connectivity to be fully operational at the startof the program – no special initialization should be done by theuser – and to be a constant object, as the neighbors associatedto a given connectivity should not be changed during the pro-gram. We also wish that there is exactly one object associatedto each connectivity, as there should not be several instancesof a given connectivity.

The static aspect of the dimensions that parameterize theconnectivity is mapped to static polymorphism, i.e. templates.Our connectivity object is thus templated by two parameters,the dimension of the image and the minimum dimension ofthe cell connecting two pixels/voxels, which gives the proto-type shown below, uint meaning here unsigned int.

The automated initialization and the unique instance areachieved using the singleton design pattern [11]. For an easiersyntax, the singleton returns a reference to the object, insteadof a pointer. The next code fragment shows the singleton partof the connectivity object interface. Note that the constness isachieved both in the interface (public part) and in the imple-mentation (private part):

4.1.1. Features of the connectivity objectOnce the basic requirements are met using the methodsshown above, we can add the connectivity information to theconnectivity object. This information is composed of an arrayof neighbor points and two tests.

The array of neighbor points is automatically computed onthe first creation of a connectivity object, using the resultsgiven in Eq. (1). It is filled by every point in the neighborhoodof the origin, i.e. points whose coordinates have dj coordinatesset to 0, and di − dj coordinates set to +1 or −1. This array isprovided for algorithms that need to scan every neighbor.

For algorithms that do not scan every neighbor but needto access connectivity information for a particular point, weimplemented two connectivity tests: the first test returns trueif its argument is in the (di, dj)-neighborhood of the origin.

n b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58

The second test, built on the first one, returns true if its twoarguments are (di, dj)-neighbors.

The interface for these features is shown below:

4.2. Background connectivity

In order to simplify the use of the connectivity class, we pro-vide helpers to automatically define the background connec-tivity cb associated to a given foreground connectivity cf. Asmentioned above, the (di, di − 1) connectivity must be presentin the (cf, cb) couple for the Jordan theorem to be respected. Ifthe foreground connectivity is not (di, di − 1), then we define cb

as (di, di − 1). Otherwise, i.e. the foreground connectivity is (di,di − 1), we arbitrarily define cb as (di, 0).

Programming-wise, we achieve this by using partial spe-cialization of templates [12]. We define a class named Back-

groundConnectivity, templated by a connectivity type,which contains the typedef for the background connectivityassociated with the parameter. A simple use-case is givenbelow. In this example, the foreground connectivity is set to(3, 2) (i.e. 26-connectivity in three-dimension), and the back-ground connectivity is then set to (3, 0) (i.e. 6-connectivity inthree-dimension):

In the following, the abbreviations FGC end BGC in the codewill refer to the foreground and background connectivities.The partial template specialization we use is shown next. Thefirst definition is the main template, setting the backgroundconnectivity to (di, di − 1). The special cases, i.e. when theforeground connectivity is (di, di − 1) are expressed by the tworemaining definition:

Page 5: Integrating digital topology in image-processing libraries

s i n

idtofl

bbeb

4

AopMdp(d

wXn

toaaib

nwcdib

c o m p u t e r m e t h o d s a n d p r o g r a m

Note that the specialization for the case cf = (di, di − 1)s explicit for each dimension. This is due to a currentrawback of the C++ language, as it is forbidden to have aemplate argument (here di − 1) depending on an argumentn which the template is specialized (here di) [12]. Hope-ully this limitation will be lifted in the next version of theanguage.

This helper class allows to template a topological algorithmy the foreground and background connectivities, for flexi-ility, and to make use of default template parameters, forase of use. Such an example is shown in the code fragmentelow:

.3. Topological numbers

fter having designed a basic class representing the topol-gy, we can easily build more elaborate tools, like the com-utation of topological numbers. Defined by Bertrand andalandain [13], the topological numbers are an easy way to

efine the topology of a point p inside an image I, using only’s neighborhood. In three-dimension, using respectively the3,2)- and the (3, 0)-connectivity for the foreground, they areefined as

T(3,2)(p, I) = #Cp

(3,2)(N∗(3,1)(p) ∩ I),

T(3,0)(p, I) = #Cp

(3,0)(N∗(3,0)(p) ∩ I)

here #Cpc (X) is the number of c-connected components in

which are c-adjacent to p, and where N∗c (p) is the strict c-

eighborhood of p (i.e. it excludes p).The definition is similar for the two-dimensional case. Note

hat the strict (3, 1)-neighborhood is used for the computationf T(3,2): the strict (3, 2)-neighborhood is not (3, 2)-connectednd thus does not carry enough information. The same thingpplies in two-dimension, where the strict (2, 1)-neighborhoods not (2, 1)-connected, and the strict (2, 0)-neighborhood muste scanned.

In a similar way as what we did for background con-ectivity, we define a helper to automatically determine inhich neighborhood the connected components must be

ounted. That NeighborhoodConnectivity helper class isescribed below. Depending on the foreground connectiv-

ty cf, we will note cn the connectivity used for the neigh-orhood:

b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58 55

To compute the topological numbers as fast as possi-ble, a helper is defined whose role is to pre-compute allpairs of points (p1, p2) which satisfy the following require-ments:

• p1 and p2 are cf-adjacent,• p1 is cn-adjacent to the origin,• the sum p1 + p2 is within a cube of size 3 × 3 × 3 centered at

the origin.

Using this helper, called UnitCubeNeighbors, we can eas-ily create a seed-fill algorithm, respecting the topology andoptimized for a 3 × 3 × 3 image, and thus efficiently countthe connected components in the neighborhood of a point.The interface of that seed-fill is given below. To use thisclass, the user assigns the image using the SetImage memberfunction and then calls the operator. The SetImage mem-ber function takes two iterators as parameters in order tobe as generic as possible: that data might not only comefrom an image, but also from other sources, e.g. a plain Carray.

5. Application to ITK

In this section, we show how to use the previously definedstructures to write a generic and efficient homotopic-thinningfilter in ITK.

Page 6: Integrating digital topology in image-processing libraries

m s i

56 c o m p u t e r m e t h o d s a n d p r o g r a

5.1. Homotopic thinning

Homotopic thinning extracts a thin skeleton from an object,with the additional property that the skeleton is homotopicto the original object, i.e. both have the same topology. Thisprocess is similar to peeling an onion, as it iteratively removeslayers of voxels from the object [14].

In order to satisfy the homotopy requirement, only simplepoints, i.e. points whose removal does not change the topol-ogy, are removed. Using the topological numbers describedabove, a point is simple if and only if Tcf = 1 and Tcb = 1 [13].The skeleton must also keep geometrical characteristics of theoriginal object. If no geometrical characteristic is preserved,we obtain what is known as the homotopic kernel, the small-est subset homotopic to the original object. For any simplyconnected (i.e. without tunnel nor cavity) object, the homo-topic kernel is a single point. The preservation of geometryand topology is achieved by removing simple points, whichare not terminal. The definition of terminality is application-dependent: if a skeleton formed of lines is wanted, points thathave only one neighbor in the foreground will be kept. Otherterminality criteria exist to preserve surface patches and geta surfacic skeleton [15].

To integrate this in ITK, we created two function objects:one to compute the topological numbers of a point in an image,and one to decide the terminality of a point. The latter onebeing straightforward, only the former one will be describedhere.

5.2. Topological numbers function objects

The prototype of our topological numbers function object classis given below:

n b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58

The Image template parameter is usual among ITK fil-ters and functions and won’t be discussed here. The functionobject is templated by the foreground and the background con-nectivity of the image, the latter having a default value givenby the helper describer earlier. This function object returns apair of integers, equal to (Tcf , Tcb ) at the chosen point. If theuser is interested only in computing Tcf or Tcb , two booleanmembers of the class can be set to false in order to save exe-cution time.

This function object is then used to derive a boolean crite-rion function object to determine the simplicity of a point.

5.3. Skeletonization filter

As for other structures that need topological informations, theskeletonization filter class is templated by the foreground con-necitivity. This template parameter is then passed to the twocriteria defined above (simplicity and terminality). To allow forflexibility, our skeletonization filter does not hardcode the cri-teria: they can be set by the user, using functors. Default valuesare however provided for ease of use: the default simplicity cri-terion uses topological numbers, and the default terminalitycriterion characterizes line-terminal points. The correspond-ing part of the interface is shown below:

The thinning is then performed using a distance-orderedremoval to guarantee that the resulting skeleton is correctlycentered with respect to the object [16].

We compared the results of our filter to ITK’s Binary-

ThinningImageFilter, which is limited to two-dimensionalimages. This filter is based on morphological image thin-ning, which does not include topological constraints [17].Two two-dimensional test images were used, both fromITK test images. The first one (Shapes.png) depicts geo-metrical shapes, the second one (ConnectedThreshold-

WhiteTest.png) depicts white matter in the brain. Ourfilter is 116 times faster on the shapes image, and 6.5times faster on the white matter image. The skeletoniza-

tion results and their comparison to ITK’s filter are shown inFig. 6.

To illustrate the independence of our filter to the dimensionof the image, we also tested it on three-dimensional images,

Page 7: Integrating digital topology in image-processing libraries

c o m p u t e r m e t h o d s a n d p r o g r a m s i n b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58 57

Fig. 6 – Two-dimensional objects and skeletons (original, author’s thinning, ITK thinning).

Fig. 7 – Three-dimensional

Table 2 – Comparison of ITK’s filter vs. author’s filterexecution times

Image Foregroundvoxels

Author’sthinning

ITK’sthinning

Shapes 1,537 0.02 2.32White matter 9,215 0.08 0.52Stanford bunny 1,623,669 59.9 N/ALiver 125,606 4.3 N/A

os

twta

6

Wl

Colon 5,139,339 171.5 N/A

Time in s.

ne of the Stanford bunny, one of a liver, and one of a colon,hown in Fig. 7.

On each image, we can see that the skeleton is centered inhe object, respect the original topology and has side branches,hich account for the geometrical characteristics. The run-

imes, measured on a AMD Opteron 270 CPU with 4 GB of RAMre reported in Table 2.

. Discussion and conclusion

e have shown in this paper a method to overcome theack of digital topology informations in image-processing

objects and skeletons.

libraries, allowing to write algorithms respecting topologicalconstraints. Our method is generic with respect to the dimen-sion of the image and with respect to the type of connectiv-ity. As shown above, thinning using our method can be upto a hundred times as fast as ITK’s BinaryThinningImage-

Filter. Our implementation of these classes are available inthe Insight Journal [18].

Its limitation lies in the definition of the cb and cn connec-tivities, which must be defined by the user for some values.This is however a limitation of the C++ language, which willbe difficult – if not impossible – to overcome without sacrifyinganother feature.

We propose three further evolutions of our system, toincrease the speed as well as the integration within ITK.Firstly, we plan to use image offsets instead of the actualn-dimensional coordinates. Neighborhood operations are sim-pler to express when using n-dimensional coordinates, but areless efficient, as the accesses to the image buffer will requirea translation from the coordinates of the point to an offset.Once the dimensions of the image are known, the offsets cor-responding to points coordinates can be computed, and will

be constant as long as the image size is not modified. Thedesign of such a component is however not trivial, as the con-nectivity should not depend on the structures used for theimage.
Page 8: Integrating digital topology in image-processing libraries

m s i

r

58 c o m p u t e r m e t h o d s a n d p r o g r a

Secondly, we propose to store the connectivity informationin the images themselves, instead of passing it as a parameterto the filters and functors. As the topology of an image remainsconstant throughout the lifetime of the image, it is the role ofthe image to know its topology, not the filter. In order to keepcompatibility with existing code, that parameter should havea default value.

Thirdly, we propose to associate an iterator, similar to ITK’sneighborhood iterators, to the image with connectivities. Aswith other iterator uses, this will allow to decouple the scan-ning method from the “real” work done by each algorithmiteration.

e f e r e n c e s

[1] L. Lam, S.-W. Lee, C.Y. Suen, Thinning methodologies—acomplete survey, IEEE Trans. Pattern Anal. Mach. Intell. 14(1992) 869–885.

[2] R. Justice, E. Stokely, J. Strobel, R. Ideker, W. Smith, Medicalimage segmentation using 3-D seeded region growing, in:Proceedings of the SPIE Symposium on Medical Imaging, vol.3034, 1997, pp. 900–910.

[3] I. Bitter, A.E. Kaufman, M. Sato, Penalized-distancevolumetric skeleton algorithm, IEEE Trans. Visual. Comp.Graph. 7 (3) (2001) 195–206.

[4] J. Lamy, C. Ronse, L. Soler, Loop removal from colon central

path through skeleton scale-space tracking, in: G. Bebis, R.D.Boyle, D. Koracin, B. Parvin (Eds.), Proceedings of theAdvances in Visual Computing, First InternationalSymposium, ISVC 2005, Lake Tahoe, NV, USA, December 5–7,2005, pp. 68–75.

n b i o m e d i c i n e 8 5 ( 2 0 0 7 ) 51–58

[5] L. Ibanez, W. Schroeder, L. Ng, J. Cates, The ITK SoftwareGuide, 1st ed., Kitware Inc., 2003, ISBN: 1-930934-10-6,http://www.itk.org/ItkSoftwareGuide.pdf.

[6] U. Kothe, The VIGRA Reference Manual,http://kogs-www.informatik.uni-hamburg.de/koethe/vigra,2004.

[7] A. Rosenfeld, J.L. Pfaltz, Sequential operations in digitalpicture processing, J. ACM 13 (1966) 471–494.

[8] G. Buskes, A. Van Rooij, Topological Spaces, Springer-Verlag,1997.

[9] V.A. Kovalevsky, Finite topology as applied to image analysis,Comp. Vis. Graph. Image Process. 46 (1989) 141–161.

[10] G. Malandain, On topology in multidimensional discretespaces, Tech. Rep. 2098, INRIA, 1993.

[11] E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns:Elements of Reusable Object-Oriented Software,Addison-Wesley, 1995.

[12] D. Vandevoorde, N.M. Josuttis, C++ Templates—TheComplete Guide, Addison-Wesley, 2003.

[13] G. Bertrand, G. Malandain, A new characterization ofthree-dimensional simple points, Pattern Recogn. Lett. 15(1994) 169–175.

[14] S. Lobregt, P.W. Verbeek, F.C.A. Groen, Three-dimensionalskeletonization: principle algorithm, IEEE Trans. PatternAnal. Mach. Intell. 2 (1980) 75–77.

[15] W.X. Gong, G. Bertrand, A simple parallel 3D thinningalgorithm, in: Proceedings of the 10th InternationalConference on Pattern Recognition, 1990, pp. 188–190.

[16] C. Pudney, Distance-ordered homotopic thinning: askeletonization algorithm for 3D digital images, Comput.

Vision Image Understand. 72 (3) (1998) 404–413.

[17] R.C. Gonzales, R.E. Woods, Digital Image Processing, 2nd ed.,Prentice Hall, 2002.

[18] J. Lamy, Digital topology, Insight J.,http://insight-journal.org/dspace/handle/1926/304.


Top Related