Euler (characteristic) profiles for image analysis.
This project was started as a prototype implementation for my bachelors thesis on the efficient computation of Euler characteristic profiles for three-channel digital images. Once the thesis has been accepted, it will also be linked to from this README.
At the moment this repository is still very much a work in progress and hence very unorganized and messy. Once I finally come up with a better (i.e. more organized) folder structure, this repository will be reorganized accordingly.
You can find the Python interface on PyPI as the euprima package.
It can be installed using
pip install euprimaFor the installation you will need a C++ compiler, cmake and pybind11.
This repository uses the eulearning repository by Hacquard and Lebovici as a Git submodule for benchmarking.
Clone the repository using the --recursive flag to pull down the benchmark files automatically:
git clone --recursive https://github.com/mazmap/euprima.gitIn case you forgot the --recursive flag, you can execute
git submodule update --init --recursiveafter cloning
For executing the tests and benchmarks in tests/ you will need various Python packages such as numpy and pandas.
To install all required packages, you can use the uv package/project manager.
All dependencies are listed in tests/pyproject.toml (including the euprima package).
For the benchmarks against the eulearning implementation by Hacquard and Lebovici, you have to clone the eulearning/ folder from their repository into tests/eulearning/ or clone it as a submodule as described above.
I am working on a documentation with clear usage examples for the functions we provide via the pybind11 interface.
For now, consult the test and benchmark files in tests/ to get an idea of how the functions are supposed to be used.