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.
Installation
- Get a python environment, e.g. via mini-conda
- Install pyopencl.
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))
More examples can be found in the /demo/
directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyclesperanto_prototype-0.4.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6cbf6dd6bdaf319b4affb3de6a0db42df52b6860c1f480f66789dd7fd776145 |
|
MD5 | 2c2a4b699ac6c2d45b381beb545dba27 |
|
BLAKE2b-256 | bee5c98dbb816d40fe2f524f55dca5e26ce5f06ae7854f5158fe4a92965bc57e |
Hashes for pyclesperanto_prototype-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c77e3bfade2283e444567d19b22a191e465cdc19ee7e630ed4c8c8affb894592 |
|
MD5 | 0154322371d4d7626348f98d8a76c53f |
|
BLAKE2b-256 | 958c37b10c3c9bc6d6dd2207ec7780d9383b359e33c21ec47fb324e6ce0216cf |