Skip to main content

High-performance image processing functions for deep learning and computer vision.

Project description

Albucore: High-Performance Image Processing Functions

Albucore is a library of optimized atomic functions designed for efficient image processing. These functions serve as the foundation for AlbumentationsX, a popular image augmentation library.

Overview

Image processing operations can be implemented in various ways, each with its own performance characteristics depending on the image type, size, and number of channels. Albucore aims to provide the fastest implementation for each operation by leveraging different backends such as NumPy, OpenCV, and custom optimized code.

Key features:

  • Optimized atomic image processing functions
  • Automatic selection of the fastest implementation based on input image characteristics
  • Seamless integration with Albumentations
  • Extensive benchmarking for performance validation

GitAds Sponsored

Sponsored by GitAds

Installation

pip install albucore

Usage

import numpy as np
import albucore

# Create a sample RGB image
image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)

# Apply a function
result = albucore.multiply(image, 1.5)

# For grayscale images, ensure the channel dimension is present
gray_image = np.random.randint(0, 256, (100, 100, 1), dtype=np.uint8)
gray_result = albucore.multiply(gray_image, 1.5)

Albucore automatically selects the most efficient implementation based on the input image type and characteristics.

Shape Conventions

Albucore expects images to follow specific shape conventions, with the channel dimension always present:

  • Single image: (H, W, C) - Height, Width, Channels
  • Grayscale image: (H, W, 1) - Height, Width, 1 channel
  • Batch of images: (N, H, W, C) - Number of images, Height, Width, Channels
  • 3D volume: (D, H, W, C) - Depth, Height, Width, Channels
  • Batch of volumes: (N, D, H, W, C) - Number of volumes, Depth, Height, Width, Channels

Important Notes:

  1. Channel dimension is always required, even for grayscale images (use shape (H, W, 1))
  2. Single-channel images should have shape (H, W, 1) not (H, W)
  3. Batches and volumes are treated uniformly - a 4D array (N, H, W, C) can represent either a batch of images or a 3D volume

Examples:

import numpy as np
import albucore

# Grayscale image - MUST have explicit channel dimension
gray_image = np.random.randint(0, 256, (100, 100, 1), dtype=np.uint8)

# RGB image
rgb_image = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)

# Batch of 10 grayscale images
batch_gray = np.random.randint(0, 256, (10, 100, 100, 1), dtype=np.uint8)

# 3D volume with 20 slices
volume = np.random.randint(0, 256, (20, 100, 100, 1), dtype=np.uint8)

# Batch of 5 RGB volumes, each with 20 slices
batch_volumes = np.random.randint(0, 256, (5, 20, 100, 100, 3), dtype=np.uint8)

Functions

Albucore includes optimized implementations for various image processing operations, including:

  • Arithmetic operations (add, multiply, power)
  • Normalization (per-channel, global)
  • Geometric transformations (vertical flip, horizontal flip)
  • Helper decorators (to_float, to_uint8)

Batch Processing

Many functions in Albucore support batch processing out of the box. The library automatically handles different input shapes:

  • Single images: (H, W, C)
  • Batches: (N, H, W, C)
  • Volumes: (D, H, W, C)
  • Batch of volumes: (N, D, H, W, C)

Functions will preserve the input shape structure, applying operations efficiently across all images/slices in the batch.

Decorators

Albucore provides several useful decorators:

  • @preserve_channel_dim: Ensures single-channel images maintain their shape (H, W, 1) when OpenCV operations might drop the channel dimension
  • @contiguous: Ensures arrays are C-contiguous for optimal performance
  • @uint8_io and @float32_io: Handle automatic type conversions for functions that work best with specific data types

Performance

Albucore uses a combination of techniques to achieve high performance:

  1. Multiple Implementations: Each function may have several implementations using different backends (NumPy, OpenCV, custom code).
  2. Automatic Selection: The library automatically chooses the fastest implementation based on the input image type, size, and number of channels.
  3. Optimized Algorithms: Custom implementations are optimized for specific use cases, often outperforming general-purpose libraries.

License

MIT

Acknowledgements

Albucore is part of the AlbumentationsX project. We'd like to thank all contributors to AlbumentationsX and the broader computer vision community for their inspiration and support.

Project details


Download files

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

Source Distribution

albucore-0.0.33.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

albucore-0.0.33-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file albucore-0.0.33.tar.gz.

File metadata

  • Download URL: albucore-0.0.33.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for albucore-0.0.33.tar.gz
Algorithm Hash digest
SHA256 de320e50587ceb5286125ed4abfdf802a2a7de00c8ce5b042b63e015574b4f76
MD5 b1d711c13ae8f7b604485fce54d057a5
BLAKE2b-256 a18d30c8ab7a7de9a5fa11fcd0d6f2475c87e9aa78b861bc2eacbcdf59e2a49e

See more details on using hashes here.

File details

Details for the file albucore-0.0.33-py3-none-any.whl.

File metadata

  • Download URL: albucore-0.0.33-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for albucore-0.0.33-py3-none-any.whl
Algorithm Hash digest
SHA256 49b4cc573fcbded24b8729f752694b5abb876dbdc56df530b62db44d4d079de8
MD5 8a9a197282545b1b0277cbf2d2503035
BLAKE2b-256 1cf03537fa2ae1c3af09503e5e7f30614edcb0518851e3cd5a84eea749ff02da

See more details on using hashes here.

Supported by

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