Skip to main content

Mesh Smoothing and Variational Subdivision

  • Chapter
Guide to Computational Geometry Processing

Abstract

In this chapter, we cover how meshes are smoothed. This is an important topic in geometry processing since acquired meshes are always subject to noise. The basic principles of signal processing are discussed. Then we present the principles behind Laplacian smoothing and Taubin smoothing, which is based on Laplacian smoothing but suffers less from shrinkage. However, Taubin smoothing causes distortion if the mesh is not highly regular in its structure. Mean curvature flow is much better in this regard.

Using spectral smoothing, it is possible to create filters that more accurately manipulate features of a certain scale. Spectral smoothing works by observing that the Laplace–Beltrami operator, which is central to many smoothing schemes, can be written as a linear operator whose eigenvectors form a function space upon which the vertex positions can be projected—very much like the Fourier basis on a regular grid.

Smoothing generally smooths sharp edges and corners. Fortunately, there are several schemes which remove noise while preserving features such as corners and edges.

Finally, we can see smoothing as an energy minimization and the chapter concludes with a discussion of variational subdivision which is based on repeated refinement and smoothing of meshes.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 49.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 64.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Pronounced “Lambda-Mu”, although generally referred to as Taubin smoothing.

References

  1. Desbrun, M., Meyer, M., Schröder, P., Barr, A.H.: Implicit fairing of irregular meshes using diffusion and curvature flow. In: SIGGRAPH’99: Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques, pp. 317–324. ACM Press, New York (1999). doi:10.1145/311535.311576

    Chapter  Google Scholar 

  2. Taubin, G.: A signal processing approach to fair surface design. In: ACM SIGGRAPH’95 Proceedings (1995)

    Google Scholar 

  3. Pinkall, U., Polthier, K.: Computing discrete minimal surfaces and their conjugates. Exp. Math. 2(1), 15–36 (1993)

    Article  MathSciNet  MATH  Google Scholar 

  4. Vallet, B., Lévy, B.: Spectral geometry processing with manifold harmonics. Comput. Graph. Forum 27(2), 251–260 (2008)

    Article  Google Scholar 

  5. Meyer, M., Desbrun, M., Schröder, P., Barr, A.H.: Discrete differential-geometry operators for triangulated 2-manifolds. In: Hege, H.-C., Polthier, K. (eds.) Visualization and Mathematics III, pp. 35–57. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  6. Levy, B., Zhang, R.H.: Spectral geometry processing. In: ACM SIGGRAPH Course Notes (2010)

    Google Scholar 

  7. Shen, Y., Barner, K.E.: Fuzzy vector median-based surface smoothing. IEEE Trans. Vis. Comput. Graph. 10(3), 252–265 (2004). doi:10.1109/TVCG.2004.1272725

    Article  Google Scholar 

  8. Zheng, Y., Fu, H., Au, O.K.-C., Tai, C.-L.: Bilateral normal filtering for mesh denoising. IEEE Trans. Vis. Comput. Graph. 17(10), 1521–1530 (2011). doi:10.1109/TVCG.2010.264

    Article  Google Scholar 

  9. Kobbelt, L.P.: Discrete fairing and variational subdivision for freeform surface design. Vis. Comput. 16, 142–158 (2000)

    Article  Google Scholar 

  10. Gelfand, I.M., Fomin, S.V.: Calculus of Variations. Dover, New York (2000)

    MATH  Google Scholar 

  11. Golub, G.H., van Loan, C.F.: Matrix Computations, 3rd edn. John Hopkins, Baltimore (1996)

    MATH  Google Scholar 

  12. Kobbelt, L., Campagna, S., Vorsatz, J., Seidel, H.-P.: Interactive multi-resolution modeling on arbitrary meshes. In: ACM SIGGRAPH’98 Proceedings, pp. 105–114 (1998)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jakob Andreas Bærentzen .

Appendix: A Laplace Operator for a Triangle Mesh

