Surface Correspondence - Documentation

← Home

Compiling the Code

Step 1: Verify that the following libraries are installed: OpenGL, GLUT, LAPACK and BLAS

Step 2: Download the sourcecode (3Mb), and compile using 'make'.

Step 3: bin/Distributable contains scripts and binaries (see instructions). Type './RecompileAll' to recompile binaries.


This sourcecode distribution was compiled on MacOS X 10.5.8, and is known to compile on Linux (you might need to change some makefiles in ./external/GAPS).

Code structure

Note that this is a research code, thus it is NOT clean. There are classes that: have never been used, cannot be used due to recent changes, have weird inter-dependencies, etc...

Here is a brief description of several important classes:

        AnalysisWindow and GLUTSurfaceWindow: visualization and user interface classes. Everything that is GLUT-independent is implemented in AnalysisWindow, but all GUI-related things go to GLUTSurfaceWindow.

        AnalysisPipeline and PipelineExploreConfmaps: inter-surface mapping pipeline has the following steps: 1) loading surface (possibly flattening), 2) loading/precomputing distances on the surface, 3) loading/precomputing features (i.e. feature-values, some signals over the surface), 4) loading/precomputing samples, 5) loading/precomputing maps, testing the final map on the benchmark. Note that the final version of that Pipeline used for Blended Intrinsic Maps is implemented in PipelineExploreConfmapsOneStepSpectral.cpp.

        ../BasicRoutines/ParamParser: parameter file is loaded in the pipeline. It specifies almost all parameters (e.g. which samples to use to generate conformal maps, how to measure distortion, etc...) It also points to another param file which describes rendering.

       SurfaceMap: defines a map between two surfaces. I mostly use the following: MapMultiConformal - Blended Intrinsic Map, MapConformal - a conformal map defined by 3 correspondences, MapCoarse - coarse map between a discrete set of feature points, MapGeoFeature - my implementation of GMDS, and MapScoredCollection - a collection of maps.

       SurfaceMapConfidence: defines a confidence/distortion of a map. MapConfidenceFaceArea - area distortion, MapConfidenceMultiConf - combination of confidences for MapMultiConformal, MapConfidenceCompareToTruth - ground truth confidence.

       SurfaceMapSimilarity and MapSimilarityDistance: similarity between maps (as described in Blended Intrinsic Maps paper).        SampledSurface and SurfaceMidEdgeConf: surface, and surface + its mid-edge flattening.

       SurfaceFeature: feature values on a surface (defined at every point). FeatureAGD - average geodesic distance, FeatureCurvature - curvature.

       SurfaceSample and SurfaceSampleSet: samples on surfaces.

       SurfaceDistance: distance metrics. DistanceLazySubsets - precompute geodesic distances from a subset of points to all other vertices, DistanceOnTheFly - compute geodesic distances on the fly.