A fast algorithm for approximate surface reconstruction from sampled points

A fast algorithm for approximate surface reconstruction from sampled points

Advances in Engineering Software 53 (2012) 72–78 Contents lists available at SciVerse ScienceDirect Advances in Engineering Software journal homepag...

873KB Sizes 3 Downloads 190 Views

Advances in Engineering Software 53 (2012) 72–78

Contents lists available at SciVerse ScienceDirect

Advances in Engineering Software journal homepage: www.elsevier.com/locate/advengsoft

A fast algorithm for approximate surface reconstruction from sampled points B. Repnik ⇑, B. Zˇalik University of Maribor, Faculty of Electrical Engineering and Computer Science, Smetanova 17, SI-2000 Maribor, Slovenia

a r t i c l e

i n f o

Article history: Received 7 November 2011 Received in revised form 11 July 2012 Accepted 10 August 2012 Available online 6 September 2012 Keywords: Algorithms Computational geometry Point clouds Surface reconstruction Voxels Error estimation

a b s t r a c t This paper presents a new algorithm for fast approximate surface reconstruction from sampled points. This algorithm works over three steps. Firstly, a raw rectangular surface is obtained, and then this surface is triangulated and smoothed in the second step. The surface vertices are fitted to the nearest input points at the end. The algorithm is very fast, numerically stable, easy to implement, and it constructs a watertight surface. In the experimental section, the algorithm is compared with other available algorithms (algorithm from CGAL library, Power Crust, Tight cocone, and Poisson reconstruction) in regards to the spent CPU time. Finally, an error of the obtained approximate surface is empirically estimated. Ó 2012 Elsevier Ltd. All rights reserved.

1. Introduction

2. Previous work

Today, different technologies including laser scanners, structured light scanners, and optical position scanners exist to gather points from various 3D objects [1]. Unfortunately, obtained sets of structurally unrelated points are unsuitable for further processing, as they do not meet the conditions of well-formed surfaces necessary for the unambiguous representation of scanned objects [2]. An automatic process of connecting the scanned points to form the object’s surface is known as a surface reconstruction. This paper presents a new approximate algorithm for surface reconstruction from sampled points. The algorithm firstly arranges the input points into an uniform grid that enables the generation of an approximate rectangular surface. This surface is triangulated and smoothed. At the end, the surface vertices are fitted onto the nearest input points. This algorithm is robust, stable, simple to implement, and very fast. It always produces a watertight object and is therefore suitable for fast previewing and rapid prototyping [3]. Although some deviation in the points’ distribution are tolerated, the proposed algorithm works the best with equally-spaced points. The paper is organized as follows. Section 2 contains a brief overview of previous work. The approach is introduced in Section 3. The estimation of the algorithm’s time complexity and the quality of the approximation are given in Section 4. Section 5 concludes the paper.

The problem of surface reconstruction from sampled points has attracted huge interest in the past, which started with the work of Hoppe et al. [4], who classified each point with a signed distance to the surface. A similar algorithm was later proposed by Curless and Levoy [5]. One of the earliest overviews of the surface reconstruction methods was done in 1998 by Mencl and Müller [6]. Many algorithms initially construct Delaunay tetrahedronization from the sampled points. For example, the a-shapes algorithm [7] removes all tetrahedrals that are outside a sphere with the radius 1/a. The main drawback is when selecting of the optimal value for parameter a (too small a value leads to non-connected surfaces, too large a one neglects details). The approach proposed by Boissonat [8] also employs Delaunay tetrahedronization. Using simple rules, any unnecessary tetrahedra being located on the convex shell of the input points are eliminated. Unfortunately, this approach is only suitable for uniformly-sampled points. Veltkamp [9] uses c-indicator to adopt the elimination criterion to nonuniformly sampled points. c-indicator is defined as 1  r/R, where r is the radius of the circumcircle of the considered tetrahedron’s face and R the radius of circumcircle of the tetrahedron sphere. An automated approach for determining the a value was proposed by Xu and Harada [10]. They developed an approach based on the points’ density to scale the variable a on the fly. A more wellknown approach, named Crust, was presented by Amenta et al. [11]. This method has a strong theoretical background, that guarantees the correct reconstruction. Unfortunately, Crust is computationally demanding, since it has to build a 3D Voronoi diagram and

