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!
This is not a vibe coding project. Project utilizes generative AI tools to create and fix documentation only.
- Tools Used: Github Copilot
- Scope of Use:
- Documentation: Most of the README sections and function descriptions were AI-generated. But only for documentation purposes!
| 🚀 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


