Tree Skeleton Extraction from a Single Range Image Zhanglin Cheng Xiaopeng Zhang LIAMA-NLPR Institute of Automation, CAS, Beijing, China {zlcheng, xpzhang}@nlpr.ia.ac.cn Abstract Tree skeleton computation is of significance in the geometric modeling of botanic trees and in the application of forestry. This paper describes an approach to extract branch skeletons from a single range image of a tree. A basis of this approach is that the trunk and branches are modeled by generalized circular cylinders, and the tree skeleton is defined as the connected curve-axes of these cylinders. In the proposed system, the range image is partitioned into patches at first based on the discontinuity of depth and axis direction, where each patch only contains points from the same branch. Then each patch is fitted with a series of circular cylinders. Finally the tree skeleton is generated by sequentially connecting the skeleton points of fitted cylinders. This work shows that cylinder fitting can be used to handle the incompleteness of input data, and generate accurate skeleton points and corresponding radii. The main contribution of this paper is that we proposed a new definition and computation of tree skeletons and introduced an efficient and robust cylinder fitting method. Experiment shows the effectiveness of this approach.
1
Introduction
With the development of range scanners, more and more complex objects such as trees have been scanned to create 3D models. It is helpful to describe the shape and essential topology of these objects in many application fields such as object modeling, model retrieval, data compression, shape measurement, shape understanding and recognition. One such description is referred to as skeleton. Skeleton is a compact 1D representation of 3D objects. A main difficulty in skeletonization is that a skeleton is not well defined due to the diversity of 3D objects and the difference of applications. In this paper we give a skeleton description of tree branches. Trees are very common objects in natural environment. Reconstructing a skeleton of the tree branches is of signifi-
Thierry Fourcaud LIAMA-AMAP CIRAD, Montpellier, France
[email protected]
cance in the research field of computer graphics and in the application of forestry and ecosystems. Constructing a tree skeleton which represents the trunk and branches is a key step of tree modeling. Additionally, tree skeletons indicate important morphological parameters such as location and direction of a branch, tree height and shape. These parameters are of ecological and economical interest [15]. To create a tree skeleton, the surface information of branches should be obtained at first. Laser scanners can directly obtain the surface points of a tree, and the accuracy of these points can be a few millimeters or even less. A single scan acquires one-side information of the tree, and the sample points located regularly on the projection plane in the form of a range image. Our approach in this work is based on laser scanning. The input is a single range image of a bare tree (which can be obtained from a scan of the tree in winter). Some facts affect the extraction of tree skeletons from a single range image. First, trees have irregular branch shape and cross section area. Additionally, the input data is incomplete and contain only one-side surface information due to the single scan. Moreover, some portions of a branch are totally missing due to the occlusion between branches. Conventional definition and computation of skeletons are not suitable for this type of data. Note that cross-sections of the trunk and branches are approximately circular. Based on these facts we represent each branch as a generalized circular cylinder and define the curve-axis of each cylinder as a skeleton of the branch. So a hierarchical skeleton of the whole tree can be constructed by connecting these skeleton segments. The key idea is to represent a tree using generalized circular cylinders which can constructed from one-side incomplete input data, and produce skeleton from the curve-axes of generalized cylinders. The remainder of the paper is organized as follows. After discussing previous work on skeletonization, especially work on creating tree skeletons in Section 2, we provide an overview of our tree skeleton extraction pipeline in Section 3. Section 4 gives a detailed explanation of the steps to separate branches from each other based on the discontinu-
ity of depth and axis direction. In Section 5 we introduce how to fit a generalized circular cylinder to each branch and get skeleton segments. The following Section 6 shows the connection of skeleton segments to generate a hierarchical curve-skeleton. Experimental results are discussed in Section 7. Conclusion and future work are finally presented in Section 8.
2
Related Work
3
Overview
The key idea of this approach is that the trunk and branches of a tree are represented by generalized circular cylinders. Circular cylinder fitting is applied to compute the skeletons and radii of branches. The main steps of this approach is shown as follows. Range Image Branch Surface Normal Computation Normal Refinement Principal Curvature Directions Computation
Estimation of Axis Directions
There are many algorithms to extract skeletons from 3D objects in the literature. They can be roughly classified into three categories: topological thinning, distance field based and geometric methods [5]. Topological Thinning. Thinning methods [4, 11] attempt to iteratively remove simple points from the boundary of a volume data. A simple point is a voxel that can be removed without changing the topology of the object [5]. These methods differ mainly by the way how simple points are detected and considered for removal. Most thinning algorithms generate a connected skeleton that can preserve the original shape, however they are sensitive to contour noise and require additional pruning postprocessing. Distance Transform. Distance field based methods [22, 2] compute skeletons from the ridges of distance field. The distance field is defined for each point as the smallest distance from that point to the boundary of the object. The distance function can be Euclidean distance or city block distance. Also it can be generalized as various types of field functions such as radial basis functions [12]. Geometric methods. Geometric methods [20] usually apply to objects represented by polygonal meshes or point clouds. There are mainly two subclasses of geometric methods based on medial axis or Reeb graph. In the first subclass, skeleton is computed as a subset of the medial axis, and the medial axis can be extracted from the Voronoi diagram [6] or shock scaffold [10]. The main disadvantage of these methods is their sensitivity to noise. Reeb graph based geometric methods [20] produce a 1D skeleton directly by following the evolution of the level sets of a realvalued function. The real-valued function can be height, Euclidean distance or geodesic distance from a root point. Apart from the general skeletonization methods, many approaches for constructing tree skeletons as a key step of tree modeling have been proposed in the past decades. Shlyakhter et al. [18] produced a plausible tree skeleton by finding an approximation to the medial axis of the tree’s visual hull from a set of instrumented photographs. The approach described in [17] is also based on photographs, but it focuses on the modeling of leaves, with tree skeletons interactively designed by the user. These methods pay more attention to the visual impression than tree structures, and they generates only approximate and plausible skele-
tons due to occlusion induced by leaves and limited accuracy of the recovered 3D points. More recently, Teng et al. [19] proposed a method to construct skeletons of the trunk and main branches from two photographs. They first extracted 2D skeletons from each photograph and then recovered 3D skeletons based on these 2D skeletons and the calibrated camera parameters. This method only generates skeletons of lower portion of the tree due to the occlusion of leaves. Moreover, it is not easy to extract correct 2D skeletons from cross-branches and neighboring stems with partial occlusions, because it is difficult to detect boundaries between different branches with occlusion just from a photograph. Xu et al. [21] produced the main skeleton by computing the centroid of points that have a similar length of the shortest path to a root point, and synthesized additional small branches based on the existing main skeleton using the property of self-similarity. The skeleton obtained in this way is dependent on the position of root points in every disconnected branch, and automatic selection of these root points is not easy, especially when there are too much occlusion. Pfeifer et al. [8, 15] constructed tree skeletons using 3D mathematical morphology in 3D voxel space. This method requires multiple-scan to obtain dense point clouds and conversion of point cloud to 3D voxels. Moreover, the obtained skeleton is coarse and sensitive to noise.
Branch Decomposition Circular Cylinder Fitting Hierarchical Skeleton
Figure 1. Pipeline of skeleton extraction 1. Estimation of Axis Directions. Surface normal is estimated and refined at each point on the branch surface
at first. Then principal curvature directions are calculated through local shape estimation. Specific principal directions, which represent ridge directions of the surface, are chosen as the branch axis directions. 2. Branch Shape Decomposition. The input range image of a bare tree is segmented into serval independent patches, where each patch corresponds to one consecutive part of a branch. This segmentation is based on the fact that the depth and axis direction between different branches are discontinuous. 3. Circular Cylinder Fitting. Points in each patch are partitioned into bins, and each bin has a short length in the axis direction so that the points in the bin can be approximated with a circular cylinder. By fitting a circular cylinder to the points in a bin, we obtain a skeleton point and the corresponding radius. 4. Hierarchical Skeleton. A skeleton segment of the branch in each patch is formed by connecting the adjacent skeleton points. Neighboring skeleton segments are connected to form a hierarchical skeleton. The automatic connection of skeleton segments in different patches may produce incorrect result, so we designed an user interface to connect different skeleton segments interactively in 2D image space with the range image for reference. Figure 1 shows the pipeline of our tree skeleton extraction algorithm.
4
Branch Decomposition
A tree contains many branches, and the first step of our tree skeleton extraction approach is separating the branches from each other. Since each branch can be seen as a generalized cylinder, every point on the branch can be assigned an axis direction as the corresponding cylinder’s axis direction. Axis directions have jump changes in the neighborhood of boundary between two connected branches. Additionally the boundaries of occluded parts between different branches are jump edges. So we can detect these boundaries and separate different branches by finding the discontinuity of depth and axis direction in the range image.
4.1
Estimation of Axis Directions
As mentioned earlier, the trunk and branches are regarded as generalized circular cylinders, the axis direction of each point on the branch surface can be estimated with the principle direction corresponding to the smallest normal curvature on the point. There have been a number of methods proposed for computing principal directions on a
discrete surface [7, 9]. Goldfeather et al. [7] show that most methods have similar performance when the surface is represented with regular meshes. In this work the input range image can be viewed as regular meshes by connecting every pixel with its 4-neighbors. We extend a method in [7] to compute principal directions. The first step of this method is computing the surface normal at each point. An incorrect normal will introduce errors into the following principal directions calculation. Boundary points may not lie on the same branch surface with its neighboring points, and the distance between them is often large. To alleviate the influence of these outside surface points (outliers) and get more accurate surface normal, we estimate the normal using local weighted plane fit, and then refine it by vector voting. Normal Computation. Let p be a point in the range data, and qi , i ∈ {1, ..., N } be the neighboring points of p. These neighboring points are found as the intersection of the range image and a square window mask W(p, s) centered on p, where s is the size of the square mask, and s is set to 5 pixels by default. Not all points covered by the mask belong to the same branch as point p, and the points outside the surface often are far away from p. In order to weaken the influence of far points, We adopt a distance weight for each neighbor point. The distance weight function monotonically decreases with the increase of distance. The surface normal n(n ∈ R3 , n = 1) at point p is computed through minimizing the weighted square distance between neighboring points {qi } and a plane H = {x|x − p, n = 0, x ∈ R3 } passing through p, so n satisfies the following expression min
n=1
qi − p, n2 · w(
qi − p ), δ
(1)
where δ is adopted as point size times s. Expression (1) is a typical conditional extremum problem. It can be solved by eigen-analysis of the matrix built from weighted covariances. The weight function w is a smoothly vanishing, locally supported function. In particular we adopt Wendland’s radial function (2) as in [1]. w(x) = (1 − x)4 (1 + 4x)
(2)
The shape of this weight curve is shown in Figure 2(a). Normal Refinement. After obtaining the surface normal at each point, we perform normal refinement to get more robust normal. Given a point q with a known normal n, we can infer the most likely normal m at its neighboring points p using smoothness constraint. As shown in Figure 2(b), a circular arc pass though the neighboring point p and at the same time is perpendicular to the normal n at the given point q.
Also, κin can be estimate with
1 0.9
M
0.8
n
0.7
w
κin =
q
z
0.6 0.5 0.4
most likely normal
m
0.3 0.2 0.1 0
0
0.2
0.4
0.6
0.8
(a) Weight function
x
(b) The most likely normal
Figure 2. Normal computing
min
κ1 ,κ2 ,β
This arc follows the perceptual continuity constraints [13, 14]. Then the most likely normal m is perpendicular to that arc at p. Also it lies on the same plane as the original normal n at q. For a point p, every neighboring points qi cast a most likely normal mi to it. To find a consensus normal direction n ˜ , we collect these normal votes using the following optimization function (3) max
˜ n=1
qi − p ), ˜ · w( mi , n δ 2
qi − p
2
.
(5)
Since the estimation of normal curvature κin is not accurate when point qi is far away from point p, we introduce a weight for each normal curvature and solve the weighted linear system to obtain principal directions as follows. The weight function w is also the same as Equation (2).
most likely continuation
p
1
x
2n · (qi − p)
+ κ2 sin2 (θi + β) − κin )2 w(
qi − p ). δ
min Ax − b2 ,
(7)
x
where A
=
b = x wi
cos(2θ1 )w1 ... cos(2θi )wi ... cos(2θN )wN
sin(2θ1 )w1 ... sin(2θi )wi ... sin(2θN )wN
w1 ... wi ... wN
,
T (2κ1n w1 , ..., 2κin wi , ..., 2κN n wN ) ,
((κ1 − κ2 ) cos(2β), (κ1 − κ2 ) sin(2β), κ1 + κ2 )T , qi − p ). (8) = w( δ =
After obtaining the principal directions, the principal direction corresponding to the smaller principal curvature is used as the axis direction. Figure 4(b) shows the estimated axis directions in the neighboring region of a ramification.
n p
Ti
E
N1
N2
N ni qi
Figure 3. Principal curvature direction Let κ1 , κ2 be principal curvatures at p (Figure 3). According to the Euler formula, the normal curvature (κin ) at p along the tangent direction θi is given by κin
2
2
= κ1 cos (θi + β) + κ2 sin (θi + β).
(4)
(6)
Expression (6) can be rewriten as
(3)
where the weight function w is the same as Equation (2). Expression (3) is also a typical conditional extremum problem. The solution n ˜ is accepted as the refined normal direction at p. In fact, the above normal refinement is to average the influence of neighboring normals, which is similar in principle with smooth filtering of images. After refinement the computed normals are more robust to noise. Principal Curvature Directions Computation. After getting normals, the next step is to form a local orthogonal coordinate system at each point and compute the principal directions by normal curvature approximation method [7].
(κ1 cos2 (θi + β)
(a) range image
(b) 2D projection of axis directions
Figure 4. Axis directions
4.2
Boundary Detection
After getting the axis direction at each point, we can compute the difference of axis direction between a point and its neighboring points. Usually the differences of axis direction and that of depth between points in different branches are large. Equation (9) shows an expression of the combination of these two differences. D(p, q) = α(1 − np , nq 2 ) + (1 − α)
|zp − zq | , δz
(9)
where np and nq are normals at p and q respectively, zp , zq are depth values, δz is the variance of depth difference, and α is a weighting scalar. For point p and its neighbor point q, if D(p, q) is bigger than a threshold ∆, p is regarded as a boundary point. By discarding boundary points the range image is partitioned into patches, and each patch only contains points from the same branch. Figure 5(b) shows the decomposition result of a range image (Figure 5(a)). Pixels with gray color are detected boundaries between different patches. Note that the purpose of boundary detection is to separate branch pixels into geometrically disconnected patches. So the boundaries are not necessary to be one-pixel wide.
branch is first divided into bins and then each bin is fitted using a circular cylinder. The centroid of each cylinder is a control point of the skeleton segment of the branch, and the skeleton segment is formed by connecting adjacent control points.
5.1
Branch Points Clustering
The key idea for clustering branch points into bins is to assign a value xp to each point p in the branch so that points that lie in the same cross-section are assigned with the same value, then based on the value and position of p, the branch points can be clustered into bins. We compute a projection distance for each point as shown in Figure 6. For all points in a patch, we compute the centroid point (O) and the average axis direction (x), and then get a straight line pass through the centroid in the average axis direction. Each point in the patch are projected to the line along the direction perpendicular to its axis direction and get a projection distance xp to the centroid. The projection distance are quantized, and all neighboring points with the same quantized projection distance are clustered into the same bin. Points in the same bin are fitted with a circular cylinder to compute skeleton point. Figure 6 shows the 2D projection of points and their axis directions in a patch to the range image plane. Figure 7(a) shows the clustering result of the whole tree.
ap
p
xp
O
x
Figure 6. Projection distance
5.2 (a) Range Image
(b) Branch patches
Figure 5. Branch decomposition
5
Skeleton Computation
So far the range image is partitioned into branches. Each branch can be modeled by a generalized circular cylinder. To reconstruct the generalized circular cylinder model, each
Circular Cylinder Fitting
Circular cylinder fitting deals with minimizing the mean square distance from a set of points to a cylinder surface. There are mainly two types of methods for the least-squares fitting of circular cylinder: algebraic and geometric methods, which minimize the algebraic and geometric distance respectively [16]. Algebraic methods can be solved with linear techniques (casted as an eigenvalue problem), however, the solution may be very different from the optimum cylinder, especially in the case that fitted points cover only a small portion of the circumference. Geometric methods
are usually formulated as a five-parameter nonlinear optimization problem. They are solved using various iterative techniques and need some good initial estimation of the solution to avoid local minimization. In this section we proposed a new cylinder fitting method, which has only two parameters to optimize and can be solve with the generalized eigenvalue technique if the direction of the cylinder axis is known beforehand. Given n 3D points pi (1 ≤ i ≤ n), the objective function to be minimized is defined by F=
n
d2i ,
where di is the Euclidean (geometric) distance of point pi to the fitted cylinder surface. Circular cylinders have five degree of freedom, two for the direction of the axis a, two for the point q that the axis passes through, and one for the radius r. They can be parameterized without constraints by s = (φ, θ, α, ρ, r) as follows: (11) (12)
where ax = (− sin φ, cos φ, 0)T ,
(13)
ay = (cos φ cos θ, sin φ cos θ, − sin θ)T .
(14)
Then the geometric distance can be computed with the following formula, di = (pi − q) × a − r.
(15)
Luk´acs et al. found an approximate distance function d˜i that is faithful to the true distance function di : d2 d˜i = di + i 2r 2 (pi − q) × a − r2 . = 2r Then the objective function (10) transforms to min
n
d˜2i ,
(17)
k=1
and it can be rewritten as 2
min Bu s.t. uT Cu = 1.
(18)
1 ... 1 ... 1
,
If the axis direction a is known, this minimization problem can be posed as a standard generalized eigenvalue problem and solved with linear techniques. The eigenvector which corresponds to the smallest non-negative eigenvalue of C−1 BT B is the solution of u up to a scale, and the smallest non-negative eigenvalue is the minimum value of the objective function (17). Once obtaining u, we can compute the other three parameters (α, ρ, r). From these we can see that the optimum solution of (α, ρ, r) is a function of (φ, θ), and can be computed with generalized eigenvalue techniques. When the axis direction a is not known, we can reduce the parameter number of nonlinear optimization to two using the above technique, which greatly reduces the time complexity of the nonlinear optimization in cylinder fitting. This technique also alleviate the solution dependence on the initial estimation and avoid local optimization to some extent. Another advantage of this technique lies in that the axis directions estimated in Section 4.1 provide a good initial estimation of the axis direction a. Points of each bin are fitted using a circular cylinder, and the centroid of the resulting cylinder is selected as a skeleton point of the bin. Figure 7(b) shows the extracted skeleton points. These skeleton points are projected to the range image plane for better visualization. The skeleton points are dense and can well describe the shape of the visible parts of a branch.
6 (16)
pT1 Ap1 −pT1 ax −pT1 ay ... ... T... T T Ap −p a −p p B= i x i i i ay ... ... ... pTn Apn −pTn ax −pTn ay A = I − aaT ,
T α ρ sin α (ρ2 −r 2 ) 1 u = 2r , ρ cos , , , r r 2r 0 0 0 −2 0 1 0 0 . C= 0 0 1 0 −2 0 0 0
(10)
k=1
a = (cos φ sin θ, sin φ sin θ, cos θ)T , q = ρ (ax cos α + ay sin α),
where
Skeleton Connection
After obtaining skeleton points in all patches, the next step is connecting them to generate a hierarchical skeleton. This connection is performed in two steps: in each path, a skeleton segment is formed by connecting the adjacent skeleton points; and then these skeleton segments are connected to form a hierarchial skeleton. For the skeleton points in the same patch, it is easy to generate a skeleton segment by tracking the adjacent bins. After connecting skeleton points in each patch, we get a series of disconnected skeleton segments as shown in Figure 7(b).
In the second step, each skeleton segment is connected to another segment by connecting the start (end) skeleton point p with a neighboring skeleton point q in other segments. The guideline for this connection is similar with that in [21]: → and the tangent direction at point (1) the angle between − pq p is smaller than a threshold (e.g. 30◦ ); (2) skeleton point q has the smallest distance to point p. However it is very difficult to correctly connect different skeleton segments with full automation, especially when the skeleton segments are far away from each other induced by heavy occlusions. So we designed an user interface based on Figure 7(b) to connect different skeleton segments interactively, which is very convenient to perform in 2D space with the range image providing implicit 3D information. Figure 8(a) shows the connected hierarchical skeleton.
textured model from two different views. The advantage of this approach is that tree skeleton can be extracted from one-side incomplete data with the help of 3D model reconstruction. The generalized circular cylinder model provides a robust and reasonable extrapolation for missing data. The skeleton is defined as the connected curve-axes of generalized cylinders, and it can achieve some particular properties [5]: reconstruction, thinness(1D), centeredness, connectivity, smoothness, hierarchy. One disadvantage is that the skeleton of some small branches or small portions of a branch can not be extracted, because some points in a thin branch are lost in branch decomposition and cylinder fitting can not be performed in a bin with too few sample points (e.g. fewer than 5 points).
8
Conclusion and Future Work
We have proposed an approach for extracting skeletons of a bare tree from a single range image. The key idea is to fit the input data with generalized circular cylinders and obtain skeletons from the axis of fitted cylinders. To improve the efficiency of cylinder fitting, we proposed a new method by introducing a faithful distance function, which can greatly reduces the time complexity and avoid local optimization to some extent. In the future we would like to extract skeletons from range images of more types of trees and from real range images captured by laser scanner in real environment.
Acknowledgement
(a) Branch points clustering
(b) Skeleton segments
Figure 7. Skeleton Connection
7
Experiment and Discussion
our tree skeleton extraction approach has been tested in a range image generated from the depth buffer image when rendering the branch geometry of a virtual plant Ilex aquifolia from AMAP-GenesisT M (Figure 5(a)). The extracted hierarchical skeleton of the virtual tree is shown in Figure 8(a), where different colors represent different hierarchial levels. After obtaining the radius at each skeleton point of the tree through cylinder fitting, a generalized circular cylinder model can be constructed using the approach of Bloomenthal [3]. Figure 8(b) shows the constructed 3D model using the skeleton in Figure 8(a), Figure 8(c) and 8(d) show the
All Plant data are generated by AMAP Genesis (Bionatics S.A.). This work is supported by the National High Technology Development 863 Program of China under Grant No.2006AA01Z301, 2006AA10Z229; the National Natural Science Foundation of China under Grant No. 60674128, 60073007, 60473110; MOST International collaboration project No. 2007DFC10740; and Beijing Municipal Natural Science Foundation under Grant No. 4062033.
References [1] A. Adamson and M. Alexa. Point-sampled cell complexes. ACM Trans. Graph., 25(3):671–680, 2006. [2] I. Bitter, A. E. Kaufman, and M. Sato. Penalized-distance volumetric skeleton algorithm. IEEE Transactions on Visualization and Computer Graphics, 7(3):195–206, 2001. [3] J. Bloomenthal. Modeling the mighty maple. In SIGGRAPH ’85: Proceedings of the 12th annual conference on Computer graphics and interactive techniques, pages 305–311, 1985. [4] G. Borgefors, I. Nystrom, and G. Sanniti di Baja. Computing skeletons in three dimensions. Pattern Recognition, 32(7):1225–1236, 1999.
(a) Hierarchical skeleton
(b) 3D model
(c) Textured model
(d) Another view
Figure 8. Reconstructed branch models and realistic rendering. [5] N. D. Cornea and P. Min. Curve-skeleton properties, applications, and algorithms. IEEE Transactions on Visualization and Computer Graphics, 13(3):530–548, 2007. [6] T. K. Dey and J. Sun. Defining and computing curveskeletons with medial geodesic function. In SGP’06: Proceedings of the fourth Eurographics symposium on Geometry processing, pages 143–152, 2006. [7] J. Goldfeather and V. Interrante. A novel cubic-order algorithm for approximating principal direction vectors. ACM Trans. Graph., 23(1):45–63, 2004. [8] B. Gorte and N. Pfeifer. Structuring laser-scanned trees using 3d mathematical morphology. In Proc. of XXth ISPRS Congress, pages 929–933, 2004. [9] E. Hameiri and I. Shimshoni. Estimating the principal curvatures and the darboux frame from real 3d range data. IEEE Trans. Systems, Man, and Cybernetics, Part B, 33:626–637, 2003. [10] F. F. Leymarie and B. B. Kimia. Computation of the shock scaffold for unorganized point clouds in 3d. In CVPR’03: IEEE Conf. on Computer Vision and Pattern Recognition, pages I:821–827, 2003. [11] C. Lohou and G. Bertrand. A 3d 12-subiteration thinning algorithm based on p-simple points. Discrete Appl. Math., 139(1-3):171–195, 2004. [12] W.-C. Ma, F.-C. Wu, and M. Ouhyoung. Skeleton extraction of 3d objects with radial basis functions. In SMI ’03: Proceedings of the Shape Modeling International 2003, pages 207–215, 2003. [13] G. Medioni, M.-S. Lee, and C.-K. Tang. Computational Framework for Segmentation and Grouping. Elsevier Science Inc., New York, NY, USA, 2000. [14] D. L. Page, Y. Sun, A. F. Koschan, J. Paik, and M. A. Abidi. Normal vector voting: crease detection and cur-
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
vature estimation on large, noisy meshes. Graph. Models, 64(3/4):199–229, 2002. N. Pfeifer, B. Gorte, and D. Winterhalder. Automatic reconstruction of single trees from terrestrial laser scanner data. In Proc. of XXth ISPRS Congress, pages 114–119, 2004. V. Pratt. Direct least-squares fitting of algebraic surfaces. In SIGGRAPH ’87: Proceedings of the 14th annual conference on Computer graphics and interactive techniques, pages 145–152, 1987. L. Quan, P. Tan, G. Zeng, L. Yuan, J. Wang, and S. B. Kang. Image-based plant modeling. ACM Trans. Graph., 25(3):599–604, 2006. I. Shlyakhter, M. Rozenoer, J. Dorsey, and S. Teller. Reconstructing 3d tree models from instrumented photographs. IEEE Comput. Graph. Appl., 21(3):53–61, 2001. C.-H. Teng, Y.-S. Chen, and W.-H. Hsu. Constructing a 3d trunk model from two images. Graph. Models, 69(1):33–56, 2007. A. Verroust and F. Lazarus. Extracting skeletal curves from 3d scattered data. In SMI’99: Proceedings of the International Conference on Shape Modeling and Applications, pages 194–201, 1999. H. Xu, N. Gossett, and B. Chen. Knowledge-based modeling of laser-scanned trees. In SIGGRAPH ’05: ACM SIGGRAPH 2005 Sketches, page 124, 2005. Y. Zhou and A. W. Toga. Efficient skeletonization of volumetric objects. IEEE Transactions on Visualization and Computer Graphics, 5(3):196–209, 1999.