⇑ Corresponding author. E-mail addresses: [email protected], [email protected] (B. Repnik). 0965-9978/$ - see front matter Ó 2012 Elsevier Ltd. All rights reserved. http://dx.doi.org/10.1016/j.advengsoft.2012.08.003

B. Repnik, B. Zˇalik / Advances in Engineering Software 53 (2012) 72–78

3. The method for approximate surface reconstruction from sampled points The proposed approximate surface reconstruction algorithm (ASRA) works over the following steps:  obtaining a rough approximate rectangular surface of the model,

y

z

w

a 3D Delaunay tessellation, which also increases the possibility of numerical instability. The improved version of the basic algorithm, which also copes well with the noise, is Power Crust [12]. A generalization of Crust was later proposed by Dey and Goswami [13]. A noise resistant algorithm for reconstructing a watertight surface, also based on Delaunay tetrahedronization, was introduced by Kolluri et al. [14]. They used a variant of the spectral graph partitioning to decide whether the considered tetrahedron is inside or outside of the original object. The spectral-graph is a powerful tool for the global viewing of a model for eliminating noise, outliers and to efficiently deal with undersampled regions. A ball-pivoting algorithm was presented by Bernardini et al. [15]. Starting from the seed triangle, the ball pivots around an edge until it touches another point, which then forms a new triangle. The major advantage of this algorithm is that it does not need to construct the Delaunay tetrahedralization. A greedy algorithm for surface reconstruction was presented by Cohen-Steiner and Da [16]. The algorithm starts from a seed triangle and adds Delaunay triangle one by one to the piecewise surface. A similar approach with competing evolving fronts was proposed by Sharf et al. [17]. These fronts adapt to the local feature size of the target shape in a coarse-to-fine manner. The method is fast and guarantees a watertight surface. An interesting topological approach for surface reconstruction was presented by Biscaro et al. [18]. This approach strongly relies on topological information that reduces the computational time. The more related approaches proposed in this paper are those works introduced by Hornung and Kobbelt [19], Mullen et al. [20], Bolitho et al. [21], and Volodine et al. [22]. Hornung and Kobbelt [19] proposed a method for the watertight reconstruction of nonuniformly sampled points without normal information. At first, they derive a confidence map in the vicinity of the input points. The confidence map represents the probability that the unknown surface passes through a certain part of the 3D space. A closed surface with maximum confidence is then extracted by transforming their combinatorial optimization problem into a max-flow/min-cut problem of an embedded graph. Mullen et al. [20] proposed a method for robust surface reconstruction from point sets. An unsigned distance function to the input data is calculated at first. An -band to eliminate the outliers and noise is then determined. A global stochastic sign estimation of the distance first outside then inside the -band is computed. Finally, the estimation is smoothed to obtain a smooth and closed surface. Any possible unwanted holes on the surface are repaired during this step, too. Bolitho et al. [21] showed that the Poisson surface reconstruction can be performed as a sequence of streaming passes over and out-of-core octree representation. This reconstruction includes several steps: preprocessing (aligning the dominant axis of the point cloud covariance matrix with the x-axis), octree construction, vector field construction, divergence computation, Poisson system solving, isovalue computation, and finally an isosurface extraction. Volodine et al. [22] proposed an algorithm that constructs an interpolating triangular mesh. A structure called the Delaunay cover is constructed at first. It represents a barrier between the interior and exterior of the object. Using the Delaunay cover, a Boolean voxel grid is constructed in the next step. In this way, the empty and non-empty voxels are determined. The outer surface of the voxel grid is then snapped to the point cloud.

73

x Fig. 1. Bounding box of input points is divided into slices of the width w.

z

y

x Fig. 2. Slice is divided into equally-sized cells.

 smoothing and triangulating the approximate surface, and  fitting the surface vertices to the nearest input points. 3.1. Obtaining a rough approximate rectangular surface of the model Firstly, the number n of input points pi, i = 1, . . . , n, and their bounding box B is determined. The bounding box is then translated into the origin and normalized according to:



