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.10.00 (11 Oct 2023)

๐Ÿ› Bug Fixes

  • Use conda mambabuild not mamba mambabuild (#607) @bdice

๐Ÿ“– Documentation

๐Ÿ› ๏ธ Improvements

cuCIM 23.08.00 (9 Aug 2023)

๐Ÿšจ Breaking Changes

  • Sync cuCIM API with scikit-image 0.21 (#573) @grlee77
  • The random_state argument of medial_axis and unsupervised_wiener is now deprecated and will be removed in the future. The new argument name, seed, should be used instead. (#573) @grlee77
  • The existing function cucim.skimage.color.get_xyz_coords has been renamed cucim.skimage.color.xyz_tristimulus_values. The former function name is deprecated and will be removed in the future. (#573) @grlee77

๐Ÿ› Bug Fixes

  • Remove libwebp-base upper bound. (#599) @bdice
  • Fix ignore_run_exports_from. (#596) @bdice
  • Add ignore_run_exports for CUDA 11 (#593) @raydouglass
  • Use linalg & inline _get_manders_overlap_coeff (#578) @jakirkham
  • Fix canny and butterworth (recent CuPy and NumPy compatibility) (#574) @grlee77
  • A bug was fixed in 2D shear calculations for AffineTransform. (#573) @grlee77
  • A bug was fixed in the energy calculation of cucim.skimage.segmentation.chan_vese. This fix may result in different output from previous versions. (#573) @grlee77

๐Ÿ› ๏ธ Improvements

  • The formerly private function _invariant_denoise has been renamed denoise_invariant and is now part of the public cucim.skimage.restoration API (#573) @grlee77
  • A new return_mapping option was added to cucim.skimage.segmentation.join_segmentations. This provides an additional output with a mapping between the labels in the joined segmentation and the original ones. (#573) @grlee77
  • Added support for y-axis shear to the 2D AffineTransform. (#573) @grlee77
  • Postponed the assessment of GPU memory for testing (#601) @gigony
  • Do not use x86_64 GDS binaries for aarch64 (#590) @gigony
  • remove checks for versions of scikit-image that are no longer supported (#587) @grlee77
  • Allow scikit-image 0.21.0 (#580) @jakirkham
  • Drop unneeded selector on libwebp-base (#579) @jakirkham
  • switch from bundled lazy loading code to the public lazy_loader package (#575) @grlee77
  • Sync cuCIM API with scikit-image 0.21 (#573) @grlee77
  • cuCIM: Build CUDA 12 packages (#572) @jakirkham
  • use rapids-upload-docs script (#570) @AyodeAwe
  • Remove documentation build scripts for Jenkins (#567) @ajschmidt8

cuCIM 23.06.00 (7 Jun 2023)

๐Ÿšจ Breaking Changes

๐Ÿ› Bug Fixes

  • Fix SHA256 check failure in test suite (#564) @grlee77
  • Handle space character in ./run download_testdata (#556) @gigony
  • Fix return_error=&#39;always&#39; behavior in phase_cross_correlation (#549) @grlee77
  • Only load versioned libcufile (#548) @jakirkham
  • add a 20 minute timeout for pytest runs on CI (#545) @grlee77
  • protect against possible out of bounds memory access in 2D distance transform (#540) @grlee77

๐Ÿ“– Documentation

  • Fix doc building via run build_package (#553) @grlee77
  • update changelog for release 23.04.00 and 23.04.01 (#552) @grlee77

๐Ÿ› ๏ธ Improvements

cuCIM 23.04.01 (14 Apr 2023)

๐Ÿ› ๏ธ Improvements

cuCIM 23.04.00 (6 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.10.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (9.7 MB view hashes)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

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