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 23.04.01 (14 Apr 2023)

๐Ÿ› ๏ธ Improvements

cuCIM 23.04.00 (13 Apr 2023)

๐Ÿšจ Breaking Changes

  • Fix inefficiency in handling clipping of image range in resize and other transforms (#516) @grlee77

๐Ÿ› Bug Fixes

  • Fix bug in median filter with non-uniform footprint (#521) @grlee77
  • use cp.around instead of cp.round for CuPy 10.x compatiblity (#508) @grlee77
  • Fix error in LZ4-compressed Zarr writing demo (#506) @grlee77
  • Normalize whitespace.(#474) @bdice

๐Ÿ› ๏ธ Improvements

cuCIM 23.02.00 (9 Feb 2023)

๐Ÿšจ Breaking Changes

  • Add disambiguation option to phase_cross_correlation (skimage 0.20 feature) (#486) @grlee77

๐Ÿ› Bug Fixes

๐Ÿ“– Documentation

๐Ÿš€ New Features

  • Add colocalization measures (#488) @grlee77
  • Add disambiguation option to phase_cross_correlation (skimage 0.20 feature) (#486) @grlee77

๐Ÿ› ๏ธ Improvements

cuCIM 22.12.00 (8 Dec 2022)

๐Ÿšจ Breaking Changes

  • Implement additional deprecations carried out for scikit-image 0.20 (#451) @grlee77
  • improved implementation of ridge filters (bug fixes and reduced memory footprint) (#423) @grlee77

๐Ÿ› Bug Fixes

  • pin to cmake !3.25.0 on CI to avoid bug with CUDA+conda during build (#444) @grlee77
  • update incorrect argument and deprecated function for tifffile.TiffWriter (#433) @JoohyungLee0106
  • Fix rotate behavior for ndim > 2 (#432) @grlee77

๐Ÿ“– Documentation

  • add whole-slide tiled read/write demos for measuring GPUDirect Storage (GDS) I/O performance (#452) @grlee77
  • Add demo for distance_transform_edt (#394) @grlee77

๐Ÿš€ New Features

  • Support no-compression method in converter (#443) @gigony
  • add three segmentation metrics (#425) @grlee77
  • add isotropic binary morphology functions (#421) @grlee77
  • Add blob feature detectors (blob_dog, blob_log, blob_doh) (#413) @monzelr

๐Ÿ› ๏ธ Improvements

  • additional minor updates (skimage 0.20) (#455) @grlee77
  • Implement additional deprecations carried out for scikit-image 0.20 (#451) @grlee77
  • Faster hessian_matrix_* and structure_tensor_eigvals via analytical eigenvalues for the 3D case (#434) @grlee77
  • use fused kernels to reduce overhead in corner detector implementations (#426) @grlee77
  • Misc updates for consistency with scikit-image 0.20 (#424) @grlee77
  • improved implementation of ridge filters (bug fixes and reduced memory footprint) (#423) @grlee77
  • analytical moments computations, support pixel spacings in moments and regionprops (#422) @grlee77
  • Forward merge branch-22.10 to branch-22.12 (#420) @grlee77
  • Support sampling kwarg for distance_transform_edt (take pixel/voxel sizes into account) (#407) @grlee77
  • Improve performance of Euclidean distance transform (#406) @grlee77

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

cucim-23.4.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (9.7 MB view details)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

File details

Details for the file cucim-23.4.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for cucim-23.4.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 644dffca7efa3b52bcd121e12a3e20a45037117c020796af179e3be83b77ac3c
MD5 344a89a7567e68fd29bd0d85bed013ab
BLAKE2b-256 9da82a31a24ea71815bc0ba2c1033770b9d91721cd289209b5ce3bb62a737659

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page