x  max ymax zmax ; ; d d d

ð1Þ

where d = max{xmax, ymax, zmax}. B is finally aligned with its longest side with the Y coordinate axis. After that, B is divided into slices, parallel to the XZ-plane (in Fig. 1, only one slice is plotted). The number of slices s is determined by the following heuristics

pffiffiffi s¼k3n

ð2Þ

where k is determined experimentally (see Section 4.4). The slice width w is trivially obtained as



1 s

ð3Þ

Each slice is divided into cells in the form of a cube with the size w (Fig. 2). The slice can be considered as a 2D raster of x  y, (x, y 6 s) pixels, where those cells that contains points represent black pixels. As this is an approximative surface reconstruction

B. Repnik, B. Zˇalik / Advances in Engineering Software 53 (2012) 72–78

74

z

x Fig. 3. Points from the slice are represented as pixels, on which a dilate filter is applied.

z

y

a c

c

i

i

b

b

d a

Fig. 5. Bunny: input points (a), raw rectangular surface (b), smoothed surface (c), model fitted on the input points (d).

a

d i

b

c

i

a

b

c

x Fig. 4. Smoothing of the approximate rectangular surface when r = 3 and r = 5.

algorithm, several points may exist in one cell. The black pixels are made fatter by the dilate filter [23], as shown in Fig. 3. Finally, the bordering cells faces are determined. They form the rough rectangular surface approximation, determined by the vertices of the uniform cells (these vertices are denoted as qi). The obtained surface is watertight and, as such, represents a solid start for the further steps of the algorithm. 3.2. Smoothing of the rectangular surface and its triangulation

aligned with the input point. If two or three vertices of a triangle are assigned to the same input point, then such a triangle is eliminated. In order to demonstrate the steps of the algorithm, the reconstruction of the well-known bunny point cloud has been carried out. Fig. 5a shows the 35,947 input points. According to the applied heuristics, 132 slides were obtained. Each slide has 132  104 cells. The raw rectangular surface, shown in Fig. 5b, consists of 69,286 faces and 34,289 vertices. The smoothed triangulated model is displayed in Fig. 5c. The final model fitted to the input points is given in Fig. 5d. A part of the wire-frame model is shown in Fig. 6. It can be seen that the details around the bunny’s ears are well-preserved. A set of other reconstructed models is shown in the Appendix. 4. Analysis of the ASRA algorithm The proposed ASRA algorithm was analysed from various aspects. Firstly, a time complexity analyses is given, followed by the measurement of the spent CPU time of the individual parts of the algorithm. Then, the algorithm has been compared against available surface reconstruction algorithms in regards to the execution time. Finally, the caused error, due to the approximation, is evaluated, and the effect of the cells’ sizes is analysed.

In this step of the algorithm, the rough rectangular surface is smoothed. For each vertex qj, its new position q0j is calculated by determining the average value of qj and its immediate neighbouring vertices as follows:

q0j

r X 1 qj þ ¼ qi rþ1 i¼1

!

ð4Þ

where r is the number of immediate neighbours. Fig. 4 graphically shows the effect of smoothing for cases with 3 and 5 immediate neighbours. Finally, the rectangles are divided into triangles by inserting diagonals. 3.3. Fitting surface vertices to the input points The nearest input point pi is found for each vertex qj of the approximate surface. The 3D grid formed during the first step of the algorithm is used for this task. The considered vertex qj is then

Fig. 6. A part of the bunny wire-frame model.

B. Repnik, B. Zˇalik / Advances in Engineering Software 53 (2012) 72–78 Table 1 Details of used point clouds. Model

n

s

Slice resolution

No. of cells

Rocker arm Bunny Horse Santa Claus Golf ball Armadillo Happy Buddha Hand & ball Blade Dragon

30,133 35,947 48,487 75,782 122,882 172,975 543,652 654,651 1,765,913 3,609,601

124 132 145 169 198 222 326 347 483 613

64  38 134  104 80  174 188  159 198  199 187  170 134  135 262  166 363  315 341  408

