Mean Curvature Skeletons (i.e. curve-skeleton extraction via mean curvature flow)
C++ QMake C
Switch branches/tags
Nothing to show
Clone or download

README.md

Mean Curvature Skeletons

(Originaly exported from https://code.google.com/p/starlab-mcfskel)

The source & compiled binaries from the paper "Mean Curvature Skeletons". The paper is available in the download section. In the downloads you will also find pre-compiled binaries for Window, OSX and Ubuntu.

@article{taglia_sgp12,
title={Mean Curvature Skeletons},
author={Andrea Tagliasacchi and Ibraheem Alhashim and Matt Olson and Hao Zhang},
booktitle={Computer Graphics Forum (Proc. of the Symposium on Geometry Processing)},
year={2012}}

Downloads

Checking out the source code

First checkout and compile the 'Starlab' framework:

git clone https://github.com/OpenGP/starlab.git

Then check out this repository:

git clone https://github.com/ataiya/starlab-mcfskel.git

Then open the file mcfskel.pro in QtCreator and perform qmake & build

This is a set of plugins for the starlab environment specific to this project. The set contains:

voromat                     generates a medial manifold by projecting a mesh onto the voronoi poles
mcfskel                     mean curvature skeletonization (with medial guidance)
surfacemesh_to_skeleton     a simple plugin to convert contracted meshes into curve-skeletons 
surfacemesh_io_obj          I/O of obj files containing medial information
skeleton_resample           finely resamples a curve-skeleton (used in comparisons)
skeleton_compare            compares euclidean distance between two skeletons

Usage

A typical usage is to load the mesh, apply a re-meshing operation, apply the voromat plugin without the embedding option, then start the skeletonization process (MCF steps). The resulting mesh can be collapsed into simple curves by applying the short_ecollapse plugin. The result can be saved to 'cg' file format.

Gallery

Example Video (Click to play)

Example

Google Summer of Code

Xiang Gao has re-implemented this project in CGAL while participating in the CGAL Google Summer of Code 2013