Slic-Seg is open-source software for semi-automated interactive segmentation of medical images.
Slic-Seg is a minimally interactive online learning-based segmentation method. An online random forest is first trained on data coming from scribbles provided by the user in one single selected start slice. This then forms the basis for a slice-by-slice framework that segments subsequent slices before incorporating them into the training set on the fly.
Slic-Seg was developed as part of the GIFT-Surg project. The algorithm and software were developed by Guotai Wang at the Translational Imaging Group in the Centre for Medical Image Computing at University College London (UCL).
Algorithm and code by Guotai Wang.
If you use this software, please cite this paper.
Slic-Seg: A minimally interactive segmentation of the placenta from sparse and motion-corrupted fetal MRI in multiple views
Guotai Wang, Maria A. Zuluaga, Rosalind Pratt, Michael Aertsen, Tom Doel, Maria Klusmann, Anna L. David, Jan Deprest, Tom Vercauteren, Sébastien Ourselin
- This is PROTOTYPE software. Due to the low-level GPU computation there is a risk of system instability and crashes which could result in data loss.
Copyright (c) 2014-2016, University College London.
Slic-Seg is available as free open-source software under a BSD 3-Clause License. Other licenses may apply for dependencies:
- Maxflow by Michael Rubinstein uses the BSD 2-Clause License
- CoreMat by Tom Doel uses the MIT License
- DicoMat by Tom Doel uses the BSD 3-Clause License
The current version of Slic-Seg requries:
- Matlab
- Matlab Image Processing Toolbox (if files are to be loaded from DICOM)
- A Matlab-supported C++ compiler installed and configured to work with mex files see here
- The CUDA toolkit to be installed and configured to work with Matlab
Please note that there are cross-dependencies between Matlab, CUDA, C++ and the OS. Please see below for the platforms and versions we have tested against.
Slic-Seg is a cross-platform Matlab/C++ library. We have tested Slic-Seg on the following platforms:
-
Linux
-
Ubuntu Desktop 14.04.3 LTS 64-bit
-
NVIDIA 12GB GTX TITAN X
-
CUDA 7.5
-
Matlab R2015b
-
MacOS X
-
OS X Yosemite 10.10.5
-
NVIDIA GeForce GT 750M 1024 MB
-
XCode 7.2.1
-
CUDA 7.5
-
Matlab 2015b 64-bit
-
Windows
-
Windows 10 Professional 64-bit (NOTE: Matlab does not support GPU operations on 32-bit Windows)
-
2GB NVIDIA Quadro 4000
-
Visual Studio 2013 Community Edition (NOTE: CUDA does not support Visual Studio 2015 or gcc)
-
CUDA 7.5
-
Matlab 2015b 64-bit
-
Before attempting to use Slic-Seg, please ensure you have C++ and CUDA compilers installed and correctly configured to work with Matlab
-
GPU computing may lead to system instability and data loss. Please back up any valuable data before using the software.
-
Switch to the
matlab
directory. -
To launch the user interface, run
slicseg
on the command window -
Alternatively, run the test script to illustrate use of the algorithm without the user interface. To do this:
-
Run 'SlicSegAddPaths` to set up the paths for this session
-
Type
test
in the command window
- Run
slicseg
to launch the user interface. - The mex and cuda files will automatically compile if they have not already been compiled. This will fail if you have not installed and correctly set up your mex and cuda compilers to work with Matlab.
- Click
Load
to load Dicom or a series of png image from a directory you specify - Choose your starting slice (usually a slice in the middle of the object)
- Draw scribbles (lines) over parts of the object you wish to segment. The left button selects the foreground (object) and the right button selects the background.
- Click
Segment
to segment the object on this slice, based on the scribbes you have entered - Select the range (start and end slices) over which the segmentation will propagate
- Click
Propagate
to continue the segmentation over these slices - Add additional scribbles on the segmentation result for refinement if needed.
- Click
Save
to save the segmentation
-
The most likely issues will be due to not having correctly set up your mex and cuda compilers.
-
If you get compilation errors, please fix your mex and cuda compiler setup, then run
CompileSlicSeg recompile
on the command window to force re-compilation. -
OSX users, please check the supported versions of XCode. Note that NVIDIA CUDA may not support the latest versions of XCode.
-
If you are using OSX and receive a
No supported compiler or SDK was found
error, and you have already installed XCode, please [follows these instructions]( * Why can't MEX find a supported compiler in MATLAB R2015b after I upgraded to Xcode 7.0? ) -
On linux, linking problems may occur due to Matlab adding an internal linking path before
mex
is called. If you get version problems when linking C++ files you can force Matlab to find specific library versions using LD_PRELOAD, for example:LD_PRELOAD=/path-to-desired-library/libstdc++.so.6 /path-to-matlab/bin/matlab
This work was supported through an Innovative Engineering for Health award by the Wellcome Trust [WT101957], the Engineering and Physical Sciences Research Council (EPSRC) [NS/A000027/1] and a National Institute for Health Research Biomedical Research Centre UCLH/UCL High Impact Initiative.
Please note that NVIDA CUDA drivers and Matlab have specific compatibility requirements regarding C++ compilers