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
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
Metadata Files
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
- Website: clEsperanto.net
- Repositories: 16
- Profile: https://github.com/clEsperanto
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)