Feature-aligned segmentation using correlation clustering

We present an algorithm for segmenting a mesh into patches whose boundaries are aligned with prominent ridge and valley lines of the shape. Our key insight is that this problem can be formulated as correlation clustering (CC), a graph partitioning problem originating from the data mining community. The formulation lends two unique advantages to our method over existing segmentation methods. First, since CC is non-parametric, our method has few parameters to tune. Second, as CC is governed by edge weights in the graph, our method offers users direct and local control over the segmentation result. Our technical contributions include the construction of the weighted graph on which CC is defined, a strategy for rapidly computing CC on this graph, and an interactive tool for editing the segmentation. Our experiments show that our method produces qualitatively better segmentations than existing methods on a wide range of inputs.


Introduction
Surface segmentation is one of the fundamental problems in geometry processing. A semantically meaningful segmentation has important applications in parameterization, texturing, and shape matching. For many real-world objects, particularly man-made shapes, their semantics are well captured by linetype features, particularly ridges and valleys [1]. As a result, it is natural to require that the segmentation of such objects should align with their feature lines. Feature-aligned segmentation has enabled applications such as shape abstraction [2,3] and interactive wire-based deformation [4].
Despite extensive research into segmentation, few works have specifically addressed feature-aligned segmentation. Patch-based segmentation methods are mostly concerned with finding patches that meet certain regularity criteria, such as being well-fit by primitives or having homogeneous curvature. While the resulting patch boundaries often coincide with feature lines, it is common for these methods to ignore prominent feature lines or create redundant patches within featureless regions (Figs. 1(b) and 1(c). Only a few methods explicitly aim to preserve a given set of feature lines as the patch boundaries [7,8]. However, they all rely on heuristics that involve multiple parameters. We have found that in practice it is often difficult, if not impossible, to find the right parameter values to keep salient features without adding redundant boundaries in featureless regions ( Fig. 1(d)).
We propose a new method for feature-aligned segmentation. We explicitly formulate as the goal to include as many prominent feature lines and as few weak feature or non-feature lines as possible, as patch boundaries. This is a classical graph partitioning problem known as correlation clustering (CC) [9]. A distinctive property of CC is that it is able to automatically recover the number of clusters. This is achieved by associating graph edges with signed weights. We show how feature-aligned mesh segmentation can be cast as a CC problem by defining an appropriate weighted graph on the Fig. 1 Comparisons of patch-based segmentation of (a) the Rockerarm created by (b) the primitive-fitting method of Yan et al. [5], (c) the region-growing method of Nieser et al. [6], (d) the curvaturesimilarity guided method of Mitani and Suzuki [7] obtained from the ridge (red) and valley (blue) lines in (a), and (e) our method (with α = 0.6), using the same set of feature lines. Note that existing methods often miss prominent features (see blue boxes) or produce too many segments in featureless regions (see red boxes). Our method captures the majority of the prominent features without creating redundant segments.
mesh. In addition, we show how state-of-the-art solvers for CC can be significantly sped up in our problem setting, with little loss of accuracy, by precomputing an oversegmentation of the mesh guided by our graph weights.
We have observed in extensive experiments that our segmentation method outperforms existing methods in maximizing inclusion of prominent feature lines while avoiding redundant patches in featureless regions ( Fig. 1(e)). Moreover, the CC formulation and our efficient solver enable intuitive editing interfaces where the user can locally refine or coarsen the segmentation with instant feedback.
Although CC has been used for related problems including image segmentation and part-based mesh segmentation [10], it has not been used for featurealigned mesh segmentation. We make the following three technical contributions: • We formulate feature-aligned segmentation in terms of CC. In particular, we design graph weights such that the cluster boundaries of CC are made up of salient feature lines connected by shape-following paths (see Section 3.2). • We give an efficient CC algorithm based on precomputing an oversegmentation from the feature lines. We show that our oversegmentation, which is tailored to our graph, yields quantitatively better results than existing oversegmentations (see Section 3.3). • We provide an interactive interface for modifying the segmentation that benefits from our CC formulation and the efficiency of our algorithm (Section 4).

Surface segmentation
We briefly cover the extensive research on this topic, with an emphasis on its ability to produce featurealigned segmentations. We refer readers to excellent surveys [11,12] for more in-depth discussions of these and other works. Segmentation methods generally fall into two camps, being either part-based or patch-based. The first camp aims to partition a solid object into volumetric components. They utilize part-aware shape descriptors such as concavity of the cuts [13,14], convexity [15,16] of parts, compactness [17] of parts, a shape diameter function [18], or a combination of these [19,20]. More sophisticated descriptors can be learned from a collection of shapes [21].
The second camp of methods, to which our method belongs, offers a more detailed partitioning of the surface. For our purpose, we classify patchbased segmentation methods into implicit and explicit schemes. Implicit schemes seek patches that satisfy certain regularity conditions. Ideally, the feature lines emerge implicitly as the boundaries of the patches. The regularity condition can be low approximation error by an analytical primitive [5,[22][23][24][25], developability [26,27], or similarity using a variety of shape descriptors, including curvature [6,[28][29][30][31], normal voting tensor [32], slippage [33], and diffusion-type distances to a set of seed locations [34,35]. However, implicit methods can oversegment surface regions that are void of prominent feature lines, if the region fails the regularity conditions. For example, the region could assume a shape more general than the space of allowed primitives or exhibit significant variation of curvature due to noise (as in the red boxes in Figs. 1(b) and 1(c)). Moreover, a prominent feature line can be missed in the segmentation, if the feature line is surrounded by a region of surface with homogenuous appearance (as in the blue boxes in Figs. 1(b) and 1(c)).
Explicit schemes start from a given set of feature lines and seek to create patches that are bounded by strong features. Existing explicit methods [7,8,36] start by pruning away weak feature lines. Afterwards, Lévy et al. [36] as well as Mitani and Suzuki [7] consider the watershed of the distance function from the pruned feature lines and merge small patches, while Cao et al. [8] directly extend and connect pruned feature lines. Both methods are based on heuristics that are controlled by several thresholds. While these methods have been successful for noise-free CAD objects, we have found that it is often difficult, if not impossible, to find suitable thresholds that create satisfactory segmentations for more general shapes (see Fig. 1(d)). Also, note that the curve networks produced by the feature extension method of Ref. [8] (without the subsequent stage of refinement) are not guaranteed to yield a segmentation of the surface. For example, a closed curve on a high-genus surface does not necessarily partition the surface into two patches.
Our segmentation method follows an explicit scheme. Compared to implicit methods, our method specifically addresses the goal of including prominent feature lines while avoiding weak feature lines or non-feature lines. In contrast to existing explicit methods [7,8,36], our method rests upon a clear mathematical formulation (correlation clustering). The formulation allows us to perform both feature pruning and connection in a single step, thereby reducing the number of parameters to be tuned (our method has a single parameter α that controls the edge weights). The formulation additionally provides a natural means of local control by modifying the edge weights in the graph, which we build upon in our interactive tool.

Correlation clustering
Correlation clustering (CC) was first introduced by Bansal et al. [9] as a non-parametric graph partitioning method. In the general setting, we are given a weighted undirected graph G = {V, E, w} with nodes V , edges E, and real-valued edge weights w : E → R. The weight of an edge can be positive or negative, indicating that the two nodes connected by the edge are similar or dissimilar. The goal is to cluster similar nodes together while placing dissimilar nodes in different clusters. Specifically, we seek a labeling of the nodes, L : V → Z, that minimizes the total weights over all cut edges, those edges that connect nodes with different labels. That is, we seek: where C(L) is the set of cut edges associated with the labeling L: What sets CC apart from other popular clustering problems, such as normalized cuts and k-means clustering, is that the solution of CC automatically recovers the number of optimal clusters. Note that the cut C(L) necessarily includes as many negatively weighted edges and as few positively weighted edges as possible. This prevents the result from degenerating to a single cluster (as such a cut uses no negative edges) or |V | clusters (as such a cut includes all positive edges). CC has found uses in problems involving unknown and possibly large number of clusters, such as entity deduplication [37], community detection in social networks [38], gene clustering [39], and image segmentation [10,[40][41][42][43].
To formulate a clustering problem in terms of CC, the key challenge is designing edge weights. For image segmentation, impressive results have been obtained by weights defined by the local image intensity and learned from a database of ground truth annotations [44]. Keuper et al. [10] formulated part-based mesh segmentation in terms of CC. Their weights are built upon primarily part-aware shape descriptors, such as the shape diameter function and dihedral angles. In this paper, we propose a new set of weights tailored for patch-based segmentation, guided by feature lines.
Solving CC is NP-hard [9]. Approximate solvers either solve a sequence of linear programs [9,45] or make greedy changes to an initial clustering [10,[46][47][48]. The latter seems to have the best efficiency at present for large and sparse graphs [10].
Further acceleration by parallelization has also been explored [49,50]. However, we have found that even the fastest (serial) CC solver cannot run at interactive speed on our graphs (taking over 10 s for a mesh with 200k faces). Interactive response is critical if we want users to be able to quickly explore different parameter values or perform local edits on the segmentation. In this paper, we show that existing CC solvers can be made much faster, with little loss in optimality, by running on an oversegmentation of the mesh pre-computed from the feature lines.

Overview
We consider a triangular mesh (with or without boundary) and a given set of ridge and valley lines on the mesh. Our goal is to connect salient ridges and valleys with shape-following paths to yield a segmentation of the mesh.
A variety of methods exist to compute ridge and valley lines. We use the method of Yoshizawa et al. [51] due to its robustness. Like many other feature line algorithms, each feature line produced by Yoshizawa et al.'s method is represented by feature points lying on triangle edges that are connected by feature segments inside triangles. We call those triangle edges that contain feature points feature edges. See Fig. 2(a).
To formulate the segmentation problem in terms of graph labeling, we have the options of either labeling the triangles or labeling the vertices. Since the feature lines cut across triangles and edges, vertex labeling is a natural choice in our setting. We arrive at the following graph formulation of our problem: given a graph G whose nodes V and edges E are respectively the mesh vertices and edges, find a vertex labeling L whose cut C(L) (defined in Eq. (2)) uses as many salient feature edges and as few other edges (i.e., weak feature edges and non-feature edges) as possible. This closely resembles the objective of CC mentioned earlier, which is to maximize negative edges and minimize positive edges on the cut.
Our method proceeds in three steps as illustrated in Fig. 3: • Define suitable edge weights w on G (see Fig. 3(b)). • Solve CC on G giving a vertex labeling L. The initial patch boundaries are formed by the dual of the cut edges associated with L (see Fig. 3(c)). • Smooth the patch boundaries (see Fig. 3(d)).
We next detail the first and second steps, which are our novel contributions. The third step is commonly used to post-process segmentations. We use the iterative energy minimization method of Ref. [6], but other smoothing strategies such as the one in Ref. [34] can also achieve visually similar results.

Defining the weights
To cast our problem in terms of CC, we need to determine weights on the graph edges such that: • Salient feature edges have negative weights; the more salient the feature, the more negative the edge weight should be. • Non-salient feature edges, as well as non-feature edges, have positive weights; the more likely that the two vertices connected by the edge belong to the same patch, the more positive the edge weight should be.
To consistently define positive and negative weights that meet the two criteria above, we set the weight w(e) of every edge e ∈ E to w(e) = Similarity(e) − α e Award(e) Here, Similarity(e) is a positive scalar that measures the likelihood that the two vertices connected by e belong to the same patch. Note that we use the same quantity to measure the saliency of a feature edge: the lower Similarity(e), the more salient the feature line cutting across the edge e is. Award(e) is a positive scalar used to create negative weights for feature edges, and the negativity is controlled by a per-edge parameter α e . We set α e = 0 for all nonfeature edges e to enforce positivity of w(e). In the automatic mode of our algorithm, we set α e = α for all feature edge e where α is a user-defined constant. In an interactive session, the user can modify this parameter for individual edges to achieve localized edits (see Section 5).
Our definition of the two measures, Similarity and Award, is inspired by recent work on interactive segmentation based on anisotropic geodesic paths [52]. The key observation there is that a good segmentation boundary often goes through an anisotropic region (where the minimum and maximum curvature magnitudes differ significantly) and follows the minimum curvature direction. The authors introduced an anisotropic metric under which curves appear shorter when they are better aligned with the minimum curvature directions and traveling through more anisotropic regions.
We use a similar anisotropic metric and set Similarity(e) to be the length of a dual segment of edge e under this metric. Intuitively, a dual segment represents a piece of the potential segmentation boundary between the two end vertices of e. The shorter the dual segment in the anisotropic metric, the more likely that the two vertices of e can be separated by a good segmentation boundary, and hence the lower Similarity(e). Award(e) is simply set as the length of the dual segment under the regular Euclidean metric. In short, w(e) is the weighted difference between the length of the dual segment of e in the anisotropic metric and the Euclidean metric. The two measures, Similarity and Award, are visualized on the Rocker-arm model in Fig. 4 (left). Observe that the former gives notably low values near salient features, while the latter merely reflects the Euclidean length of the dual segments of the edges.
We now define in detail Similarity and Award. For completeness, we briefly review the anisotropic metric in Ref. [52]. Given a smooth surface S, a metric can be represented as a symmetric 2×2 tensor M x at each point x ∈ S. The length of a tangent vector v at x in this metric is The maximum (minimum) value of where λ 1 λ 2 are the eigenvalues of M x ; they are realized when v is aligned with the corresponding eigenvector e 1 (e 2 ). As a special case, the standard Euclidean metric is achieved by setting M x to an identity matrix. Let κ 1 , κ 2 be the maximum and minimum curvatures at x, such that κ 1 κ 2 , and u 1 , u 2 be the corresponding curvature directions. The anisotropic metric in Ref. [52] is represented by a tensor M x whose eigenvectors {e 1 , e 2 } are aligned with {u 1 , u 2 } and whose eigenvalues are where s x = κ 1 − κ 2 and γ is a global constant. Recall that our edge weight is the difference between the lengths in the anisotropic metric and the Euclidean metric. To make the two quantities comparable, we modify the metric of Ref. [52] so that the maximal length of a tangent vector v in the anisotropic metric, √ λ 1 v , is upper bounded by the length of v in the Euclidean metric, v . As in Ref. [52], the eigenvectors {e 1 , e 2 } of our tensor M x are aligned with {u 1 , u 2 }, but its eigenvalues become: We use γ = 0.05 in all our experiments. Given a discrete mesh, we define a per-triangle anisotropic tensor from locally estimated curvature and curve directions. We create a dual vertex for each triangle located at the triangle centroid, if none of the three edges is a feature edge, or at the centroid of the feature points otherwise. The dual segment of a triangle edge e is a straight segment connecting two dual vertices. This dual structure is illustrated in Fig. 2(b). We evaluate Similarity(e) as the length of the dual segment of e in the anisotropic metric and Award(e) as the length in the Euclidean metric. This is done by first projecting the dual segment onto the supporting plane of each of the two triangles sharing e and then taking the average of the lengths evaluated in the chosen metric on those triangles (using Eq. (4)).
The global constant α, to which α e is set in Eq. (3) for all feature edges, controls the negativity of the graph weight w, which in turn governs the granularity of the segmentation. This is the only global parameter in our formulation. Figure 4 visualizes the graph weight for increasing values of α (top) and the results of CC (bottom). Observe that as the number of negatively weighted edges and the magnitude of their weights increase, the segmentation becomes more refined. Also note that there is a fairly wide range of α values in this example (from 0.5 to 1.1) for which the resulting segmentations appear similar and plausible. The same observation can be made in many of our test examples.

Solving CC
Efficiently solving CC on large graphs remains a challenging task. Drawing inspirations from applications of CC in image segmentation [10,[40][41][42], our method solves CC on a much smaller, precomputed graph that still captures the essence of the input mesh and features.
The basic idea is to first define an initial labeling L of the original graph G, and then solve CC on a simplified graph G created by merging vertices of G with the same label. The weight of an edge connecting two nodes, s and t, of G is the sum of the weights of those edges in G connecting two nodes that are merged respectively into s and t. Intuitively, vertices and edges of G represent the patches and boundaries in an oversegmentation of the mesh. Solving CC on G yields a labeling L on the original graph G, which effectively merges smaller patches of the oversegmentation into bigger patches.
While this is similar to the bottom-up clustering strategy commonly seen in mesh segmentation [11], the key difference is that CC is non-parametric. As a result, the merging process requires no ad-hoc termination criteria of the kind needed in previous clustering-based segmentation methods, such as the number of clusters, the area of the patches, thresholds on the segmentation energy, etc.
The key challenge is to find an initial labeling L so that the induced graph G is simple enough on one hand, and on the other hand, the resulting labeling L is as close as possible to that obtained by running CC directly on the original graph G. The latter requires L to assign different labels to two vertices if they are likely to belong to different patches in the desired segmentation. A conservative approach would be to ask all feature edges to be included in the cut edges associated with L . Intuitively, we seek an oversegmentation that includes all input feature lines as patch boundaries.
Our method for computing the oversegmentation builds upon previous works [7,36], which extract the watershed of the geodesic distance function from the feature lines. This approach is simple and fast. Moreover, the watershed can effectively bridge the gap between nearby feature lines. However, due to the nature of geodesic distance propagation, the watershed may fail to bridge feature lines that are further apart. Such failure, in turn, results in suboptimal final labeling L after running CC on the simplified graph G . An example is given in Fig. 5: the watershed (b) fails to connect two ridge lines on a curved ridge that are separated by a long gap (a), as the close-up views highlight. As a result, the final segmentation misses a portion of the ridge (c).
To create an oversegmentation that better connects features, we replace the geodesic distance field by the anisotropic distance measured in our anisotropic metric (see previous section). Intuitively, distance propagates more slowly along more salient features in the anisotropic metric, which allows the watershed to connect far-apart feature lines as if they were near-by (see Fig. 5(d)). Compared with the geodesic watershed [7,36], computing CC on our anisotropic watershed results in not only qualitatively better boundaries (see Fig. 5(e)) but also lower cut costs (see the quantitative analysis in Section 5). The latter are due to the fact that the anisotropic distance field is propagated using precisely the edge weights w defined in the original graph G (Eq. (3)), which allows the watershed to naturally cut through graph edges with lower weights.
We now detail the oversegmentation process. To perform distance propagation and extract the watershed, we consider the same dual graph of the triangles as that used for defining the edge weights in G (see Fig. 2(b)). Each dual segment of a triangle edge e is assigned the length Similarity(e) (see previous subsection). To start distance propagation, we assign a value of zero to the dual vertex of any triangle that contains some feature edge. The value at any other dual vertex is the shortest distance on the dual graph to any zero-valued dual vertices. We then negate all distance values at the dual vertices and compute the watershed on the dual graph using the immersion algorithm from Ref. [53]. The result is a labeling of dual vertices (and in turn, their corresponding triangles) as either watershed or belonging to a particular basin. Finally, we label each triangle vertex using the majority label of the basin triangles in its 1-ring neighborhood.
Note that the oversegmentation, and in turn the simplified graph G , need only to be computed once for a given mesh and feature set. Changing the parameter α e in our graph weight definition only affects the edge weighting on G . This is the key that allows our algorithm to offer rapid feedback during interactive editing.

Interaction
Segmentation is an inherently subjective task: the criteria for a good segmentation are highly dependent on both the user and the target application. A key benefit of our CC formulation is that, by modifying the edge weights in the graph, the user has direct and local control of the segmentation result. To free the user from the tedious task of manipulating edge weights, we have developed several intuitive interactions that allow the user to change the granularity of segmentation (globally or locally) and fine-tune the segmentation boundaries. Thanks to our fast CC algorithm, most of these interactions offer interactive response time (i.e., tens of milliseconds). The only exception is feature sketching, which requires re-computing the oversegmentation.

Global refinement/coarsening
Recall that, by default, α e = 0 for all non-feature edges e and α e = α for all feature edges; α is a global constant. Increasing or decreasing α results in a finer or coarser segmentation for the entire model.

Local refinement/coarsening
The user can select a region-of-interest (ROI) and increment or decrement the parameter α e for all edges within that ROI. This results in local refinement or coarsening of the segmentation. Two such edits are illustrated on the Moai model in Fig. 6. They result in a finer segmentation on the face but a coarser one on the body.

Feature sketching
The user may sketch over the surface to indicate an intended boundary. This is useful when the desired boundary does not lie on a salient feature. For example, the "cross"-shaped sketch in Fig. 7(b) lies in a rather flat region that has no feature lines. We add all triangle edges that intersect the user sketch to the set of feature edges. These newly added feature edges are associated with a large α e (we use 1.0) to ensure their inclusion in the segmentation. For efficiency, we only update the oversegmentation within those patches in the current segmentation that contain the sketch.

Results
Here we perform both quantitative and qualitative analysis of our method. All results in this section are produced automatically without user interaction (other than specifying the global parameter α). As mentioned earlier, we use Ref. [51] to obtain the ridge and valley lines as input to our method. To compute CC on the watershed oversegmentation, we employ the lifted multi-cut method (LMP) [10] which is currently the fastest serial solver on large sparse graphs. We use their GAEC+KLj option without adding long-range edges to the graph.

Evaluation of CC solver
We first compare the performance of computing CC on the original mesh graph G versus computing it on the simplified graph G from the watershed oversegmentation. We took the hard disk model (see the bottom of Fig. 10), which contains roughly 200k triangles, and explored a range of α values. As shown in Fig. 8(top), while running LMP on the original graph can take over 10 s for some α values (red curve), running the same solver on the oversegmentation, including the time for computing the oversegmentation, takes about 1 s for all α values (cyan curve). More importantly, the time taken to only run LMP, given a pre-computed oversegmentation, is merely tens of milliseconds (magenta curve). All experiments were performed on a PC with a 3.7 GHz CPU and 16 GB of memory. We next evaluate the loss in segmentation quality incurred by our speed-up. To do so, we examine the cut cost, measured by the total weights of the cut edges (Eq. (1)), by running LMP on the original graph, on the watershed oversegmentation based on geodesic distances [7,36], and on our anisotropic watershed. As shown in Fig. 8(bottom), the cut cost of the three variants are similar across all values of α, which validates the use of our speed-up strategy. Furthermore, note that the cut cost using our anisotropic watershed is constantly lower than that using the geodesic watershed [7,36].

Sensitivity to input
Unlike previous segmentation methods that also utilize feature lines [7,8,36], our method requires no pruning of features. Instead, selection and connection of features are handled simultaneously in the CC formulation. Our method is rather insensitive to the input set of feature lines, whether it has been pruned or not (see Fig. 9(left)). The overall structure of the segmentation remains stable even after the shape is contaminated by noise, which results in a significantly different set of feature lines (see Fig. 9(right)).

Comparisons and examples
We next compare our method with other patchbased segmentations using more examples, in Fig. 10. As observed earlier in Fig. 1, primitive-fitting [5] and region-growing [6] tend to create additional boundaries in featureless regions where there is large fitting error or variation in curvature. On the other hand, prominent feature lines lying in homogeneous regions may be ignored. In contrast, our method excels at preserving the salient features while avoiding adding non-feature boundaries. Although both our method and that of Mitani and Suzuki [7] work by merging a watershed oversegmentation, ours is guided by the CC formulation which has only one parameter. On the other hand, Mitani and Suzuki use a heuristic merging process with an area-based termination criterion. Even with our best efforts to tune this termination criterion, their   [5], the region-growing method of Nieser et al. [6], the feature-guided method of Mitani and Suzuki [7], and our method, on three examples. method produces much less satisfactory results: the segmentations tend to miss important, fine features and include many weak feature lines in the patch boundaries.
Finally, we showcase a variety of examples in Fig. 11, obtained by our automatic method. Note that these results were all obtained using values of α within a small range (0.5 to 1.0). Please refer to the accompanying video in the Electronic Supplementary Material for 3D views of these results.

Limitations
Our method is suited to objects that are wellrepresented by their ridge and valley lines. It may not produce meaningful results for organic shapes,  whose semantics are primarily captured by parts instead of patches (two examples are shown in Fig. 12). For these shapes, part-based segmentations would be more suitable. Our method considers only the property of the segmentation boundary (i.e., feature saliency). It would be interesting to explore how information from the patch interior, such as regularity of curvature and fitting error of primitives, could be incorporated into our method. Another interesting question is whether global constraints, such as symmetry, can be added to our formulation to produce more pleasing results.

Conclusions
We have presented a novel method for segmenting a mesh into patches whose boundaries are aligned with salient features. By formulating the problem in terms of correlation clustering, a non-parametric graph partitioning problem, our method is simple to implement, easy to tune (with a single global parameter), efficient to interact with, and more effective than previous methods in producing feature-aligned segmentations. Open Access The articles published in this journal are distributed under the terms of the Creative Commons Attribution 4.0 International License (http:// creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
Other papers from this open access journal are available free of charge from http://www.springer.com/journal/41095. To submit a manuscript, please go to https://www. editorialmanager.com/cvmj.