The easiest way to install this package is via conda (right now only available withour gurobi or cplex ):
conda install -c abailoni nifty
git clone https://github.com/abailoni/nifty.git
git submodule init
git submodule update
conda create -n nifty -c conda-forge xtensor-python boost-cpp scikit-image h5py vigra
cmake . -DCMAKE_PREFIX_PATH=/path/to/nifty/env -DBUILD_NIFTY_PYTHON=ON
(add links to gurobi or cplex if needed)make
A nifty library for 2D and 3D image segmentation, graph based segmentation an opt. This library provided building blocks for segmentation algorithms and complex segmentation pipelines. The core is implemented in C++ but the suggested language to use this library from is python.
A very tentative documentation of the nifty python module.
-
Multicut:
- Multicut-Ilp (Kappes et al. 2011)
- Multicut-Ilp-Cplex
- Multicut-Ilp-Gurobi
- Multicut-Ilp-Glpk
- Decomposing Solver (Alush and Goldberger 2012)
- Cut Glue & Cut (Beier et al 2014)
- Cut Glue & Cut - QPBO
- Greedy Additive Clustering / Energy based Hierarchical Clustering (Beier et al. 2015)
- Fusion Moves for Correlation clustering (Beier et al. 2015)
- Perturbed Random Seed Watershed Proposal Generator
- Perturbed Greedy Additive Clustering Proposal Generator
- Kernighan-Lin Algorithm with Joins (Keuper et al 2015)
- Message Passing for the Minimum Cost Multicut Problem (Swoboda 2016)
- Multicut-Ilp (Kappes et al. 2011)
-
Lifted Multicut: (Andres et al. 2015, Keuper et al 2015)
- Kernighan-Lin Algorithm with Joins (Keuper et al 2015)
- Greedy Additive Clustering (Keuper et al 2015)
- Lifted-Multicut-Ilp (does not scale to meaningful problems, just for verification)
- Lifted-Multicut-Ilp-Cplex
- Lifted-Multicut-Ilp-Gurobi
- Lifted-Multicut-Ilp-Glpk
- Fusion Moves for Lifted Multicuts (Beier et al. 2016)
- Perturbed Random Seed Watershed Proposal Generator
- Perturbed Greedy Additive Clustering Proposal Generator
- Message Passing for the Minimum Cost Multicut Problem (Swoboda 2016)
-
Mincut/Maxcut:
- QPBO
-
Agglomerative Clustering
- Easy to extend / Custom cluster policies
- UCM Transform
-
CGP 2D (Cartesian Grid Partitioning)
-
Many Data Structures:
- Union Find Data Structure
- Histogram
-
Coming Eventually:
- MultiwayCut:
- ModifiedMultiwayCut:
- LiftedModifiedMultiwayCut:
The Python API is at present the easiest to use. The C++ API is mostly for power users. We recommend to use library from Python. Almost any class / function in the Python API is calling into C++ via pybind11.