|
Volume Cartographer 2.28.0
|
Volume Cartographer is a toolkit and set of cross-platform C++ libraries for virtually unwrapping volumetric datasets. It was designed to recover text from CT scans of ancient, badly damaged manuscripts, but can be applied in many volumetric analysis applications.
New to Volume Cartographer? A great place to get started with virtual unwrapping is the tutorial put together by the Vesuvius Challenge.
You can also browse our application list for an overview of our available applications and utilities.
We provide pre-built binaries for our tools through our Homebrew Casks tap:
Our binaries are signed with a generic signature and thus do not pass macOS Gatekeeper on Apple Silicon devices without explicit approval. Since many of our tools are run from the command line, we suggest installing with Homebrew's --no-quarantine flag.
The main VC.app GUI will be installed to /Applications/ and the command line tools should be immediately available in Terminal:
NOTE: The macOS package is not currently built with OpenMP support.
We provide multi-architecture Docker images in the GitHub Container Registry. Simply pull our container and Docker will select the appropriate image for your host platform:
Tools can be launched directly using docker run:
To run the GUI tools, you must additionally set up X11 forwarding from the container.
This project is primarily developed and tested on macOS and Debian/Ubuntu systems. Though it should compile with any C++17 compiler using the Itanium ABI, this has not been tested on Windows. We are accepting contributions to explicitly support other platforms.
Required
Optional
AngleBasedFlattening with the ConjugateGradient solver is supported.std::filesystem. If it is not found, then Boost Filesystem is required. This behavior can be controlled with the VC_USE_BOOSTFS CMake flag.Homebrew can be used to install all of Volume Cartographer's dependencies. We provide a Brewfile to simplify this process.
This project is built and installed using the CMake build system. If you have already installed the dependencies listed above, compilation should be as simple as:
Many volume-cartographer libraries can be built in parallel, and compilation times will be improved by running cmake --build build/ -j4. Alternatively, you can use CMake to generate Ninja build system files:
To install the compiled software and libraries to the CMAKE_INSTALL_PREFIX, run the install target:
To assist with installing dependencies, we have created the vc-deps project. While this project can be used on its own to install volume-cartographer dependencies to the system, it is also available as a git submodule within volume-cartographer. Note that vc-deps does not install CMake or Qt.
To build and link against the in-source vc-deps libraries, run the following:
It might be necessary to point CMake to your Qt installation. For example:
OpenMP support is automatically enabled when detected on the system. Often OpenMP is provided by your compiler, and you don't need to do anything specific for CMake to find it. If your compiler provides OpenMP, please see the compiler's documentation for how to enable OpenMP. Support in this project can be explicitly disabled by providing CMake with the -DVC_USE_OPENMP=OFF flag.
On macOS, the compiler does not provide OpenMP, and there are many suggestions for how to enable it by installing alternative compilers. If you are simply building for local development, we recommend the following method which uses the OpenMP libraries provided by Homebrew:
This project is instrumented with unit tests using the Google Test framework. To enable test compilation, set the VC_BUILD_TESTS flag to on:
Tests can then be run using CTest or by running the test target:
Visit our API documentation here.
Library documentation is built using Doxygen and can be enabled/disabled by setting the VC_BUILD_DOCS flag. This requires Doxygen and optionally Graphviz. This option is unavailable if Doxygen is not found. Documentation will be installed with the install target if the VC_INSTALL_DOCS flag is enabled.
We currently maintain limited Python binding support through pybind11. They are a work-in-progress and should not be used in production code.
Bindings can be built and installed by setting the VC_BUILD_PYTHON_BINDINGS and VC_INSTALL_PYTHON_BINDINGS flags:
To use these bindings in Python after installation, import from the volcart package:
NOTE: Python modules are built as shared libraries, regardless of the BUILD_SHARED_LIBS flag set by this project. This can cause problems if the Volume Cartographer dependencies are not built as shared libraries. Either install the shared versions of these libraries (preferred) or compile static libraries with position independent code (PIC).
If using vc-deps to build the dependency libraries, set the appropriate CMake flags:
See CONTRIBUTING.
Except where otherwise indicated, the software in this repository is licensed under the [GNU General Public License v3.0](LICENSE). This project is free software: you can redistribute it and/or modify it under the terms of the GPLv3 or (at your option) any later version.
This project incorporates software from many excellent external libraries and projects. Please see [NOTICE](NOTICE) for more information about the licensing terms of these projects.
Volume Cartographer and the project logo and banner graphics are trademarks of EduceLab.
If you use Volume Cartographer in your research, please cite this repository in your publication using our Zenodo record. For more information about the concepts of virtual unwrapping, please see the following publications: