Label fusion strategies for multi-class labels.
Project description
LabelFusion
This repo contains implementation of various label fusion approaches that can be used to fuse multiple labels.
Installation
For Usage
conda create -n venv_labelFusion python=3.6.5 -y
conda activate venv_labelFusion
pip install LabelFusion
For Development
# fork to your own repo
git clone ${yourFork_labelFusion_repo_link}
cd LabelFusion
conda create -p ./venv python=3.6.5 -y
conda activate ./venv
pip install -e .
# develop, push
# initiate pull request
Available LabelFusion:
- Voting (ITK): DOI:10.1016/j.patrec.2005.03.017
- STAPLE (ITK): DOI:10.1109/TMI.2004.830803
- Majority Voting: DOI:10.1007/978-3-319-20801-5_11
- SIMPLE: DOI:10.1109/tmi.2010.2057442
Usage
Command-Line interface
# continue from previous shell
python fusion_run -h
-h, --help show this help message and exit
-inputs INPUTS The absolute, comma-separated paths of labels that need to be fused
-classes CLASSES The expected labels; for example, for BraTS, this should be '0,1,2,4' - not used for STAPLE or ITKVoting
-method METHOD The method to apply; currently available: STAPLE | ITKVoting | MajorityVoting | SIMPLE
-output OUTPUT The output file to write the results
Example:
# continue from previous shell
python fusion_run \
-inputs /path/to/seg_algo_1.nii.gz,/path/to/seg_algo_2.nii.gz,/path/to/seg_algo_3.nii.gz \
-classes 0,1,2,4 \
-method STAPLE \
-output /path/to/seg_fusion.nii.gz
Python interface
# assuming virtual environment containing LabelFusion is activated
import SimpleITK as sitk
from LabelFusion.wrapper import fuse_images
label_to_fuse_0 = '/path/to/image_0.nii.gz'
label_to_fuse_1 = '/path/to/image_1.nii.gz'
images_to_fuse = []
images_to_fuse.append(sitk.ReadImage(label_to_fuse_0, sitk.sitkUInt8))
images_to_fuse.append(sitk.ReadImage(label_to_fuse_1, sitk.sitkUInt8))
fused_staple = fuse_images(images_to_fuse, 'staple') # class_list is not needed for staple/itkvoting
sitk.WriteImage(fused_staple, '/path/to/output_staple.nii.gz')
fused_simple = fuse_images(images_to_fuse, 'simple', class_list=[0,1,2,4])
sitk.WriteImage(fused_simple, '/path/to/output_simple.nii.gz')
Testing
This repo has continuous integration enbabled via Azure DevOps for the following operating systems:
- Windows
- Ubuntu
- macOS
And for the following python versions:
- 3.6
- 3.7
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
LabelFusion-1.0.11.tar.gz
(36.5 kB
view hashes)
Built Distribution
Close
Hashes for LabelFusion-1.0.11-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0db8258f5d23e599fdba9dbd45e8734d27eec4bc0daf15cb8dd396e22e22d023 |
|
MD5 | 8d59b13655925fb9d89ef2f58f3460ee |
|
BLAKE2b-256 | 72335231a1c1493f8e9f861e56f73b3bea68e4a1afb077270113a16523b2c3cb |