Skip to main content

OpenCL based GPU-accelerated image processing (an early prototype)

Project description

pyclesperanto

pyclesperanto is a prototype for clEsperanto - a multi-platform multi-language framework for GPU-accelerated image processing. It uses OpenCL kernels from CLIJ

Right now, this is very preliminary.

Reference

The full reference is available as part of the CLIJ2 documentation.

Installation

If installation of pyopencl for Windows fails, consider downloading a precompiled wheel (e.g. from here ) and installing it manually:

pip install pyopencl-2019.1.1+cl12-cp37-cp37m-win_amd64.whl

Afterwards, install pyclesperanto:

pip install pyclesperanto-prototype

Troubleshooting installation

If you receive an error like

DLL load failed: The specified procedure could not be found.

Try downloading and installing a pyopencl with a lower cl version, e.g. cl12 : pyopencl-2020.1+cl12-cp37-cp37m-win_amd64

Example code

A basic image procressing workflow loads blobs.gif and counts the number of gold particles:

import pyclesperanto_prototype as cle

from skimage.io import imread, imsave

# initialize GPU
cle.select_device("GTX")
print("Used GPU: " + cle.get_device().name)

# load data
image = imread('https://imagej.nih.gov/ij/images/blobs.gif')
print("Loaded image size: " + str(image.shape))

# push image to GPU memory
input = cle.push(image)
print("Image size in GPU: " + str(input.shape))

# process the image
inverted = cle.subtract_image_from_scalar(image, scalar=255)
blurred = cle.gaussian_blur(inverted, sigma_x=1, sigma_y=1)
binary = cle.threshold_otsu(blurred)
labeled = cle.connected_components_labeling_box(binary)

# The maxmium intensity in a label image corresponds to the number of objects
num_labels = cle.maximum_of_all_pixels(labeled)

# print out result
print("Num objects in the image: " + str(num_labels))

# for debugging: print out image
print(labeled)

# for debugging: save image to disc
imsave("result.tif", cle.pull(labeled))

Example gallery

Select GPU

Counting blobs

Crop and paste images

Inspecting 3D image data

Multiply vectors and matrices

Matrix multiplication

Working with spots, pointlist and matrices

Voronoi diagrams

Tribolium morphometry + Napari

Tribolium morphometry

Napari+Dask Timelapse processing

Napari Particle Analyser

Feedback welcome!

clEsperanto is developed in the open because we believe in the open source community. Feel free to drop feedback as github issue or via image.sc

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

pyclesperanto_prototype-0.5.0.tar.gz (82.7 kB view hashes)

Uploaded Source

Built Distribution

pyclesperanto_prototype-0.5.0-py3-none-any.whl (300.4 kB view hashes)

Uploaded Python 3

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