zsig 1.0.0

zsig Library

Introduction

The Zernike-based Vertex Signatures (ZSIG) library is a compound of C++-source codes to compute vertex signatures over a given meshed surface. The signatures can be used to propagate computations from one part of the mesh to many other similar regions. Each vertex signature is a set of coordinates embedding the corresponding vertex in the feature space. This space has the interesting property of grouping similar vertices, that is similarity-based processing is reduced to searching nearest neighbours in this space.

The ZSIG library is based on the paper: "A Robust and Rotationally Invariant Local Surface Descriptor with Applications to Non-local Mesh Processing" available in:

DOI: 10.1016/j.gmod.2011.05.002

Library Structure

The zsig library is built in functions and classes making available a simple signature-mesh datastructure in form of a class named: zsig::SignatureMeshT. The Zernike-polynomials computation is encoded in three basic functions, one class, and one advanced function. The three basic functions (fac, compute_R and compute_V) are devoted to compute the radial and Zernike polynomial. The zsig::ZernikePolynomialsBasisT class provides methods to project, reconstruct and compare a given function. The compute_basis advanced function computes the orthogonal basis of the Zernike polynomials.

In the zsig library the signature is defined as a scalar-field descriptor in form of a matrix stored in a class named: zsig::SignatureT. This class is essentially a wrapper for a simple 2D matrix of values. Following the idea of simplicity, the zsig::SignatureMeshT class provides methods for input/output operations, methods to build auxiliary mesh information and compute additional surface information, and other methods to set and get mesh data. On top of the zsig::SignatureT and zsig::SignatureMeshT classes, the compute_signature advanced function computes a vertex signature based on the tangent plane at that vertex and a ray-shooting algorithm. This algorithm computes a heightmap image for a given vertex enconding the surface neighborhood as a signature.

Finally, the zsig library provides three advanced functions to compute the set of signatures of a given mesh. The compute_sig function computes the heightmap-based signatures for all mesh vertices. The compute_zsig function computes the Zernike-based signatures for all mesh vertices. And the compute_gwzsig function computes the Gaussian-weighted Zernike-based signatures for all mesh vertices.

For more information on each class and function see the individual documentation pages and the respective examples.

How to use

The zsig library is a template-based library built entirely on each corresponding header .hh file. Therefore to use the library just include the desired header file.

How to get it

The source code of the zsig library is available under the GNU General Public License version 3, refer to the COPYING file for more details.

The zsig library can be downloaded following the link:

Google Code: code.google.com/p/zsig

Alternatively, a stable (but not latest) release can be downloaded from the following link:

http://www.impa.br/~andmax/libs/zsig-1.0.0.tgz

Note that this tarball file may be behind the source code version on the svn repository on Google code.

Acknowledgments

This library was developed during the doctorate internship research of Andre Maximo at GVIL under the supervision of Professor Amitabh Varshney. We acknowledge the grant to the student (scholarship named sandwich doctorate) provided by Brazilian research agency CNPq (National Counsel of Technological and Scientific Development).

Credits

The people involved in the project of this library are listed below:

Main Code:

Andre Maximo

Project Supervisor:

Amitabh Varshney
 All Classes Files Functions Variables Typedefs Friends