Appendix: A Laplace Operator for a Triangle Mesh

There are a number of techniques for finding a Δ operator on a triangle mesh. In many cases, we prefer a discrete Laplace–Beltrami operator, but the umbrella operator [2] has also been used extensively in this chapter and will be derived in the following.

To start with, we consider how to find the value of Δ locally at a single vertex. Notice that in the following, we will move from a scalar function f:ℝ2→ℝ to a vector function f:ℝ2→ℝ3. This simply means that we minimize three functions f x, f y, and f z independently, where \(\mathbf {f}(u,v) = [f^{x}(u,v) \: f^{y}(u,v) \: f^{z}(u,v) ]^{T}\).

In the above, we assumed a parametric surface representation. However, this parametric representation need not be global. All we need is a local function f which approximates the surface in the neighborhood of that vertex. Given such a function f, we can simply compute its

$$ \Delta \mathbf {f} = \mathbf {f}_{uu} + \mathbf {f}_{vv} , $$

and consider that to be the Laplacian of the mesh at the vertex in question. Typically, we find a local surface approximation by least squares fitting a second order polynomial surface to the 1-ring neighborhood of a vertex

$$ \mathbf {f}(u,v) = \mathbf {f}_0 + u \mathbf {f_u} + v \mathbf {f_v} + \frac{u^2}{2}\mathbf {f_{uu}} + uv \mathbf {f_{uv}} + \frac{v^2}{2} \mathbf {f_{vv}} . $$
(9.21)

Note that the coefficient f corresponds precisely to the surface point f(0,0) and the other coefficients correspond to the first and second derivatives of the surface at (u,v)=(0,0).

In order to find a suitable function, f, at a given mesh vertex we must assign a pair of parameter coordinates (u,v) to each vertex. Let the centre vertex have parameter coordinates (0,0) and let the other (u,v) coordinates be numbered from 1 to n where n is the valency (number of neighbors) of the vertex. This is illustrated in Fig. 9.8.

Fig. 9.8
figure 8

This figure illustrates the 1-ring of a vertex and shows the parameter coordinates for the centre vertex and its neighbors

Let j be the index of a vertex in the 1-ring. We reserve the index 0 for the centre vertex, and the neighbors are numbered from 1 to n. Let p j be the 3D space position of vertex j. Since (u,v)=(0,0) has been assigned to the centre vertex,

$$ \mathbf {f}(0,0) = \mathbf {f}_0 = \mathbf {p}_0 . $$

We now subtract the equation above from (9.21) for all the neighboring vertices. We can then write the resulting system of equations (n equations, one for each neighboring vertex) in matrix form UF=P where U is the matrix of parameter values, F is the vector of coefficients for the polynomial surface, and P is the vector of geometric positions:

$$ \scriptscriptstyle \left [ \begin{array}{c@{\quad}c@{\quad}c@{\quad}c@{\quad}c} .&.&.&.&.\\ .&.&.&.&.\\ u_j & v_j & \frac{u_j^2}{2} & u_j v_j & \frac{v_j^2}{2}\\ .&.&.&.&.\\ .&.&.&.&.\\ \end{array} \right ] \left [ \begin{array}{c} \mathbf {f_u}\\ \mathbf {f_v}\\ \mathbf {f_{uu}}\\ \mathbf {f_{uv}}\\ \mathbf {f_{vv}}\\ \end{array} \right ] = \left [ \begin{array}{c} .\\ .\\ \mathbf {p_j} - \mathbf {p_0}\\ .\\ .\\ \end{array} \right ] . $$
(9.22)

Note that each entry in F and P is really a 3D vector. This is not important for the analysis, since we can consider each component separately.

Clearly, the matrix above has a solution only in the case where n=5 since the matrix U is not square otherwise. We will assume that we have at least five neighbors. In this case, we can solve (9.22) in the least squares sense