301,568 1,839,552 2,018,400 5,051,748 7,801,596 7,057,380 5,897,340 15,091,724 55,228,635 85,285,464

75

Table 5 Results of approximate surface error estimation for bunny and armadillo. Tight cocone’s reconstructed surface was used for comparison. k

1.60 2.00 2.40 2.80 3.20 3.60 4.00 4.40 4.80 5.20

Bunny

Armadillo

MSE

AVR

CPU

MSE

AVR

CPU

1.910 0.693 0.285 0.160 0.099 0.064 0.044 0.028 0.020 0.003

46.25 44.83 21.88 4.50 0.47 0.24 0.21 0.18 0.16 0.15

0.09 1.31 1.76 2.34 3.16 3.95 5.48 6.75 9.15 11.86

0.568 0.330 0.207 0.125 0.090 0.063 0.048 0.034 0.026 0.020

8.32 1.70 0.98 0.95 0.83 0.72 0.64 0.45 0.26 0.11

2.78 3.81 5.03 6.94 8.46 11.00 12.59 15.00 19.47 21.35

Table 2 Spent CPU time in seconds of individual ASRA parts for various models. Model

Step 1

Step 2

Step 3

Total

Rocker arm Bunny Horse Santa Claus Golf ball Armadillo Happy Buddha Hand & ball Blade Dragon

0.08 0.27 0.22 0.78 1.13 1.28 1.39 3.56 28.16 18.58

1.13 3.16 2.41 3.20 8.97 5.97 11.17 7.47 34.23 37.30

0.95 2.05 1.97 2.80 6.00 5.34 13.94 10.36 24.78 47.30

2.15 5.48 4.60 6.78 16.10 12.59 26.50 21.39 87.17 103.18

Table 3 Spent CPU time in seconds for various models with different point densities. Model

n

t

n/t

Bunny

35,947 104,286 382,090

5.48 15.85 60.84

6.56 6.58 6.28

Rocker-arm

30,133 90,397 331,453

2.15 6.81 23.76

14.01 13.27 13.95

Horse

48,487 145,436 533,300

4.60 14.15 48.51

10.54 10.28 10.99

122,882 368,643 1,351,682

16.10 48.15 178.06

7.63 7.66 7.59

75,782 227,340 833,572

6.78 20.28 74.67

11.18 11.21 11.16

534,652 1,624,780 5,949,804

26.50 80.63 295.01

20.18 20.15 20.17

Golf ball

Santa Claus

Happy Buddha

Fig. 7. Details of armadillo0 s hand at various values of parameter k: (a) k = 2.4, (b) k = 3.2, (c) k = 4.0, (d) k = 4.8.

4.1. Time-complexity analysis

Table 4 Spent CPU time in seconds for various algorithms. Model Rocker arm Bunny Horse Santa Claus Golf ball Armadillo Happy Buddha Hand & ball Blade Dragon

CGAL 25.54 32.22 55.62 85.18 / 180.58 / / / /

PC

TC

PS

ASRA

31.11 38.52 191.71 487.37 335.93 / / / / /

22.12 28.72 48.44 65.92 85.64 201.31 936.29 1281.18 / /

6.55 10.62 16.79 20.25 40.87 29.77 153.38 128.72 / 116.15

2.14 5.48 4.60 6.78 16.10 12.59 26.53 21.31 87.17 103.18

As described, the algorithm works over three main steps: Step 1 – forming the raw approximate rectangular surface. Firstly, the bounding box of n input points pi is determined in O(n) time. Translating of the points into the normalized bounding box is done in O(n), too. Similarly, arranging points in the s slices is also made in the linear time O(n). According to Eq. (2), the pffiffiffi bounding box is divided into s ¼ k 3 n slices into which the input points pi are arranged in O(n) time. Each slice is divided into a uniform grid of u  v equally sized cells. In each slice, the dilate filter is applied on the black pixels, i.e. non-empty cells. For the worse case analysis, it can be considered that all pixels in a slice are black. In pffiffiffi such a case, this operation is done in time u  v ¼ k 3 n ffiffiffi p p ffiffiffi 2 3 3 k n ¼ ðk nÞ .

