Skip to main content

cuCIM - an extensible toolkit designed to provide GPU accelerated I/O, computer vision & image processing primitives for N-Dimensional images with a focus on biomedical imaging.

Project description

ย cuCIM

RAPIDS cuCIM is an open-source, accelerated computer vision and image processing software library for multidimensional images used in biomedical, geospatial, material and life science, and remote sensing use cases.

cuCIM offers:

  • Enhanced Image Processing Capabilities for large and n-dimensional tag image file format (TIFF) files
  • Accelerated performance through Graphics Processing Unit (GPU)-based image processing and computer vision primitives
  • A Straightforward Pythonic Interface with Matching Application Programming Interface (API) for Openslide

cuCIM supports the following formats:

  • Aperio ScanScope Virtual Slide (SVS)
  • Philips TIFF
  • Generic Tiled, Multi-resolution RGB TIFF files with the following compression schemes:
    • No Compression
    • JPEG
    • JPEG2000
    • Lempel-Ziv-Welch (LZW)
    • Deflate

NOTE: For the latest stable README.md ensure you are on the main branch.

Developer Page

Blogs

Webinars

Documentation

Release notes are available on our wiki page.

Install cuCIM

Conda

Conda (stable)

conda create -n cucim -c rapidsai -c conda-forge cucim cudatoolkit=<CUDA version>

<CUDA version> should be 11.0+ (e.g., 11.0, 11.2, etc.)

Conda (nightlies)

conda create -n cucim -c rapidsai-nightly -c conda-forge cucim cudatoolkit=<CUDA version>

<CUDA version> should be 11.0+ (e.g., 11.0, 11.2, etc)

PyPI

pip install cucim

# Install dependencies for `cucim.skimage` (assuming that CUDA 11.0 is used for CuPy)
pip install scipy scikit-image cupy-cuda110

Notebooks

Please check out our Welcome notebook (NBViewer)

Downloading sample images

To download images used in the notebooks, please execute the following commands from the repository root folder to copy sample input images into notebooks/input folder:

(You will need Docker installed in your system)

./run download_testdata

or

mkdir -p notebooks/input
tmp_id=$(docker create gigony/svs-testdata:little-big)
docker cp $tmp_id:/input notebooks
docker rm -v ${tmp_id}

Build/Install from Source

See build instructions.

Contributing Guide

Contributions to cuCIM are more than welcome! Please review the CONTRIBUTING.md file for information on how to contribute code and issues to the project.

Acknowledgments

Without awesome third-party open source software, this project wouldn't exist.

Please find LICENSE-3rdparty.md to see which third-party open source software is used in this project.

License

Apache-2.0 License (see LICENSE file).

Copyright (c) 2020-2022, NVIDIA CORPORATION.

cuCIM 22.10.00 (12 Oct 2022)