$$ \mathbf {F} = \mathbf {D} \mathbf {P} = \bigl(\bigl(\mathbf {U}^T \mathbf {U} \bigr)^{-1} \mathbf {U}^T\bigr) \mathbf {P} . $$
(9.23)

To sum up, F is the vector of coefficients to our polynomial surface, and the third and fifth entry of F correspond to the second order derivatives of f(u,v). We can compute the Laplacian simply by

$$ \Delta \mathbf {f} = \mathbf {F}_{3} + \mathbf {F}_5 = (\mathbf {D}_{3\_} + \mathbf {D}_{5\_}) \mathbf {P} . $$
(9.24)

Till now, we have ignored the fact that we do not really have a parametrization. Now we need to find a parametrization since the U and, hence, D requires it. We now parametrize in a way that is completely independent of geometry. A very simple method is to just distribute the parameter coordinates evenly on the unit circle as shown in Fig. 9.9.

Fig. 9.9
figure 9

This figure illustrates the 1-ring of a vertex and shows the parameter coordinates for the centre vertex and its neighbors. There are eight neighbors, and hence the angle between them is 2π/8

With this distribution, we can precompute parameter coordinates for a particular valence as follows:

$$ (u_j,v_j) = \bigl(\cos(2\pi j/n), \sin(2\pi j/n)\bigr). $$

If we plug the above values into the U matrix and compute (9.24), we obtain an unexpectedly simple result. It turns out that

$$ \mathbf {D}_{3\_} + \mathbf {D}_{5\_} = [ 4/n \quad 4/n \quad \ldots\quad 4/n ] , $$

(apparently) for all valencies greater than 5. For n<5 the system is singular. This result leads to the following very simple formula:

$$ \Delta \mathbf {f} = \frac{4}{n} \sum_{j=1}^{n} (\mathbf {p}_j - \mathbf {p}_0) . $$
(9.25)

In other words, the Laplacian is simply the average of the vectors from the centre vertex to its neighbors times 4. This factor is of no importance since we want to solve Δf=0.

Let \(\mathcal {N}_{i}\) be the set of indices of neighbors to the vertex of index i and let \(n=|\mathcal {N}_{i}|\) be the valency of vertex i. Dropping the 4 factor, we can now write a discrete triangle mesh Laplacian, \(\mathcal {L}\), operating on a vertex p i

$$\begin{array}{*{20}c} {\mathcal {L}({\mathbf p}_i )} & { = \frac{1}{{|\mathcal {N}_i |}}\sum\limits_{{\mathbf p}_j \in \mathcal {N}_i } {({\mathbf p}_j - {\mathbf p}_i )} } \\ {} & {\left( {\frac{1}{{|\mathcal {N}_i |}}\sum\limits_{{\mathbf p}_j \in \mathcal {N}_i } {{\mathbf p}_j } } \right) - {\mathbf p}_i .} \\ \end{array}$$
(9.26)

This operator is usually referred to as the umbrella operator, and we can express it as a matrix (applying the Laplacian to all vertices at once).

$$ \mathbf {L} \mathbf {P} = -\mathbf {K} \mathbf {P} , $$
(9.27)

where P is the vector of vertex positions, I is the identity, K=IW, W ij is \(1/|\mathcal {N}_{i}|\) if vertex i and j are connected. This Laplacian is also used for vertices of valence less than 5, but note that these are rare—unless the mesh is very irregular.

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag London

About this chapter

Cite this chapter

Bærentzen, J.A., Gravesen, J., Anton, F., Aanæs, H. (2012). Mesh Smoothing and Variational Subdivision. In: Guide to Computational Geometry Processing. Springer, London. https://doi.org/10.1007/978-1-4471-4075-7_9

Download citation

  • DOI: https://doi.org/10.1007/978-1-4471-4075-7_9

  • Publisher Name: Springer, London

  • Print ISBN: 978-1-4471-4074-0

  • Online ISBN: 978-1-4471-4075-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics