/lasc

Left Atrial Segmentation Challenge 2013

Primary LanguagePythonBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Left Atrial Segmentation Challenge 2013

Authors: Catalina Tobon-Gomez (catactg@gmail.com) and Arjan Geers (ajgeers@gmail.com)

About

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.

Abbreviations

  • CT: Computed tomography
  • GT: Ground truth
  • MRI: Magnetic resonance imaging
  • LA: Left atrium
  • LASC'13: Left Atrial Segmentation Challenge 2013
  • PV: Pulmonary vein

Data

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.

Instructions

Run the code

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

More details

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)

Folder structure

The data hosted on the Cardiac Atlas Project and, in part, the sample data in this repository are structured as described below.

Training dataset

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 dataset

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

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

Dependencies

The scripts in this repository were successfully run with:

An easy way of installing these dependencies is to install Anaconda. Make sure to add VTK with conda install vtk.

License

BSD 2-Clause