B. Repnik, B. Zˇalik / Advances in Engineering Software 53 (2012) 72–78

76

Fig. 8. The effect of varying parameter k at spent CPU and MSE at bunny and armadillo.

pffiffiffi As there is s ¼ k 3 n slices, there is u  v  s = k3n cells. As k  n (according to experiments explained in Section 4.4, k = 4), this step is terminated in O(n) time. The last task in the first step of the ASRA is the construction of the raw rectangular surfaces. This includes visiting of each bordering cell, and determination of its outside faces, what is done in O(n) time, too. Step 2 – forming a rectangular surface and its triangulation. Firstly, the obtained raw rectangular surface that consists of qi, i = 0,1, . . . , m points, is smoothed by averaging the positions of each vertex according to their neighbours. The smoothing of each vertex is done in the constant time O(1), which results in O(m) time. As m  n, O(m) = O(n). Step 3 – fitting surface vertices to the input points. This is the only step that includes geometric search, i.e. the nearest-point problem [24]. For this, the uniform space subdivision, constructed in the first part of the algorithm, is applied. For each vertex qj of the approximate model, its nearest input point pi is determined. By the smoothing process, vertices qj have already moved into the proximity of pi. As the cell, containing the considered point qj of the approximate model, is located in O(1), only the input points pi that exist in the considered cell and at most 8 neighbouring cells have to be examined. According to [25], the nearest point is found in the constant time O(1). Therefore, this step terminates within O(m) = O(n) time. To summarize, the proposed approximate surface reconstruction algorithm works in the linear time O(n). 4.2. Measurement of spent CPU time The measurement of spent CPU time for individual parts of ASRA is given in the continuation. The algorithm was implemented in C++ and a PC using a 2.6 GHz processor and 3G bytes

of RAM running under Windows XP was used for the measurement. Ten popular point clouds obtained from WEB1,2 were used for testing. In all cases, the parameter k from Eq. (2) took the value 4. The effect of varying the parameter k is considered at the end of this section. Details of the used point-clouds are shown in Table 1. The second column gives the number of the input points, the third the number of slices s, the fourth the slice resolution, and the last the total number of cells. The spent CPU time of the individual parts of the algorithm, are shown in Table 2. As can be seen, the first step of the ASRA is at least computationally intensive in all cases, except the point-cloud blade. As can be seen in Table 2, the reconstruction time for the bunny is roughly twice the time of the rocker-arm despite having a similar number of points. This difference occurred due to the different dimensions of both point-clouds, resulting in considerably different numbers of cells (see Table 1). For the rocker-arm there were 64  38  124 = 301,568 cells, whilst for the bunny a considerably higher number of cells were obtained (134  104  132 = 1,839,552). This difference clearly influenced the actual CPU time. Because of this, another experiment was done by generating additional points for 6 datasets. In order to obtain additional points, the reconstructed models were used. For each triangle, the centroid was calculated and added to the original point-cloud. The results are summarised in Table 3, where the linear time complexities for individual models can be clearly identified (the ratio between number of points n and spent CPU time t is practically constant for each dataset).

1 2

graphics.stanford.edu/data/3Dscanrep/. www.cc.gatech.edu/projects/large_models.

B. Repnik, B. Zˇalik / Advances in Engineering Software 53 (2012) 72–78

77

Table 6 Influence of varying diagonals on MSE at bunny and armadillo when using random and local Delaunay criterion. Bunny

Armadillo

Random

Delaunay criterion

Random

Delaunay criterion

0.0441

0.0440

0.0484

0.0482

4.3. Comparison with other algorithms A comparison was made with the available algorithms including Poisson surface reconstruction [26], implemented in CGAL,3 the Poisson surface reconstruction – PS [21] available at,4 the PowerCrust – PC [12] obtained from,5 Tight Cocone – TC [13] available at.6 The results are given in Table 4. All the referenced implementations had considerable problems with the stability. The point-cloud blade was only finished by ASRA. The proposed algorithm was considerably faster in all cases. Of course, the ASRA constructs an approximate surface and therefore, it is important to determine the error made during the reconstruction (see Table 5). 4.4. Evaluation of the approximation error The approximation error was checked using two criteria: 1. The mean-squared error (MSE) was determined as follows:  for each triangle ta of the approximate surface, the normal vector v in the triangle’s geometric centre cg was determined,  the intersection ri between the normal vector v and the nearest triangle of the referenced triangular surface was determined,  distance di between cg and ri was calculated. Finally, MSE in % was calculated using:

