launch runThisBatch.bat as it performs three consecutive steps explained below in one click




ShapeCorresponderSymFlip_x64.exe <sourceID> <targetID> <meshFormat> <symFlipStep> <trackTillLevel> <levelToInterpolate>\n\n";
<sourceID>: ID of source mesh
<targetID>: ID of target mesh
<meshFormat>: input mesh file in 1: obj, 2: off, 3: ply format
<symFlipStep>: 1 to create top10 initial mappings to be tracked until level <trackTillLevel>
	       2 to track top10 mappings to learn the min-cost mapping at level <trackTillLevel>
	       3 to start w/ the advertised mapping and go until dense correspondence achieved**
	       7 to evaluate the computed/stored correspondence [not in use]
	       77 to interpolate coarse correspondence into full dense map
<trackTillLevel>: top10 maps will be tracked until this level (inclusive), which is typically 4
<levelToInterpolate>: level on which interpolation is performed towards dense matching [active only if symFlipStep = 4]
**<maxLevel>: proceed until maxLevel in [0,13], i.e., an intermediate level; use other numbers for automatic maxLevel leading to the full dense map [active only if symFlipStep = 3]




:::::::: step 1 ::::::::
//prepare 10 good initial mappings to be tracked until level $trackTillLevel$, which is typically 4

//example # 1
ShapeCorresponderSymFlip_x64.exe 60 70 3 1 4 -1 -1
	output\60-70 level0.dat created (redundant at this time)
	output\SymFlipCare\symHeal60-70_8x8.dat created (gives top10 below, unnecessary for the next step)
	output\SymFlipCare\symHeal60-70_8x8top10.dat (crucial for the next step) 

//example # 2
ShapeCorresponderSymFlip_x64.exe 13 55 2 1 4 -1 -1
	output\13-55 level0.dat created (redundant at this time)
	output\SymFlipCare\symHeal13-55_8x8.dat created (gives top10 below, unnecessary for the next step)
	output\SymFlipCare\symHeal13-55_8x8top10.dat (crucial for the next step) 


:::::::: step 2 ::::::::
//track 10 good initial mappings until level $trackTillLevel$; so, 10 runs of C2F matching until level $trackTillLevel$

//example # 1
ShapeCorresponderSymFlip_x64.exe 60 70 3 2 4 -1 -1
	output\SymFlipCare\symHeal60-70_8x8out track levelX.dat created (crucial)

//example # 2
ShapeCorresponderSymFlip_x64.exe 13 55 2 2 4 -1 -1
	output\SymFlipCare\symHeal13-55_8x8out track levelX.dat created (crucial)


:::::::: step 3 ::::::::
//start level0 version of the advertised mapping from step 2 and go until full dense map reached

//example # 1
ShapeCorresponderSymFlip_x64.exe 60 70 3 3 4 -1 -1
	output\60-70 level0.dat created
	output\60-70 level1.dat created
	.
	.
	output\60-70 level10.dat created (dense map achieved at this level)

//example # 2
ShapeCorresponderSymFlip_x64.exe 13 55 2 3 4 -1 -1
	output\13-55 level0.dat created
	output\13-55 level1.dat created
	.
	.
	output\13-55 level10.dat created (dense map achieved at this level)




execution times for 12.5K SCAPE pair on a 2.53GHz PC:
:::::::: step 1 ::::::::	2 secs
:::::::: step 2 :::::::: 	102 secs
:::::::: step 3 ::::::::	625 secs actual C2F matching algo execution time*, i.e. from level 0 to level 9
for 52K david vs. 45K victoria pair (a high-resolution input from TOSCA):
:::::::: step 1 ::::::::	9 secs
:::::::: step 2 :::::::: 	114 secs
:::::::: step 3 ::::::::	2936 secs actual C2F matching algo execution time*, i.e. from level 0 to level 10

* for C2F matching algo**, it is enough to store geodesic distances from a sample vertex b to all other samples within the patch of b, not all V mesh vertices. Although designed this way algorithmically, I implemented geodesic distances array (dSpanning[][]) in counting sort manner, i.e., array allocated for all mesh vertices, to simplify coding. Keeping this many entries instead of ~5 per base vertex makes the memory expand quickly, also takes O(V^2 lgV) time instead of the proposed O(VlgV), making this current basic implementation restricted to the inputs of size 30K at most, on a 18GB RAM machine. You can always replace dSpanning[][] with a hash-based structure to welcome the large inputs and reach O(VlgV) efficiency, as this is just an implementation detail.
** Y. Sahillioglu, Y. Yemez, Coarse-to-Fine Combinatorial Matching for Dense Isometric Shape Correspondence, Computer Graphics Forum (SGP'11), Vol. 30, No. 5, pp. 1461-1470, 2011.


:::::::: irrelevant step :::::::: [not in use; play w/ the code to enable it if my evaluation fits to yours]
//evaluate the quality of the computed corrsepondence of level X later (make sure computeCorrespondenceErrorC2F() call is active during compilation):
ShapeCorresponderSymFlip_x64.exe 13 55 2 7 4 0 0 [not in use]

:::::::: another irrelevant step ::::::::
//interpolate the map at given level (6th parameter) to a full dense map as described in Blended Intrinsic Maps

//example # 1
ShapeCorresponderSymFlip_x64.exe 60 70 3 77 -1 3 -1
	95 secs for 12.5K SCAPE vs. 12.5K SCAPE pair

//example # 2
ShapeCorresponderSymFlip_x64.exe 13 55 2 77 -1 3 -1
	936 secs for 52K david vs. 45K victoria pair



--ysf
