https://github.com/clesperanto/clij-opencl-kernels

https://github.com/clesperanto/clij-opencl-kernels

Science Score: 39.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.5%) to scientific vocabulary

Keywords

image-processing opencl
Last synced: 5 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: clEsperanto
  • License: other
  • Language: C
  • Default Branch: master
  • Size: 594 KB
Statistics
  • Stars: 17
  • Watchers: 3
  • Forks: 4
  • Open Issues: 10
  • Releases: 8
Topics
image-processing opencl
Created over 6 years ago · Last pushed 8 months ago
Metadata Files
Readme License

README.md

clij-opencl-kernels

This repository contains a collection of OpenCL kernels for image processing. The CLIJ is build on top of it allowing ImageJ / Fiji users in doing GPU-accelerated image processing without the need for learning OpenCL.

If you use it, please cite it:

Robert Haase, Loic Alain Royer, Peter Steinbach, Deborah Schmidt, Alexandr Dibrov, Uwe Schmidt, Martin Weigert, Nicola Maghelli, Pavel Tomancak, Florian Jug, Eugene W Myers. CLIJ: GPU-accelerated image processing for everyone. Nat Methods (2019) doi:10.1038/s41592-019-0650-1

Why a custom OpenCL-dialect?

OpenCL offers several pixel types, such as uint8, unit16 and float. Theoretically, one has to write OpenCL-kernels specifically for given input- and output-images, such as a kernel for adding images of type float resulting in a float image and a kernel for adding image of type uint8 resulting in an image of type float. Furthermore, OpenCL defines images and buffers. However, as both are arrays of pixel intensities in memory, we wanted to access them in a unified way. As this would result in a ridiculous large number of individual kernel implementations, we used a dialect where placeholders such as IMAGE_src_PIXEL_TYPE represent the pixel type of the output image.

List of placeholders

The following list of placeholders are used at the moment. The name imagename must contain src or dst to differentiate readonly and writeonly images.

Place holder Replacement during runtime
CONVERTimagenamePIXELTYPE
clijconvertcharsat
clijconvertucharsat
clijconvertshortsat
clijconvertushortsat
clijconvertintsat
clijconvertuintsat
clijconvertfloatsat
Convert any number to a given type.
IMAGEimagenameTYPE
_readonly image3dt
_readonly image2dt
_writeonly image2dt
_writeonly image3dt
_global char*
_global uchar*
_global short*
_global ushort*
_global float*
Two dimensional input image type definition.
IMAGEimagenamePIXELTYPE
char
uchar
short
ushort
float
Pixel type definition
GETIMAGEDEPTH(imagename)
constant number Image size in Z
GETIMAGEHEIGHT(imagename)
constant number Image size in Y
GETIMAGEWIDTH(imagename)
constant number Image size in X
POSimagenameTYPE
int2
int4
Type of coordinate
POSimagenameINSTANCE(pos0,pos1,pos2,pos3)
int2(pos0, pos1)
int4(pos0,pos1,pos2,pos3)
instantiate variable of coordinate
READimagenameIMAGE
readimageui (2d)
<a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/readimagef2d.html">readimagef (2d)
readbuffer2dc
readbuffer2duc
readbuffer2di
readbuffer2dui
readbuffer2df
readimageui (3d)
<a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/readimagef3d.html">readimagef (3d)
readbuffer3dc
readbuffer3duc
readbuffer3di
readbuffer3dui
readbuffer3df
Read pixel intensity from a given position
WRITEimagenameIMAGE
writeimageui (2d)
<a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/writeimage2d.html">writeimagef (2d)
writebuffer2dc
writebuffer2duc
writebuffer2di
writebuffer2dui
writebuffer2df
writeimageui (3d)
<a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/writeimage3d.html">writeimagef (3d)
writebuffer3dc
writebuffer3duc
writebuffer3di
writebuffer3dui
writebuffer3df
Write pixel intensity to a given position

Known issues

  • Image dimensionality is limited to three dimensions.

Acknowledgements

We acknowledge support by the Deutsche Forschungsgemeinschaft under Germany’s Excellence Strategy (EXC2068) Cluster of Excellence Physics of Life of TU Dresden. This project has been made possible in part by grant number 2021-237734 (GPU-accelerating Fiji and friends using distributed CLIJ, NEUBIAS-style, EOSS4) from the Chan Zuckerberg Initiative DAF, an advised fund of the Silicon Valley Community Foundation.

Owner

  • Name: clEsperanto
  • Login: clEsperanto
  • Kind: organization

GPU-accelerated image processing across languages and platforms

GitHub Events

Total
  • Create event: 12
  • Release event: 9
  • Issues event: 3
  • Watch event: 4
  • Delete event: 9
  • Issue comment event: 1
  • Push event: 43
  • Pull request event: 10
Last Year
  • Create event: 12
  • Release event: 9
  • Issues event: 3
  • Watch event: 4
  • Delete event: 9
  • Issue comment event: 1
  • Push event: 43
  • Pull request event: 10

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: 26 days
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.33
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: 26 days
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.33
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • haesleinhuepf (1)
  • StRigaud (1)
Pull Request Authors
  • StRigaud (7)
  • haesleinhuepf (1)
  • tlambert03 (1)
Top Labels
Issue Labels
bug (2)
Pull Request Labels