MSE ¼

i¼m 100 X 2 d m i¼0 i

ð5Þ

where m is the number of triangles of the approximate surface. 2. The area–volume ratio (AVR) was obtained as follows:  the area and the volume of the referenced reconstructed sur  face were determined and their ratio VS r was determined,  the same was done for the surface obtained with the presented algorithm (VS was calculated),  AVR was calculated using:

AVR ¼ 100

 S      VS  V r S V

ð6Þ

where index r represents the referenced surface reconstructed using the Tight cocone algorithm. In this experiment, the effect of varying parameter k in Eq. (2) was considered. A larger k introduced smaller cells and more triangles in the final model, which fit better to the input points (MSE and AVR are smaller). This can be observed in Fig. 7, where the reconstructed armadillo’s hand is shown. The effect of the webbed toes is reduced with the increasing value of k. However, there are only slight differences in the surfaces at k = 4.0 and k = 4.8, where MSE (k = 4.0) = 0.048, AVR (k = 4.0) = 0.64 and MSE (k = 4.8) = 0.026, AVR (k = 4.8) = 0.26. However, the increase of spent CPU time is

Fig. 9. Reconstructed approximate surfaces used in our experiments.

close to 60%. The graphs in Fig. 8 show the relationship between spent CPU and MSE. In all the experiments, the value k = 4 turned out to be a good compromise between the quality of the approximated surface, and the spent CPU time. There are different possibilities for diagonal insertions, when converting the rectangular surface into a triangular one. Random diagonal insertion and insertion, based on Delaunay criterion [27] was tried. Delaunay criterion is applied locally and maximizes the minimal inner angle of the obtained pairs of triangles. Table 6 shows that the effect on MSE is minimal. 5. Conclusion

3 4 5 6

http://www.cgal.org. http://www.cs.jhu.edu/bolitho/Research/PoissonSurfaceReconstruction/. http://www.cs.utexas.edu/amenta/powercrust/welcome.html. http://www.cse.ohio-state.edu/tamaldey/cocone.html.

This paper introduces a new algorithm for approximate surface reconstruction from sampled points. This algorithm works over three steps, which are algorithmically and computationally simple

78

B. Repnik, B. Zˇalik / Advances in Engineering Software 53 (2012) 72–78

and robust. The algorithm does not need to construct a Voronoi diagram or Delaunay tetrahedronization, which are the sources of numerical instability. They also slow-down the run time of the algorithms. Instead, our algorithm splits the points into slices and fills them with cells, the dimensions of which are determined heuristically. These cells are used to obtain the raw approximate rectangular surface of the model. This raw surface is then smoothed, triangulated, and fitted to the input points. This algorithm also copes well with those objects that contain holes. A demo of the program can be downloaded from http://gemma.uni-mb.si/ SurfaceReconstruction. Acknowledgements This work was supported by the Slovenian Research Agency under Grants P2-0041 and L2-3650. Appendix A In this appendix the reconstructed approximate surfaces used in our experiments are shown as follows: hand & ball, horse, happy Budha, blade, rocker-arm, dragon, golf ball, and Santa Claus (see Fig. 9). References [1] Barbero BR, Ureta ES. Comparative study of different digitization techniques and their accuracy. Comput-Aid Des 2010;43(2):188–206. [2] Mortenson M. Geometric modelling. John Wiley & Sons; 1997. [3] Grimm T. User’s guide to rapid prototyping. Society of manufacturing engineers; 2004. [4] Hoppe H, DeRose T, Duchamp T, McDonald J, Stuetzle W. Surface reconstruction from unorganised points. ACM SIGGRAPH Comput Graph 1992;26(6):71–8. [5] Curless B, Levoy M. A volumetric method for building complex models from range images. In: Proceedings of the 23rd annual conference on computer graphics and interactive techniques; 1996. p. 303–12. [6] Mencl R, Müller H. Interpolation and approximation of surfaces from threedimensional scattered data points. In: Proceedings of eurographics 98; 1998. p. 223–33. [7] Edelsbrunner H, Mücke TP. Three-dimensional alpha shapes. ACM Trans Graph 1994;13(1):43–72.

