Shape Analysis #4: Triangle Mesh

7 months ago
geometrylearningcomputer-graphics

Polygonal Representations

  1. Motivation
  2. Mesh
  3. Mesh Denoising
  4. Mesh Simplification

Motivation

  • Meshes nicely represent shapes
    • in medicine, CAD, GIS, entertainment
    • and engineering & simulation
  • Old concept:
    • planar triangulation & tessellation (Voronoi, Delaunay, etc...)
    • mixes topology & geometry (connectivity vs. embedding in space)

Also, this is a very special type of graph...

Mesh: nomenclature

Definition:

A set of vertices, straight edges and faces (triangle, or even polygons) defining a piecewise-flat surface embedded in 3D:

V={1,2,3,… }E={(i,j),(k,l),… }F={(i,j,k),(j,i,l),… }\begin{align*} V &= \{1,2,3,\dots\}\\ E &= \{(i,j), (k, l), \dots\}\\ F &= \{(i,j,k), (j,i,l), \dots\} \end{align*}

Simplicial complex:

  • Topological realization: identify VV with unit vector in RN\mathbb{R}^N:
∣K∣=⋃σ∈K∣σ∣|K| = \bigcup_{\sigma\in K} |\sigma|

The term on RHS is convexhull of vertex images

Closure, Star and Link:

Subcomplex Cl L={ρ∣ρ⪯σ,σ∈L}Incidence St L={ρ∣σ⪯ρ,σ∈L}1-ring Lk L=Cl St L−St(Cl L−∅)\begin{alignat*}{3} &\text{Subcomplex } &&\quad \text{Cl }L = \{\rho | \rho \preceq \sigma, \sigma\in L\}\\ &\text{Incidence } &&\quad \text{St }L = \{\rho | \sigma \preceq \rho, \sigma\in L\}\\ &\text{1-ring } &&\quad \text{Lk }L = \text{Cl St }L - \text{St}(\text{Cl }L - \empty) \end{alignat*}

Topological Structure

  • Every point has an open, (half-)disk-like subset surrounding it
  • the mesh is 2-manifold iff ∣St v∣∼R2|\text{St }v|\sim\mathbb{R}^2 (homeomorphic to plane)
  • boundary: half-plane this time



Discrete Differential Geometry

Discrete notion of curvature(s) quite obvious

  • mean curvature HH at edges: dihedral angle
  • Gaussian curvature κ\kappa at vertices:
κ=2π−∑i∈St vθi\kappa = 2\pi - \sum_{i\in\text{St }v}\theta_i

Still, we need to be careful (like sometimes we should "normalize" it by dividing by something). The "something" that is being ubiquitous today is the Voronoi area

AVoronoi=18∑j∈N(i)(cot⁡αij+cot⁡βij)∥xi−xj∥2\mathcal{A}_{Voronoi} = \frac{1}{8}\sum_{j\in N(i)}(\cot\alpha_{ij} + \cot\beta_{ij})\|x_i-x_j\|^2

Topological Invariant of Surfaces

Euler Characteristic: X=V−E+F\mathcal{X} = V - E + F

  • VV: number of vertices
  • EE: number of edges
  • FF: number of faces between edges

Euler formula: V−E+F=2(c−g)+bV-E+F=2(c-g)+b

  • cc: number of connected components
  • gg: number of genus (holes) in surfaces
  • bb: number of boundary edges

The later is true for arbitrary complexes (this can be proved by induction)

Recall about turning number theorem: Gauss-Bonnet

For a boundary-less surface, we get:

∫Sκds=2πX\int_S\kappa ds = 2\pi\mathcal{X}

And with boundary:

∫SκdA+∮∂Sκgds=2πX\int_S\kappa dA + \oint_{\partial S} \kappa_g ds = 2\pi\mathcal{X}

Mesh Denoising

How to remove noise from surfaces???

By using the non-linear diffusion:

Δx=−κn\Delta\textbf{x} = -\kappa\textbf{n}

This brings us to Laplace-Beltrami operator;

−κn=ΔBx-\kappa\textbf{n} = \Delta_B\textbf{x}
  • gradient of triangle area w.r.t. top vertex
  • explicit formula in a convenient form

Not so surprising: LBO is an intrinsic Laplacian:

  • extends the usual stencil to arbitrary sampling for flat domains…
    • second order derivative (trace of Hessian) of functions
  • and treats piecewise-linear non-flat domains seamlessly
    • proper treatment requires finite-element analysis...
    • but this only changes the “mass” matrix
      • the particular form we used is called mass lumping

I know this part is just a bunch of text, I will comback here later to edit this (or I may never come back :v)

Mesh Simplification

  • Large mesh is expensive
  • Too simple mesh cause information loss

→\to should think of a mesh that “best bang for your buck”.

Problem formulation

  • geometric & combinatorical optimization
    • full problem too hard in practice
    • a few existing slow solutions
  • alternate:
    • vertex optimization
    • combinatorical optimization
    • or both, interleaved!

History:

  • Functional approximation [y=f(x)][y=f(x)]
  • PWL curve approximation
  • Height field (terrain) triagulation

Existing Approaches:

  • Manual simplification: too complex, require users with expertise
  • Automatic methods:
    • vertex clustering
    • vertex decimation
    • iterative contraction

Vertex Clustering:

  • Partition space into cells
  • Merge all vertices within the same cell
  • Triangles can degenerate



Vertex Decimation:

  • Starting with original model, iteratively
    • rank vertices according to importance
    • remove unimportant vertex, retriangulate
  • Used to be a fairly common technique

Iterative Contraction:

  • Contraction operates on set of vertices (faces, edges are also used)
  • Starting with original model, iteratively
    • rank all edges with some cost metric
    • contract minimum cost edge
    • update edge costs

Cost metrics

To evaluate vertices, or edges based on importance, or cost, we must have something to measure those value.

  • Some heuristics ok (e.g. edge length, dihedral angle...)
  • Sample distances to original surface better (projection to closest point)
  • Alternative characterizations of error
    • quadratic error metrics
    • local volume preservation
    • much faster

Comments (0)

No comments yet. Be the first to share your thoughts!