A package to compute different segmentation metrics for Medical images.
Project description
Segmentaion Metrics Package
This is a simple package to compute different metrics for Medical image segmentation(images with suffix .mhd
, .mha
, .nii
, .nii.gz
or .nrrd
), and write them to csv file.
Summary
To assess the segmentation performance, there are several different methods. Two main methods are volume-based metrics and distance-based metrics.
Metrics included
This library computes the following performance metrics for segmentation:
Voxel based metrics
- Dice (F-1)
- Jaccard
- Precision
- Recall
- False positive rate
- False negtive rate
- Volume similarity
Surface Distance based metrics (with spacing as default)
- Hausdorff distance
- Hausdorff distance 95% percentile
- Mean (Average) surface distance
- Median surface distance
- Std surface distance
Installation
$ pip install seg-metrics
Usage
At first, import the package:
import seg_metrics.seg_metrics as sg
Evaluate two batch of images with same filenames from two different folders
labels = [0, 4, 5 ,6 ,7 , 8]
gdth_path = 'data/gdth'
pred_path = 'data/pred'
csv_file = 'metrics.csv'
metrics = sg.write_metrics(labels=labels[1:], # exclude background
gdth_path=gdth_path,
pred_path=pred_path,
csv_file=csv_file)
print(metrics)
After runing the above codes, you can get a dict metrics
which contains all the metrics. Also you can find a .csv
file containing all metrics in the same directory.
Evaluate two images
labels = [0, 4, 5 ,6 ,7 , 8]
gdth_file = 'data/gdth.mhd'
pred_file = 'data/pred.mhd'
csv_file = 'metrics.csv'
metrics = sg.write_metrics(labels=labels[1:], # exclude background
gdth_path=gdth_file,
pred_path=pred_file,
csv_file=csv_file)
Evaluate two images with specific metrics
labels = [0, 4, 5 ,6 ,7 , 8]
gdth_file = 'data/gdth.mhd'
pred_file = 'data/pred.mhd'
csv_file = 'metrics.csv'
metrics = sg.write_metrics(labels=labels[1:], # exclude background if needed
gdth_path=gdth_file,
pred_path=pred_file,
csv_file=csv_file,
metrics=['dice', 'hd'])
# for only one metric
metrics = sg.write_metrics(labels=labels[1:], # exclude background if needed
gdth_path=gdth_file,
pred_path=pred_file,
csv_file=csv_file,
metrics='msd')
By passing the following parameters to select specific metrics.
- dice: Dice (F-1)
- jaccard: Jaccard
- precision: Precision
- recall: Recall
- fpr: False positive rate
- fnr: False negtive rate
- vs: Volume similarity
- hd: Hausdorff distance
- hd95: Hausdorff distance 95% percentile
- msd: Mean (Average) surface distance
- mdsd: Median surface distance
- stdsd: Std surface distance
For example:
labels = [1]
gdth_file = 'data/gdth.mhd'
pred_file = 'data/pred.mhd'
csv_file = 'metrics.csv'
metrics = sg.write_metrics(labels, gdth_file, pred_file, csv_file, metrics=['dice', 'hd95'])
dice = metrics['dice']
hd95 = metrics['hd95']
If this repository helps you in anyway, show your love ❤️ by putting a ⭐ on this project. I would also appreciate it if you cite the package in your publication.
#Bibtex
@misc{Jingnan,
title = {A package to compute segmentation metrics: seg-metrics},
author = {Jingnan Jia},
url = {https://github.com/Ordgod/segmentation_metrics},
year = {2020},
doi = {10.5281/zenodo.3995075}
}
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
Built Distribution
Hashes for seg_metrics-1.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2198d14a887b7cbc17566c4160c14657f9554559076ecb0ea4b3c4293c9dd04c |
|
MD5 | 6bd57850a7fd2ede1dc0512d5cfa4b90 |
|
BLAKE2b-256 | 419a24141ff2e8df736581670f90f675c1da14d1895009c17f02201df2042a3e |