[8] Boissonnat J-D. Geometric structures for three-dimensional shape reconstruction. ACM Trans Graph 1984;3(4):266–86. [9] Veltkamp RC. Boundaries through scattered points of unknown density. Graph Models Image Process 1995;57(6):441–52. [10] Xu X, Harada K. Authomatic surface reconstruction with alpha-shape method. Vis Comput 2003;19(7-8):431–43. [11] Amenta N, Bern MW, Kamvysselis MK. Crust: A new voronoi-based surface reconstruction algorithm. In: Proceedings of the 25th annual conference on computer graphics and interactive techniques; 1998. p. 415–22. [12] Amenta N, Choi S, Kolluri R. The power crust, union of balls, and the medial axis transform. Comput Geometry Theory Appl 2001;19(2-3):127–53. [13] Dey TK, Goswami S. Tight cocone: a water-tight surface reconstructor. J Comput Inform Sci Eng 2003;3(4):302–7. [14] Kolluri R, Shewchuk JR, O’Brien J. Spectral surface reconstruction from noisy point clouds. In: Eurographics symposium on geometry processing; 2004. p. 11–21. [15] Bernardini F, Mittleman M, Rushmeier H, Silva C, Taubin G. The ball-pivoting algorithm for surface reconstruction. IEEE Trans Visual Comput Graph 1999;5(4):329–59. [16] Cohen-Steiner D, Da F. A greedy delaunay-based surface reconstruction algorithm. Vis Comput 2004;20(1):4–16. [17] Sharf A, Lewiner T, Shamir A, Kobbelt L, Cohen-Or S. Competing fronts for coarse-to-fine surface reconstruction. Comput Graph Forum 2006;25(3): 389–98. [18] Biscaro HH, Filho AC, Nonato LG, de Oliveira MCF. A topological approach for surface reconstruction from sample points. Vis Comput 2007;23(911):793–801. [19] Hornung A, Kobbelt L. Robust reconstruction of watertight 3d models from non-uniformly sampled point clouds without normal information. In: SGP ’06 proceedings of the 4th eurographics symposium on geometry processing; 2006. [20] Mullen P, Goes FD, Desbrun M, Cohen-Steiner D, Alliez P. Signing the unsigned: robust surface reconstruction from raw pointsets. Comput Graph Forum 2010;29(5):1733–41. [21] Bolitho M, Kazhdan M, Burns R, Hoppe H. Multilevel streaming for out-of-core surface reconstruction. In: SGP ’07 proceedings of the 5th eurographics symposium on geometry processing; 2007. [22] Volodine T, Floater MS, Roose D. Volumetric snapping: watertight triangulation of point clouds; In: Proceedings of GRAPP 2007; 2007. [23] Gil J, Kimmer R. Efficient dilation, erosion, opening and closing algorithms. In: Goutsias J, Vincent L, Bloomberg DS, editors. Mathematical morphology and its applications to image and signal processing. Springer; 2000. p. 301–10. [24] Zadravec M, Brodnik A, Mannila M, Wanne M, Zˇalik B. A practical approach to the 2d incremental nearest-point problem suitable for different point distributions. Patt Recog 2009;41(2):646–53. [25] Cleary JG. Analysis of an algorithm for finding nearest neighbors in euclidean space. ACM Trans Math Softw 1979;5(2):183–92. [26] Kazhdan M, Bolitho M, Hoppe H. Poisson surface reconstruction. In: Int symp on geometry processing; 2005. p. 61–70. [27] Kolingerová I, Zˇalik B. Improvements to randomized incremental delaunay insertion. Comput Graph 2002;26:477–90.