A blazingly fast, cross-platform library to create stunning kaleidoscope effects on images
Built with โค๏ธ using C, C++, Python, and CUDA
LibKaleidoscope is a high-performance, cross-platform library that transforms ordinary images into breathtaking kaleidoscope patterns. Written in C with FFI support, it offers seamless integration with multiple programming languages and includes GPU acceleration for ultimate performance.
๐ Learn More: Check out the mathematical explanation of the kaleidoscope effect!
| ๐ Performance | ๐ Multi-Language | ๐จ Easy to Use | โก GPU Accelerated |
|---|---|---|---|
| Ultra-fast processing with optimized algorithms | C, C++, Python, CUDA support | Simple 3-function API | CUDA backend for maximum speed |
๐ Click to see language details
| Language | Purpose | Features |
|---|---|---|
| ๐ง C | Main programming language | Core library, maximum performance |
| โก C++ | Header-only binding | Easy integration, STL compatibility |
| ๐ Python | Cython bindings | PyPI package, Pythonic interface |
| ๐ CUDA | GPU computing | Parallel processing, extreme performance |
# ๐ One-liner installation from PyPI
pip install LibKaleidoscope๐ก Pro Tip: Check
python/python-test.pyfor example usage!
๐๏ธ Standard Build
# ๐ Quick build commands
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --parallelโก CUDA-Enabled Build
โ ๏ธ IMPORTANT: CUDA Toolkit must be installed and available on your system before building with CUDA support. Download from NVIDIA Developer.
# ๐ฅ GPU-accelerated build
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DKALEIDOSCOPE_ENABLE_CUDA=ON ..
cmake --build . --parallel๐ง Custom Build Options
# ๐๏ธ Disable command line tool (reduces dependencies)
cmake -DCMAKE_BUILD_TYPE=Release -DKALEIDOSCOPE_ENABLE_CMD_TOOL=OFF ..๐ Note: The libjpeg-turbo dependency is only for testing and demo purposes
LibKaleidoscope makes image transformation incredibly simple with just 3 functions:
flowchart LR
A[๐ฏ Initialize] --> B[๐จ Process] --> C[๐งน Cleanup]
B --> B
๐ C API Reference
| Step | Function | Purpose |
|---|---|---|
| 1๏ธโฃ | initKaleidoscope() |
Initialize transformation matrix |
| 2๏ธโฃ | processKaleidoscope() |
Process images (reusable for same dimensions) |
| 3๏ธโฃ | deInitKaleidoscope() |
Clean up resources |
// ๐ฏ Step 1: Initialize
int initKaleidoscope(KaleidoscopeHandle *handler, int n, int width, int height, double scaleDown);
// ๐จ Step 2: Process (use multiple times)
void processKaleidoscope(KaleidoscopeHandle *handler, double k, unsigned char *imgIn, unsigned char *imgOut);
// ๐งน Step 3: Cleanup
void deInitKaleidoscope(KaleidoscopeHandle *handler);๐ Example: Check
src/kaleidoscope-cmd.cfor complete usage
Transform images instantly with the command line tool:
# โจ Create kaleidoscope effect (N=8 segments)
./kaleidoscope-cmd <Input_Image> <Output_Image> <N>โก C++ Header-Only Binding
#include <kaleidoscope.hpp>
int main() {
// ๐ฏ One-line initialization with all parameters
kalos::Kaleidoscope handler(n, width, height, nComponents, scaleDown, k);
// ๐จ Process your image data
handler.processImage(inData, outData, nPixel);
// ๐งน Automatic cleanup when handler goes out of scope
return 0;
}๐ Advantage: RAII-style resource management, exception safety
๐ฅ CUDA GPU Backend
#include <cuda/kaleidoscope.cuh>
int main() {
// ๐ GPU-accelerated kaleidoscope
kalos::cuda::Kaleidoscope handler(n, width, height, nComponents, scaleDown, k);
// โก Ultra-fast GPU processing
// โ ๏ธ Important: inData and outData must be device-allocated!
handler.processImage(inData, outData, nPixel);
return 0;
}๐ก Performance Tip: Ensure your data is allocated on GPU memory for maximum speed
๐งช Examples: See
tests/processingTest.cppandtests/processingTest.cufor complete implementations
Hardware: Intel i7-11800H CPU
| ๐ฅ Resolution | ๐ FPS | ๐ฏ Use Case |
|---|---|---|
| ๐ฅ 4K UHD (3840ร2160) | ~65 FPS | Professional video editing |
| ๐ฌ Full HD (1920ร1080) | ~265 FPS | Real-time streaming |
| ๐บ 720p (1280ร720) | ~640 FPS | Gaming overlays |
| ๐ฑ 576p (720ร576) | ~1350 FPS | Mobile apps |
๐ฌ Mathematical Formula
The performance follows an exponential decay model:
Where:
$a = 2492$ $b = -2.165 \times 10^{-6}$ $c = 364.9$ $d = -2.08 \times 10^{-7}$
# ๐ฏ Test performance on your hardware
./kaleidoscope-cmd <Input_Image> <Output_Image> <N> <Number_of_loops>
โ ๏ธ Important: Use-DCMAKE_BUILD_TYPE=Releasefor accurate benchmarks
We welcome contributions! Please feel free to submit issues, feature requests, or pull requests.
This project is licensed under the terms of MIT License.
Made with โค๏ธ by egecetin