compresso

Compresso: Efficient Compression of Segmentation Data For Connectomics

https://github.com/vcg/compresso

Science Score: 28.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: scholar.google
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.1%) to scientific vocabulary

Keywords

bockwurst compression connectomics encoding mri segmantation
Last synced: 6 months ago · JSON representation ·

Repository

Compresso: Efficient Compression of Segmentation Data For Connectomics

Basic Info
  • Host: GitHub
  • Owner: VCG
  • License: mit
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 9.98 MB
Statistics
  • Stars: 12
  • Watchers: 7
  • Forks: 4
  • Open Issues: 2
  • Releases: 0
Topics
bockwurst compression connectomics encoding mri segmantation
Created about 9 years ago · Last pushed over 4 years ago
Metadata Files
Readme License Citation

README.md

Compresso: Efficient Compression of Segmentation Data For Connectomics

Paper MICCAI doi

Segmentations

Recent advances in segmentation methods for connectomics and biomedical imaging produce very large datasets with labels that assign object classes to image pixels. The resulting label volumes are bigger than the raw image data and need compression for efficient storage and transfer. General-purpose compression methods are less effective because the label data consists of large low-frequency regions with structured boundaries unlike natural image data. We present Compresso, a new compression scheme for label data that outperforms existing approaches by using a sliding window to exploit redundancy across border regions in 2D and 3D. We compare our method to existing compression schemes and provide a detailed evaluation on eleven biomedical and image segmentation datasets. Our method provides a factor of 600-2200x compression for label volumes, with running times suitable for practice.

Paper: Matejek et al., "Compresso: Efficient Compression of Segmentation Data For Connectomics", Proceedings of the International Conference on Medical Image Computing and Computer-Assisted Intervention (MICCAI), 2017, 10-14. [CITE | PDF]

Requirements

  • Python 2.7
  • conda

Pip Installation

Thanks to Will Silversmith, you can now install compresso with pip!

pip install compresso

Setup

```bash git clone https://github.com/vcg/compresso && cd compresso conda create -n compressoenv --file requirements.txt -c chen -c sunpy -c conda-forge -c auto -c indygreg source activate compressoenv

for Compresso scheme as presented in MICCAI

cd experiments/compression/compresso; python setup.py build_ext --inplace

to run the neuroglancer compression scheme

cd ../neuroglancer; python setup.py build_ext --inplace

for Compresso v2 that is under development

cd ../../../src/python; python setup.py build_ext --inplace ```

Compress Segmentation Stacks

There are two versions of Compresso in this repository. Under the src folder there is an updated c++ and python version that extends on the Compresso scheme presented in MICCAI. This algorithm, among other things, implements bit-packing to further improve compression results.

The compression scheme in experiments/compression/compresso follows the MICCAI paper exactly.

Compress Your Segmentation Stack

In order to test Compresso on your own data simply use:

``` import compression as C

With LZMA

C.LZMA.compress(C.COMPRESSO.compress()) ```

Experiments

```

the dataset must be in hdf5 format.

experiments/run.py COMPRESSO LZMA ac3 -r 1 -s 1 -d '///' ```

Usage:

``` usage: run.py [-h] [--directory PATH] [--runs NUM] [--slices NUM] [--verbose] encoding compression dataset

positional arguments: encoding name of encoding scheme compression name of compression scheme dataset name of data set

optional arguments: -h, --help show this help message and exit --directory PATH, -d PATH path to data directory --runs NUM, -r NUM number of runs (default: 1) --slices NUM, -s NUM number of slices per dataset (default: -1 (all)) --verbose, -v print progress (default: False) ```

Make sure the data sets are located in ~/compresso/data/ or specify the location. The data from the paper can be found here:

Results From the Paper

Compression Performance

Compression Performance of Connectomics Datasets

Compression ratios of general-purpose compression methods combined with Compresso and Neuroglancer. Compresso paired with LZMA yields the best compression ratios for all connectomics datasets (left) and in average (four out of five) for the others (right).

Owner

  • Name: Visual Computing Group @ Harvard
  • Login: VCG
  • Kind: organization
  • Location: Cambridge, MA

Citation (CITATION.bib)

@inbook{matejek2017compresso,
  author = {Brian Matejek and Daniel Haehn and Fritz Lekschas and Michael Mitzenmacher and Hanspeter Pfister},
  title = {Compresso: Efficient Compression of Segmentation Data For Connectomics},
  booktitle = {Medical Image Computing and Computer Assisted Intervention},
  series = {MICCAI ’17},
  publisher = {Springer International Publishing},
  year = {2017},
  month = {9},
  day = {4},
  pages = {781--788},
  doi = {10.1007/978-3-319-66182-7_89},
}

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Dependencies

