SssCcc72 / nifty

A nifty library for graph based image segmentation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nifty

Installation (Linux):

Via Conda

The easiest way to install this package is via conda (right now only available withour gurobi or cplex ):

conda install -c abailoni nifty
Installation from source
  • 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

Description

Travis (Ubuntu builds)

Master: Build Status master

Appveyor (Windows builds)

Master: Build status Dev: Build status

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.

Documentation:

A very tentative documentation of the nifty python module.

Features (Highlights):

  • 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)
  • 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:

C++ vs Python:

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.

About

A nifty library for graph based image segmentation.

License:MIT License


Languages

Language:C++ 83.7%Language:Python 13.4%Language:CMake 2.3%Language:Shell 0.3%Language:TeX 0.1%Language:Batchfile 0.1%Language:C 0.0%Language:HTML 0.0%