๐Ÿ› Bug Fixes

  • Correctly use dtype when computing shared memory requirements of separable convolution (#409) @grlee77
  • Forward-merge branch-22.08 to branch-22.10 (#403) @jakirkham
  • Add missing imports of euler_number and perimeter_crofton (#386) @grlee77

๐Ÿ“– Documentation

๐Ÿš€ New Features

๐Ÿ› ๏ธ Improvements

cuCIM 22.08.00 (17 Aug 2022)

๐Ÿšจ Breaking Changes

  • Stain extraction: use a less strict condition across channels when thresholding (#316) @grlee77

๐Ÿ› Bug Fixes

  • create SimilarityTransform using CuPy 9.x-compatible indexing (#365) @grlee77
  • Add __init__.py in cucim.core (#359) @jakirkham
  • Stain extraction: use a less strict condition across channels when thresholding (#316) @grlee77
  • Incorporate bug fixes from skimage 0.19.3 (#312) @grlee77
  • fix RawKernel bug for canny filter when quantiles are used (#310) @grlee77

๐Ÿ“– Documentation

๐Ÿš€ New Features

  • Add segmentation with the Chan-Vese active contours method (#343) @grlee77
  • Add cucim.skimage.morphology.medial_axis (#342) @grlee77
  • Add cucim.skimage.segmentation.expand_labels (#341) @grlee77
  • Add Euclidean distance transform for images/volumes (#318) @grlee77

๐Ÿ› ๏ธ Improvements

cuCIM 22.06.00 (7 Jun 2022)

๐Ÿšจ Breaking Changes

  • Promote small integer types to single rather than double precision (#278) @grlee77

๐Ÿ› Bug Fixes

๐Ÿ“– Documentation

๐Ÿš€ New Features

  • add missing cucim.skimage.segmentation.clear_border function (#267) @grlee77
  • add cucim.core.operations.color.stain_extraction_pca and cucim.core.operations.color.normalize_colors_pca for digital pathology H&E stain extraction and normalization (#273) @grlee77, @drbeh

๐Ÿ› ๏ธ Improvements

cuCIM 22.04.00 (6 Apr 2022)

๐Ÿšจ Breaking Changes

  • Apply fixes to skimage.transform scheduled for scikit-image 0.19.2 (#208) @grlee77

๐Ÿ› Bug Fixes

๐Ÿ“– Documentation

๐Ÿ› ๏ธ Improvements

cuCIM 22.02.00 (2 Feb 2022)

๐Ÿšจ Breaking Changes

  • Update cucim.skimage API to match scikit-image 0.19 (#190) @glee77

๐Ÿ› Bug Fixes

  • Fix a bug in v21.12.01 (#191) @gigony
    • Fix GPU memory leak when using nvJPEG API (when device='cuda' parameter is used in read_region method).
  • Fix segfault for preferred_memory_capacity in Python 3.9+ (#214) @gigony

๐Ÿ“– Documentation

๐Ÿš€ New Features

  • Update cucim.skimage API to match scikit-image 0.19 (#190) @glee77
  • Support multi-threads and batch, and support nvJPEG for JPEG-compressed images (#191) @gigony
  • Allow CuPy 10 (#195) @jakikham

๐Ÿ› ๏ธ Improvements

cuCIM 21.12.00 (9 Dec 2021)

๐Ÿš€ New Features

๐Ÿ› Bug Fixes

๐Ÿ“– Documentation

๐Ÿ› ๏ธ Improvements

cuCIM 21.10.00 (7 Oct 2021)

๐Ÿ› Bug Fixes

๐Ÿ“– Documentation

  • Forward-merge branch-21.08 to branch-21.10 (#88) @jakirkham
  • Update PyPI cuCIM v21.08.01 README.md and CHANGELOG.md (#87) @gigony

๐Ÿš€ New Features

  • Support raw RGB tiled TIFF (#108) @gigony
  • Add a mechanism for user to know the availability of cucim.CuImage (#107) @gigony
  • Enable GDS and Support Runtime Context (enter, exit) for CuFileDriver and CuImage (#106) @gigony
  • Add transforms for Digital Pathology (#100) @shekhardw

๐Ÿ› ๏ธ Improvements

cuCIM 21.08.00 (4 Aug 2021)

๐Ÿ› Bug Fixes

  • Remove int-type bug on Windows in skimage.measure.label (#72) @grlee77
  • Fix missing array interface for associated_image() (#65) @gigony
  • Handle zero-padding version string (#59) @gigony
  • Remove invalid conda environment activation (#58) @ajschmidt8

๐Ÿ“– Documentation

๐Ÿš€ New Features

๐Ÿ› ๏ธ Improvements

  • Add SciPy 2021 to README (#79) @jakirkham
  • Use more descriptive ElementwiseKernel names in cucim.skimage (#75) @grlee77
  • Add initial Python unit/performance tests for TIFF loader module (#62) @gigony
  • Fix 21.08 forward-merge conflicts (#57) @ajschmidt8

cuCIM 21.06.00 (9 Jun 2021)

๐Ÿ› Bug Fixes

๐Ÿ› ๏ธ Improvements

cuCIM 0.19.0 (15 Apr 2021)

  • Initial release of cuCIM including cuClaraImage and cupyimg.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release. See tutorial on generating distribution archives.

Built Distribution

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page