experiments/requirements.txt pypi
  • backports.lzma =0.0.3=py27_0
  • cairo =1.14.8=0
  • certifi =2016.2.28=py27_0
  • contextlib2 =0.5.5=py27_0
  • cycler =0.10.0=py27_0
  • cython =0.26=py27_0
  • dbus =1.10.20=0
  • enum34 =1.1.6=py27_0
  • expat =2.1.0=0
  • fontconfig =2.12.1=3
  • freetype =2.5.5=2
  • funcsigs =1.0.2=py27_0
  • functools32 =3.2.3.2=py27_0
  • glib =2.50.2=1
  • glymur =0.8.11=py27_1
  • gst-plugins-base =1.8.0=0
  • gstreamer =1.8.0=0
  • h5py =2.7.0=np113py27_0
  • hdf5 =1.8.17=2
  • icu =54.1=0
  • jbig =2.1=0
  • jpeg =9b=0
  • libffi =3.2.1=1
  • libgcc =5.2.0=0
  • libiconv =1.14=0
  • libpng =1.6.30=1
  • libtiff =4.0.6=3
  • libxcb =1.12=1
  • libxml2 =2.9.4=0
  • libxslt =1.1.29=0
  • llvmlite =0.19.0=py27_0
  • lxml =3.8.0=py27_0
  • lzo =2.10=0
  • matplotlib =2.0.2=np113py27_0
  • mkl =2017.0.3=0
  • numba =0.34.0=np113py27_0
  • numpy =1.13.1=py27_0
  • olefile =0.44=py27_0
  • openjpeg =2.1.2=3
  • openssl =1.0.2l=0
  • pcre =8.39=1
  • pillow =4.2.1=py27_0
  • pip =9.0.1=py27_1
  • pixman =0.34.0=0
  • pycairo =1.10.0=py27_0
  • pyparsing =2.2.0=py27_0
  • pypng =0.0.16=py27_0
  • pyqt =5.6.0=py27_2
  • python =2.7.13=0
  • python-dateutil =2.6.1=py27_0
  • python-lzf =0.2.1=py27_0
  • python-lzo =1.11=py27_0
  • pytz =2017.2=py27_0
  • qt =5.6.2=5
  • readline =6.2=2
  • setuptools =36.4.0=py27_0
  • singledispatch =3.4.0.3=py27_0
  • sip =4.18=py27_0
  • six =1.10.0=py27_0
  • sqlite =3.13.0=0
  • subprocess32 =3.2.7=py27_0
  • tk =8.5.18=0
  • wheel =0.29.0=py27_0
  • xz =5.2.3=0
  • zlib =1.2.11=0
  • zstandard =0.4.0=py27_0
requirements.txt pypi
  • backports.lzma =0.0.3=py27_0
  • cairo =1.14.8=0
  • certifi =2016.2.28=py27_0
  • contextlib2 =0.5.5=py27_0
  • cycler =0.10.0=py27_0
  • cython =0.26=py27_0
  • dbus =1.10.20=0
  • enum34 =1.1.6=py27_0
  • expat =2.1.0=0
  • fontconfig =2.12.1=3
  • freetype =2.5.5=2
  • funcsigs =1.0.2=py27_0
  • functools32 =3.2.3.2=py27_0
  • glib =2.50.2=1
  • glymur =0.8.11=py27_1
  • gst-plugins-base =1.8.0=0
  • gstreamer =1.8.0=0
  • h5py =2.7.0=np113py27_0
  • hdf5 =1.8.17=2
  • icu =54.1=0
  • jbig =2.1=0
  • jpeg =9b=0
  • libffi =3.2.1=1
  • libgcc =5.2.0=0
  • libiconv =1.14=0
  • libpng =1.6.30=1
  • libtiff =4.0.6=3
  • libxcb =1.12=1
  • libxml2 =2.9.4=0
  • libxslt =1.1.29=0
  • llvmlite =0.19.0=py27_0
  • lxml =3.8.0=py27_0
  • lzo =2.10=0
  • matplotlib =2.0.2=np113py27_0
  • mkl =2017.0.3=0
  • numba =0.34.0=np113py27_0
  • numpy =1.13.1=py27_0
  • olefile =0.44=py27_0
  • openjpeg =2.1.2=3
  • openssl =1.0.2l=0
  • pcre =8.39=1
  • pillow =4.2.1=py27_0
  • pip =9.0.1=py27_1
  • pixman =0.34.0=0
  • pycairo =1.10.0=py27_0
  • pyparsing =2.2.0=py27_0
  • pypng =0.0.16=py27_0
  • pyqt =5.6.0=py27_2
  • python =2.7.13=0
  • python-dateutil =2.6.1=py27_0
  • python-lzf =0.2.1=py27_0
  • python-lzo =1.11=py27_0
  • pytz =2017.2=py27_0
  • qt =5.6.2=5
  • readline =6.2=2
  • setuptools =36.4.0=py27_0
  • singledispatch =3.4.0.3=py27_0
  • sip =4.18=py27_0
  • six =1.10.0=py27_0
  • sqlite =3.13.0=0
  • subprocess32 =3.2.7=py27_0
  • tk =8.5.18=0
  • wheel =0.29.0=py27_0
  • xz =5.2.3=0
  • zlib =1.2.11=0
  • zstandard =0.4.0=py27_0