Skip to content

Code for the paper: Robust Structure-based Shape Correspondence, Yanir Kleiman and Maks Ovsjanikov, CGF 2018

Notifications You must be signed in to change notification settings

hexygen/structure-aware-correspondence

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Robust Structure-based Shape Correspondence

Yanir Kleiman and Maks Ovsjanikov, CGF 2018

This code finds sturcture aware correspondences between regions on 3D shapes. The input shapes can be provided in .off format. The code allows matching each shape as triangular meshes or as point clouds. Alternatively, the shapes can be provided as a matlab struct which contains a triangular meshes or a point cloud - for more details, see ShapePairMapper.m.

To run an example, run run_example.m. This file should generate images similar to the ones given in the /results folder. It is easy to switch the input format of each shape from triangular mesh to point cloud (for more details see the code).

The main functions are detailed below (code taken from run_example.m):

% Load shapes and generate shape graphs:
[M1, M2] = ShapePairMapper(filename1, filename2, ints_range, [], [], S1_opts, S2_opts);

% Compute the segment cor   respondences of the two shape graphs:
% use_val = 0 so the interval band id is not used for the matching of segments.
R = MatchShapes(M1, M2, 0); 

% Save results with visualization:
VisualizeMatching(R, save_name);

ShapePairMapper generates a graph structure for each input shape. The graphs are generated jointly.

MatchShapes matches the generated shape graphs and outputs the matching of each vertex.

VisualizeMatching displays the results and save both the image and the underlying data as a .mat file.

Symmetry Breaking

The structure aware region correspondence outputs a symmetric matching between the regions; a group of regions on the first shape (e.g. both hands) are mapped to a group of regions on the second shape. We provide a simple heuristic to break these symmetries and output a one-to-one matching between the two shapes. To run this process run run_breaksymmetry.m.

Prerequisites and credits

This code requires MatlabBGL package which can be found here: http://dgleich.github.io/matlab-bgl/

ANN MATLAB Wrapper package by Dahua Lin is included in a subfolder (ann_mwrapper) and provided as-is.

A geodesic computation package by Danil Kirsanov (https://code.google.com/archive/p/geodesic/) is included in a subfolder (geodesics_matlab/geodesics) and provided as-is.

Some of the code was written by Maks Ovsjanikov.

The repository includes four shapes out of the MPI FAUST shapes collection (http://faust.is.tue.mpg.de/).

--Yanir, 2018

About

Code for the paper: Robust Structure-based Shape Correspondence, Yanir Kleiman and Maks Ovsjanikov, CGF 2018

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published