Abstract
The segmentation of a point cloud is one of the key technologies for three-dimensional reconstruction, and the segmentation from three-dimensional views can facilitate reverse engineering. In this paper, we propose a self-adaptive segmentation algorithm, which can address challenges related to the region-growing algorithm, such as inconsistent or excessive segmentation. Our algorithm consists of two main steps: automatic selection of seed points according to extracted features and segmentation of the points using an improved region-growing algorithm. The benefits of our approach are the ability to select seed points without user intervention and the reduction of the influence of noise. We demonstrate the robustness and effectiveness of our algorithm on different point cloud models and the results show that the segmentation accuracy rate achieves 96%.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.Avoid common mistakes on your manuscript.
1 Introduction
With the increasing use of computer graphics technology in conjunction with agricultural knowledge, research on the morphological structure and physiological function of objects is entering a digital and visual stage. Digital content creation using real-world data has gained a great deal of attention over the past decades [1]. Segmentation is necessary in reverse engineering, where models are reconstructed from points acquired on the surface of the object by laser scanners. Additionally, agricultural and forestry plants have different structures with respect to their leaves, branches, and fruits. Thus, different parts of the models need to adopt different modeling methods to guarantee the precision and effectivity of the reconstruction. Segmenting the point cloud of different structures effectively is one of the key technologies for high-precision reconstruction of reverse engineering and is also useful in other applications, such as three-dimensional (3D) city modeling, feature recognition, geometry compression, and industrial site modeling [10]. We propose an algorithm for segmenting an unorganized set of points of a 3D object and dividing the points into several proper subsets with similar attributes, which mainly include distance, density, normal, and curvature.
2 Related work
In current reverse engineering, a point cloud is typically divided into regions with similar topological structures to facilitate surface reconstruction. Existing segmentation methods mainly include edge-based segmentation, surface-based segmentation, and a combination of these two methods.
In edge-based segmentation, the boundary line connected by boundary points is the fundamental base for the segmentation. Wang et al. [24] proposed a segmentation algorithm for point cloud models of buildings. Their algorithm extracts buildings according to the boundary of the point cloud models. The boundary corresponds to discontinuities in depth or height, and therefore distinguishes one building from other buildings and objects on the ground. However, this method is very sensitive to noise. Dai et al. [7] developed a segmentation method for a point cloud distributed in the principal direction of tree models. The algorithm calculates the principal curvature and direction of the points from the tree point cloud models and uses this information to define an energy function. It then determines the segmentation of the leaves and branches according to the defined energy function and obtains the final segmentation results by separating the leaves and branches. The algorithm has a high operating efficiency, but its application is limited to tree models. Guillaume et al. [13] calculated the curvature tensor-based triangle mesh and used it to segment points into surface patches. Then, they adjusted the boundaries to obtain the segmentation of patch edges.
Surface-based segmentation uses local surface attributes as a similarity measure and merges the points with similar attributes [21]. It can also provide information with abstract expressions, which is useful for expression and analysis [17]. This method usually performs better than edge-based segmentation. Richtsfeld et al. [22] proposed a segmentation method using radial reflection to estimate model shapes. The algorithm mainly extracts the model shapes of surfaces. Rabbani et al. [21] proposed a constraint-based segmentation algorithm that can extract smooth regions in point cloud models. However, its segmentation results depend heavily on the parameter settings. Yamauchi et al. [25] proposed mesh segmentation with a mean shift algorithm. It is based on normal clustering using an adaptive mean shift algorithm and performs segmentation using the region-growing algorithm. The authors algorithm was originally proposed for the segmentation of images [6].
The mixed method involves combining methods based on edges and surfaces. Zhang et al. [28] used a statistical method to extract feature lines; however, it is affected by noise and sampling quality. Lari [16] proposed a segmentation algorithm that can quickly extract linear features in the point cloud data instead of segmenting the entire point cloud data, which leads to some limitations regarding the segmentation result. Zhana et al. [27] proposed a segmentation algorithm based on a color model to segment buildings, but this algorithm cannot be applied to point cloud models that do not contain color information, thereby greatly limiting its application potential. Dorninger et al. [9] proposed a point cloud segmentation algorithm based on parametric space. The algorithm clusters point cloud data in the space defined by the parameterization of the point cloud. However, this method is difficult to apply to unorganized point cloud data models. Gomes et al. [12] used 3D moving fovea to process parts of a scene using different levels of resolution. This approach can be used to identify objects in a point cloud. Gelfand et al. [11] presented shape segmentation using local slippage analysis. The shapes are defined as symmetric, which includes cylinders, planes, spheres, and surfaces of revolution. The method merges initial surfaces and is sensitive to the size of patches. In [18], Marshall et al. proposed an improved least-squares fitting algorithm, which can segment the primitives (cylinders, spheres, and cones) from range data. In [17], Li et al. presented an improved algorithm to fit primitives using global relations, which can be obtained through constrained minimization. Pu et al. [20] performed building segmentation and extracted features using surface growing according to direction and size derived from convex hulls. Ochmann et al. [19] filtered out clutter outside the building, which was caused by mirrors and windows. This method obtains point labeling of a buildings room and is also homogeneous within each room. Kaick et al. [15] proposed a shape segmentation algorithm, which can optimize decomposition based on characterization according to the expected geometry of a shape. Demir et al. [8] used similarities to segment and detect the shape of a point cloud.
2.1 Overview and contributions
The aforementioned point cloud segmentation methods are mostly used for point cloud models or 2.5-dimensional depth images in specific application scenarios. Many of the methods involve a large number of parameters that have a substantial influence on the final segmentation result. We compare number of parameters in Table 1. These segmentation algorithms encounter many limitations when applied to unorganized 3D point cloud data. 3D scanners capture unorganized point cloud data, which makes it difficult to determine the topological relationship between points. The feature information corresponding to different parts is vastly different, and it is difficult for these algorithms to obtain an ideal segmentation result.
To address the aforementioned issues, we propose a self-adaptive point cloud segmentation algorithm to effectively segment different unordered point cloud data and lay a foundation for the 3D high-precision reconstruction.
The complete segmentation algorithm is provided in Algorithm 1. It is mainly divided into two steps: select seed points and segment the points. The first step mainly consists of the calculation of representativeness and diversity values. The second step mainly consists of the calculation of constraints. The calculations are described in detail in Sects. 3 and 4, respectively.
To summarize, our contributions are as follows:
-
Our point cloud segmentation algorithm automatically selects seed points without user intervention, thereby suitably expressing similarity and guaranteeing the consistency of the segmentation results.
-
The algorithm can confirm the number of seed points automatically instead of requiring user interaction. Our algorithm enhances its adaptability by using an automatic calculation.
-
The algorithm can also rearrange the location of a noised point, thereby reducing the effect of noise.
-
We consider the connectivity of points and use a semiautomatic region-growing algorithm by reducing the number of parameters, thereby balancing between the degree of under- and over-segmentation.
3 Seed point calculation
In reverse engineering, mass research is a bottom-up method, which starts from the seed points and uses the region-growing algorithm. One problem for this method is the difficulty of selecting seed points. Thus, we present an algorithm that can automatically select seed points, which have a high density compared to its surrounding neighbors with lower density and a large diversity with other seed points [23].
3.1 Feature calculation
3.1.1 Representativeness values calculation
Representativeness can be measured by a point that has a higher density than its neighbors. There has been extensive research on density calculation, but most works require artificial parameters to set the radius. To reduce user intervention and enhance adaptability, the implementation of an automatic process is necessary.
The input is an unorganized set of points \(U=\mathop {\left\{ {{p_i}}\right\} }\nolimits _{i\in I}\subset {R^3}\). A bounding box that has the minimal area and encloses all the points can be constructed. Then, we can obtain the initial neighborhood size as follows:
where \(\hbox {dist}_d\) is the diagonal length of the input U’s bounding box and N is the number of points in U. Additionally, it is necessary to compute a point \(\hbox {mp} \in U\) (see Fig. 1), which has the total minimum distance to a set of points. It can be obtained as follows:
According to the initial neighborhood size and point mp, the neighborhood size can be computed automatically. It is adapted during iteration processing and can be described as follows:
where \(|| \cdot ||\) is the \(L_2\)-norm, \(\mathbf {n}\) is the normal vector of a point, K is the number of points in Nhbd, and \(\hbox {Nhbd}_\mathrm{mp} = \{ p_i|p_i \in U \wedge ||\hbox {mp} - p_i|| < \alpha _i\}\) under a neighborhood size \(\alpha _i\); that is, the points can be obtained from fixed distance neighbors (FDNs). For a given point and the neighborhood size \(\alpha _i\), the FDNs select all the points within the area (Fig. 2). For an FDN search, the number of neighbors K changes according to the density. The weight and spatial functions are defined by
Equation (3) is calculated by iterating until the value of K is constant. The computation of the radius is suitable for different models and enhances adaptability.
After neighborhood size \(\alpha \) has been obtained, the representativeness value, that is, the density of each point in U, is defined as
To avoid excessive segmentation, we sort all the data points in descending order according to density.
3.1.2 Diversity values calculation
To ensure the diversity of the seed points, the diversity can be measured by computing the minimum distance between point \(p_i\) and other points with densities that are higher than that of point \(p_i\) [23]. We define the diverse distance as follows:
For the point with the highest density, it can be noted that
The diversity values are similar to those obtained using the maximum marginal relevance algorithm [2], which is used to remove points that are similar to those already selected. The maximum marginal relevance algorithm compares a point with selected points, whereas we compare a point with all other points, thus our algorithm has higher global diversity.
3.2 Automatic selection of seed points
As mentioned previously, the seed point is characterized by a higher density than its neighbors and by a relatively large distance from points with other higher densities to ensure the stability of this process. Therefore, we determine it using the following formula:
We use the aggregation and flame datasets to evaluate the performance of selecting seed points in two dimensions, as shown in Fig. 3. Clearly, the algorithm tends to find seed points that are both dense and a large distance from other seed points. Next, we sort the points in descending order according to the value of sp. Then we generate the set of seed points \(S_L\).
For the region-growing process, we select one point in \(S_L\) as a seed point in the sequence. Until the seed point operation is complete, the subsequent points are selected as seed points individually. Our algorithm can thus adaptively select seed points and automatically set the number of seed points. It can address the problem of inconsistent segmentation results caused by the random selection of seed points.
4 Segmentation
After seed point selection, a semiautomatic region-growing algorithm is used for segmentation. The region-growing algorithm is a surface-based method and involves clustering points with similar attributes into the same region with respect to the seed points.
In the region-growing process, another difficulty is determining whether the point should be added in a given region because the decision is susceptible to noise. To address this difficulty, we consider the connectivity of points and use an improved normal as a constraint.
4.1 Estimation of normal
Traditionally, the normal is equivalent to the normal of the least-squares plane of the point and its neighborhood. Using principal component analysis (PCA) [9] to estimate the normal produces poor approximations because of the existence of surface discontinuities and noise. Surface discontinuities are mainly caused by equally weighting the incorrect contributions of points [3]. Thus, we use an improved constrained nonlinear least-squares algorithm to adaptively determine the weight of each point contribution, which can be expressed as follows:
where \(o_k=p_k-p\), \(p_k\) is the neighbors of point p, \(\mathbf {n}\) represents the normal vector and weighting \(\hbox {e}^{- \lambda {{(o_k^T\mathbf {n} )}}}\) can adaptively deflate the contribution of the high orthogonality mismatch defined by \(\lambda \).
If the input point cloud has severe noise, we rearrange the location of the noised point. We use the following to obtain the location of adjustment:
where \({\tilde{p}}\) is the adjusted location. Figure 4a, b shows the adjustment of noise by which we can reduce the influence of noise. We apply PCA and Eq. (9) to the mimosa model, which is provided in [14]. The results are shown in Fig. 4. Comparing Fig. 4c, d, we observe the improvement of the algorithm in the estimation of the normal.
4.2 Point connectivity
To measure connectivity, the adjacency matrix is constructed, which is obtained from the surface curvature estimation that describes the connectivity for the unorganized set of points.
Based on FDN information and the curvature, an adjacency matrix \(\mathbf {SA}\) is built, and the matrix is symmetric. If \(p_i\), \(p_j\) are connected, \({\mathbf {SA}_{i,j}} = 1\), otherwise \({\mathbf {SA}_{i,j}} = 0\). Considering connectivity, we assume that if points \(p_i\), \(p_j\) are FDNs of each other and the curvature is less than the mean curvature in FDNs, then \({\mathbf {SA}_{i,j}} = 1\).
We now consider computing the curvature using the method of moment-based surface analysis, which is robust to noise [5]. For a surface M and neighborhood ball B with neighborhood size \(\alpha \), the zero moment of point p can be defined as
and the first moments as
where \(q \otimes w := {({q_i}{w_j})_{i,j = 1,2,3}}\). Because of the definition of a moment-based surface via local integration, these moments are robust to noise. Additionally, the curvature at point p can be computed using the zero and first moments shift:
where \(\varsigma \) is the curvature, \(\lambda _{\min }\) and \(\lambda _{\max }\) are the eigenvalues at point p in the first moment M, \(G = \frac{1}{{\alpha + {K^2}}}\) with neighborhood size \(\alpha \) obtained from Eq. (3), and K is the number of neighbors.
4.3 Region growing
The basic purpose of the segmentation algorithm is to subdivide the points into meaningful subsets with high similarity, while avoiding over- and under-segmentation. The details of the segmentation steps are provided in Algorithm 2, and the implementation process is further described below.
We denote the current seed region by Sc, and the global segment list by \(R_L\). A seed is chosen from the set of seed points \(S_L\).
The implementation process is as follows:
-
1.
Select the first data point \(\hbox {seed}_1\) in \(S_L\) as the initial current seed point and insert it into the current seed region Sc.
-
2.
Obtain the neighbors of the current seed point that satisfy \(\cos (|\langle {{{{\beta _{{p_l}}}}, {{\beta _{\mathrm{seed}}}} }} \rangle |) < {\sigma }\). The neighbor will be added to the current region Rc. \(\sigma \) represents the threshold of the normal. As \(\sigma \rightarrow \) 1, we have fewer segments, and in the extreme case, all the points belong to one segment. Similarly, as \(\sigma \rightarrow \) 0, we have more segments, and in the extreme case, each point belongs to one segment. Thus, \(\sigma \) provides a balance between over- and under-segmentation.
-
3.
If the points are connected, add the neighbor to the current seed region Sc and remove it from \(S_L\).
-
4.
Delete the current seed point in seed region Sc and remove the data point from U.
-
5.
Select the next data point in the current seed region Sc as the current seed point, return to Step (2), and execute until the seed region Sc is null.
-
6.
Save Rc in the segment list \(R_L\). Select the next data point in \(S_L\) as the current seed point, return to Step (1), and end the segmentation when all the points are segmented.
5 Results and analysis
We conducted experiments on various models. Figure 5 presents segmentation results of models in [15] and [4]. It is noted that the algorithm is robust when applied to these models and preserves the connectivity of the point cloud.
5.1 Results comparison
To evaluate the segmented results of our proposed algorithm, we conduct three experiments to compare it with the segmentation algorithms of Rabbani et al. [21] and Rodriguez et al. [23].
The segmented results are shown in Figs. 6, 7 and 8. Table 2 compares segmented results obtained by three methods. In Figs. 6, 7 and 8, it can be seen that [21] and [23] excessively segmented single leaves and insufficiently segmented the connection parts of the stems and leaves. In Figs. 6, 7 and 8c, we can observe that each part of the model has a seed point, which has a higher density and is far from the other seed points. Moreover, the algorithm effectively distinguished between stems and leaves. It obtained accurate segmentation results and avoided over- and under-segmentation problems. Figures 6, 7 and 8d show that the seed points have a high density and an obvious division from the other seed points. The result demonstrates that the seed points are reasonable and effective.
In [21], three parameters need to be set: the number of neighbors K, curvature threshold \(\varsigma \), and normal threshold \(\sigma \). In [23], two parameters need to be set: cutoff distance \(d_\mathrm{c}\) and cluster number Num. In our method, only one parameter needs to be set: normal threshold \(\sigma \). For the experiments, Table 3 provides the necessary data.
5.2 Robust test
We added different levels of Gaussian noise to the models to evaluate the robustness of our approach. Noise of 0.3% and 0.6% were added to the models. The resulting segments are shown in Fig. 9.
We segmented the point cloud using different strengths. Figure 10 illustrates the effect of \(\sigma \). The results are ordered by over-segmentation, segment well, and under-segmentation, respectively. It is clear that \(\sigma \) provides a balance between over- and under-segmentation.
Although the focus of our algorithm is the segmentation of a single point cloud model into meaningful subsets, we also show in Fig. 11 a test that applied our algorithm to scenes with multiple models. In the test, we segmented an indoor scene. We can observe that if the model has obvious differences in parts and structures, our method can segment it effectively.
5.3 Quantitative evaluation
We quantitatively evaluate our algorithm with the well-known Princeton Segmentation Benchmark of Chen et al. [4].
In Fig. 12, we compare to the approximate convex analysis (WCSeg) algorithm [15], which can characterize a part as a collection of weakly convex components. As shown in Fig. 12a, compared with WCSeg, our algorithm has more segments in wings, as our algorithm determines the weight of each point contribution while computing normal. In Fig. 12b, our algorithm has fewer segments on the body of the Dinosaur model, as we consider the connectivity of points.
To use the benchmark, we transform the meshes into point cloud and map the segmentation results back to the meshes. Figures 12c–f show a comparison of the algorithms according to the various measures of the benchmark, which reveal the corresponding properties of our method in different aspects, including fewer decomposition parts (d), good segment consistency (e), and similar cut boundaries (f). In Fig. 12c, the Rand index measures a likelihood assessment on state-of-the-art methods. The Rand index of our algorithm is low, WCSeg is better than ours, since these semantic segments labeled by humans are generally convex, the WCSeg is more suitable for decomposing models semantically.
6 Conclusion and limitation
-
(1)
Our self-adaptive point cloud segmentation algorithm automatically selects seed points and guarantees the consistency of the segmentation results. The algorithm reduces both the setting of parameters and the effect of noise, which can enhance the adaptability of the algorithm. The only user-specified parameter required by our method provides a balance between over- and under-segmentation. According to the test results, our algorithm effectively segmented the point cloud and achieved a segmentation rate of up to 96%.
-
(2)
However, the algorithm demonstrated better segmentation results for models with obvious differences in parts and structures, and exhibited a certain limitation for models with similar structures; the limitation can be seen in Fig. 13.
References
Aiteanu, F., Klein, R.: Hybrid tree reconstruction from inhomogeneous point clouds. Vis. Comput. 30(6–8), 763–771 (2014)
Carbonell, J., Goldstein, J.: The use of MMR, diversity-based reranking for reordering documents and producing summaries. In: Proceedings of the 21st annual international ACM SIGIR conference on Research and development in information retrieval, pp. 335–336. ACM (1998)
Castillo, E., Liang, J., Zhao, H.: Point cloud segmentation and denoising via constrained nonlinear least squares normal estimates. Innovations for shape analysis. Springer, Berlin (2013)
Chen, X., Golovinskiy, A., Funkhouser, T.: A benchmark for 3D mesh segmentation. ACM Trans. Graph. (TOG) 28(3), 73 (2009)
Clarenz, U., Griebel, M., et al.: Feature sensitive multiscale editing on surfaces. Vis. Comput. 20(5), 329–343 (2004)
Comaniciu, D., Meer, P.: Mean shift: a robust approach toward feature space analysis. IEEE Trans. Pattern Anal. Mach. Intell. 24(5), 603–619 (2002)
Dai, M., Zhang, X., et al.: Segmentation of point cloud scanned from trees. In: Workshop on Community Based 3D Content and Its Applications in Mobile Internet Environments, ACCV (2009)
Demir, I., Aliaga, D.G., Benes, B.: Coupled segmentation and similarity detection for architectural models. ACM Trans. Graph. (TOG) 34(4), 104 (2015)
Dorninger, P., Nothegger, C.: 3D segmentation of unstructured point clouds for building modelling. Int. Arch. Photogramm. Remote Sens. Spat. Inf. Sci. 35/W49A(3), 191–196 (2007)
Fayolle, P., Pasko, A.: Segmentation of discrete point clouds using an extensible set of templates. Vis. Comput. 29(5), 449–465 (2013)
Gelfand, N., Guibas, L.: Shape segmentation using local slippage analysis. In: Proceedings of the 2004 Eurographics/ACM SIGGRAPH symposium on Geometry processing, pp. 214–223. ACM (2004)
Gomes, R.B., da Silva, B.M.F.: Efficient 3D object recognition using foveated point clouds. Comput. Graph. 37(5), 496–508 (2013)
Guillaume, L., Florent, D., Atilla, B.: Curvature tensor based triangle mesh segmentation with boundary rectification. In: Computer Graphics International, 2004. Proceedings, pp. 10–25. IEEE (2004)
Huang, H., Wu, S., et al.: L1-medial skeleton of point cloud. ACM Trans. Graph. 32(4), 65–1 (2013)
Kaick, O.V., Fish, N., Kleiman, Y., Asafi, S., Cohen-Or, D.: Shape segmentation by approximate convexity analysis. ACM Trans. Graph. (TOG) 34(1), 4 (2014)
Lari, Z., Habib, A.: A novel hybrid approach for the extraction of linear/cylindrical features from laser scanning data. ISPRS Ann. Photogramm. Remote Sens. Spat. Inf. Sci. 2, 151–156 (2013)
Li, Y., Wu, X., et al.: Globfit: consistently fitting primitives by discovering global relations. ACM Trans. Graph. (TOG) 30(4), 52 (2011)
Marshall, D., Lukacs, G., Martin, R.: Robust segmentation of primitives from range data in the presence of geometric degeneracy. IEEE Trans. Pattern Anal. Mach. Intell. 23(3), 304–314 (2001)
Ochmann, S., Vock, R., Wessel, R., Klein, R.: Automatic reconstruction of parametric building models from indoor point clouds. Comput. Graph. 54, 94–103 (2016)
Pu, S., Vosselman, G., et al.: Automatic extraction of building features from terrestrial laser scanning. Int. Arch. Photogramm. Remote Sens. Spat. Inf. Sci. 36(5), 25–27 (2006)
Rabbani, T., Van Den Heuvel, F., Vosselmann, G.: Segmentation of point clouds using smoothness constraint. Int. Arch. Photogramm. Remote Sens. Spat. Inf. Sci. 36(5), 248–253 (2006)
Richtsfeld, M., Vincze, M.: Point cloud segmentation based on radial reflection. Computer analysis of images and patterns, pp. 955–962. Springer, Berlin (2009)
Rodriguez, A., Laio, A.: Clustering by fast search and find of density peaks. Science 344(6191), 1492–1496 (2014)
Wang, J., Shan, J.: Segmentation of lidar point clouds for building extraction. In: American Society for Photogrammetry and Remote Sensing Annual Conference, Baltimore, MD, pp. 9–13 (2009)
Yamauchi, H., Lee, S., et al.: Feature sensitive mesh segmentation with mean shift. In: Shape Modeling and Applications, 2005 International Conference, pp. 236–243. IEEE (2005)
Yücer, K., Sorkine-Hornung, A., et al.: Efficient 3D object segmentation from densely sampled light fields with applications to 3D reconstruction. ACM Trans. Graph. (TOG) 35(3), 22 (2016)
Zhana, Q., Liangb, Y., Xiaoa, Y.: Color-based segmentation of point clouds. Int. Arch. Photogramm. Remote Sens. Spat. Inf. Sci. 38, 248–252 (2009)
Zhang, Y., Geng, G., et al.: A statistical approach for extraction of feature lines from point clouds. Comput. Graph. 56, 31–45 (2016)
Acknowledgements
This work was partially funded by the National High-tech research and Development Program (863 Program: 2013AA10230402), National Natural Science Foundation of China (61402374), and the China Postdoctoral Science Foundation (2014M562457). The authors acknowledge the authors of [26], Shenzhen Key Lab of Visual Computing and Visual Analytics for the source data and the models.
Author information
Authors and Affiliations
Corresponding author
Additional information
Yuling Fan and Meili Wang are the co-first authors.
Rights and permissions
About this article
Cite this article
Fan, Y., Wang, M., Geng, N. et al. A self-adaptive segmentation method for a point cloud. Vis Comput 34, 659–673 (2018). https://doi.org/10.1007/s00371-017-1405-6
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00371-017-1405-6