kaleidoscope
1.4.0
|
The library is written in C language so you can use Foreign Function Interface (FFI) to call functions from your favorite programming language. You can download from python package from PyPI. It also has C++ header only library to provide easier interface for C++ users and CUDA support for people who have doubts about performance. Check for mathematical explanation of the kaleidoscope effect from my webpage
Python users check python/python-test.py in GitHub for basic usage
Use the following commands,
If you want to enable CUDA backend,
There is no direct dependency for libjpeg-turbo inside from the library. It is just for test and demonstration purposes. If you don't want to install/compile just disable command line tool compilation with -DKALEIDOSCOPE_ENABLE_CMD_TOOL=OFF
The library has a simple usage and you need only three functions to use it. Check the sample usage at src/kaleidoscope-cmd.c
int initKaleidoscope(KaleidoscopeHandle *handler, int n, int width, int height, double scaleDown)
void processKaleidoscope(KaleidoscopeHandle *handler, double k, unsigned char *imgIn, unsigned char *imgOut)
void deInitKaleidoscope(KaleidoscopeHandle *handler)
Alternatively you can directly use the command line program to create kaleidoscope effect with ./kaleidoscope-cmd <Input Image Path> <Output Image Path> <N>
. You can see an example below for N=8
For C++ and CUDA usage check the unit tests at tests/processingTest.cpp
and tests/processingTest.cu
. It is very easy! Just include the header and construct the Kaleidoscope
class from kalos
namespace.
It is really fast! On a Intel i7-11800H CPU it achieves,
resolution images. The performance estimation can be seen at the below
$$ FPS = a\text{ }e^{b\text{ }nPixels}+c\text{ }e^{d\text{ }nPixels} $$
$$ a = 2492 \text{, } b = -2.165\text{ }10^{-6} \text{, } c = 364.9 \text{, } d = -2.08\text{ }10^{-7} $$
If you want to benchmark code on your system make sure you configured with -DCMAKE_BUILD_TYPE=Release
and use this command,
./kaleidoscope-cmd <Input Image Path> <Output Image Path> <N> <Number of loop>