Authors: Catalina Tobon-Gomez (catactg@gmail.com) and Arjan Geers (ajgeers@gmail.com)
This repository is associated with the Left Atrial Segmentation Challenge 2013 (LASC'13). LASC'13 was part of the STACOM'13 workshop, held in conjunction with MICCAI'13. Seven international research groups, comprising 11 algorithms, participated in the challenge.
For a detailed report, please refer to:
Tobon-Gomez C, Geers AJ, Peters, J, Weese J, Pinto K, Karim R, Ammar M, Daoudi A, Margeta J, Sandoval Z, Stender B, Zheng Y, Zuluaga, MA, Betancur J, Ayache N, Chikh MA, Dillenseger J-L, Kelm BM, Mahmoudi S, Ourselin S, Schlaefer A, Schaeffter T, Razavi R, Rhode KS. Benchmark for Algorithms Segmenting the Left Atrium From 3D CT and MRI Datasets. IEEE Transactions on Medical Imaging, 34(7):1460–1473, 2015.
The challenge is also featured on Cardiac Atlas Project.
The Python scripts in this repository take as input a segmentation and output the two evaluation metrics described in the paper.
The data and code of the challenge have been made publicly available to serve as a benchmark for left atrial segmentation algorithms.
Feel free to contact us with any questions.
- CT: Computed tomography
- GT: Ground truth
- MRI: Magnetic resonance imaging
- LA: Left atrium
- LASC'13: Left Atrial Segmentation Challenge 2013
- PV: Pulmonary vein
The benchmark consists of 30 CT and 30 MRI datasets. Per modality, 10 datasets are for training of segmentation algorithms and 20 datasets are for testing.
The MRI datasets are publicly available on Figshare:
The CT datasets have restricted access. Fill in this form and email to catactg@gmail.com.
Sample data from an arbitrary modality/institute/case were included in this repository to be able to run the scripts.
Clone the repository and cd into it:
$ git clone https://github.com/catactg/lasc
$ cd lasc
Run the following to generate csv-files with metric values:
$ python code/lasc_benchmark.py data/mri/testing/b002 data/mri/results/UCL_1C/b002/mask.mhd 0
The script lasc_benchmark.py
calls functions in lasc_benchmark_tools.py
to extract a surface mesh from the binary mask generated by the participant's segmentation algorithm, run the standardisation, and compute the evaluation metrics.
The benchmark assumes the binary mask to be in mhd + raw format with "inside LA" = 1 and "outside LA" = 0. It also assumes the binary mask and original image to be registered.
Usage of lasc_benchmark.py
:
$ python lasc_benchmark.py <path_groundtruth> <segmentation_file> <1|0>
with input arguments:
<path_groundtruth>
: Path to the testing dataset with the GT<segmentation_file>
: Path to the binary mask generated by the segmentation algorithm<1|0>
: Flag to enable visualisation of the segmentation alongside the GT (both standardised)
The data hosted on the Cardiac Atlas Project and, in part, the sample data in this repository are structured as described below.
Training datasets are located in data/<modality>/training/a<casenumber>
(e.g. data/mri/training/a001/
). Included are the image and GT segmentation.
File name | Description |
---|---|
gt_binary.mhd + gt_binary.raw |
Binary image representation of GT |
image.mhd + image.raw |
Image for training |
Testing datasets are located in data/<modality>/testing/b<casenumber>
(e.g. data/mri/testing/b002/
). Included are the GT segmentation and helper files for standardisation.
File name | Description |
---|---|
clippointid1.csv |
PointID of clvein1.vtp at which to clip PV1 |
clippointid2.csv |
PointID of clvein2.vtp at which to clip PV2 |
clippointid3.csv |
PointID of clvein3.vtp at which to clip PV3 |
clippointid4.csv |
PointID of clvein4.vtp at which to clip PV4 |
clvein1.vtp |
Centerline of PV1 |
clvein2.vtp |
Centerline of PV2 |
clvein3.vtp |
Centerline of PV3 |
clvein4.vtp |
Centerline of PV4 |
gt_noclip_mesh.vtp |
Surface mesh extracted from gt_noclip.mhd |
gt_noclip.mhd + gt_noclip.zraw |
Labeled image representation of GT |
gt_std_mesh.vtp |
Surface mesh after standardisation |
gt_std.mhd + gt_std.zraw |
Image representation of GT with labels copied from gt_std_mesh.vtp |
image.mhd + image.raw |
Image to segment |
mitralplane.csv |
Point, normal, and insideout flag describing mitral plane location |
Results are located in data/<modality>/results/<algorithm>/b<casenumber>
(e.g. data/mri/results/UCL_1C/b002/
). Included are the binary mask provided by the participant and the output files of lasc_benchmark.py
.
File name | Description |
---|---|
dm_body.csv |
Dice metric of the LA body |
dm_pvs.csv |
Dice metric of the PVs |
mask.mhd + mask.raw |
Binary mask provided by segmentation algorithm |
mesh.vtp |
Surface mesh extracted from mask.mhd using marching cubes |
s2s_body.csv |
Surface-to-surface metric of the LA body |
s2s_pvs.csv |
Surface-to-surface metric of the PVs |
std_gt2seg.vtp |
Surface mesh with distance from GT to segmentation (as pointdata array) |
std_mesh.vtp |
Surface mesh after standardisation |
std_seg2gt.vtp |
Surface mesh with distance from segmentation to GT (as pointdata array) |
std.mhd + std.zraw |
Image representation of segmentation with labels copied from std_mesh.vtp |
The scripts in this repository were successfully run with:
- Python 2.7.6
- NumPy 1.8.0
- scikit-learn 0.14.1
- VTK 5.10.1
An easy way of installing these dependencies is to install Anaconda. Make sure to add VTK with conda install vtk
.
BSD 2-Clause