Documentation - CMVS


The following installation procedure is primarily for Linux. Major modifications may be necessary for Windows and some other platforms.
In some system, you may need extract "#include" statements. For example, you may want to add "#include " in base/cmvs/, and "#include " in

Command specifications


Usage: ./cmvs prefix maximage[=100] CPU[=4]

Example: If you want to specify maximage=70 and CPU=6 with the data directory located at ./pmvs, try the following command
./cmvs ./pmvs/ 70 6

You should choose maximage based on the amount of memory in your machine.
CPU should be the number of (virtual) CPUs or cores in your machine.
If you want more control of the program, look into the comments inside program/main/


Usage: ./genOption prefix level[=1] csize[=2] threshold[=0.7] wsize[=7] minImageNum[=3] CPU[=8]

Parameters are for PMVS2 option files.
Please refer to PMVS2 documentation for the definitions:

Output file formats

cmvs generates four types of outputs.
genOption reads in ske.dat and generates two types of outputs.

Example usage

The package contains kermit data (from Bundler), whose files are stored in three directories. Three directories correspond to three different stages of the reconstruction pipeline (Bundler, CMVS, and PMVS2).
Starting from kermit-after-bundler, if you run cmvs and genOption, you should get results similar to those in kermit-after-bundler-cmvs. If you run pmvs2 after that, you should get results similar to those in kermit-after-bundler-cmvs-pmvs.

kermit is a small dataset, and only one view cluster is found by CMVS. The following dataset (hall) is relatively large and more interesting. Similarly to kermit, you should see three directories. Starting from hall-after-bundler and using the folloiwng commands, you should get similar results.
In running cmvs, I specified a parameter 20 to enforce the size of each view cluster to be at most 20. You should choose this parameter based on the amount of memory your machine has. Four view clusters are found and contains four pmvs2 commands. If you have more than one machine, you can, for example, use four computers to run four jobs simultaneously (four times less waiting time!)

Note on dependent libraries

CMVS depends on several libraries as PMVS2 does (e.g., blas and lapack). CMVS additionally requires Graclus and Stann. While you need to download and install Graclus (version 1.2) by yourself, CMVS contains Stann at program/base/stann with some very minor modifications to make the compilation easy.

Go back to the main page