Matlab and Python wrap of Conditional Random Field (CRF) and fully connected (dense) CRF for 2D and 3D image segmentation, according to the following papers:
[1] Yuri Boykov and Vladimir Kolmogorov, "An experimental comparison of min-cut/max-flow algorithms for energy minimization in vision", IEEE TPAMI, 2004.
[2] Philipp Krähenbühl and Vladlen Koltun, "Efficient inference in fully connected crfs with gaussian edge potentials", in NIPS, 2011.
[3] Kamnitsas et al in "Efficient multi-scale 3D CNN with fully connected CRF for accurate brain lesion segmentation", Medical Image Analysis, 2017.
This repository depends on the following packages:
Maxflow
,
DenceCRF
and
3D Dense CRF
-
Install by:
pip install SimpleCRF
-
Alternatively, you can compile the source files by the following two steps:
python setup.py build
python setup.py install
Some demos of using this package are:
-
examples/demo_maxflow.py
: using maxflow for automatic and interactive segmentation of 2D and 3D images. -
examples/demo_densecrf.py
: using dense CRF for 2D gray scale and RGB image segmentation. -
examples/demo_densecrf3d.py
: using 3D dense CRF for 3D multi-modal image segmentation.
maxflow
has four functions as follows. Note that the current version only supports binary segmentation.
-
maxflow.maxflow2d()
for 2D automatic segmentation. -
maxflow.interactive_maxflow2d()
for 2D interactive segmentation. -
maxflow.maxflow3d()
for 3D automatic segmentation. -
maxflow.interactive_maxflow3d()
for 3D interactive segmentation.
denseCRF
has the following function. It can deal with multi-class segmentation, and only supports RGB images.
denseCRF.densecrf()
for 2D automatic segmentation.
denseCRF3D
has the following function. It can deal with multi-class segmentation. The input channel number can be 1-5.
denseCRF3D.densecrf3d()
for 3D automatic segmentation.