A collection of image filters, parallelizable via a custom multithreader.
Cezanne provides a set of various filters which you can use off the shelf via direct requires, or as a parameter to the custom parallelizer system.
Note
Ironically, the parallelizer system seems to be slower than direct requires (which are singlethreaded by nature). While this remains a persistent problem, please refrain from using the multithreader. This note will be removed once the problem is resolved or discontinued as a whole.
All filters provided by the repository have a common function signature, being:
(ImageSize: vector, InputImage: buffer, OutputImage: buffer, ...: any) -> ()where ...: any is a placeholder for parameters unique to the filter's functionality. All valid Cezanne filters (i.e. filters that can be passed as a parameter to the custom multithreader) must have these parameters, with their order and arity retained.
The following are the image filters implemented by the repository at filters. As of now, data regarding their implementation status in the only data visible. Data such as their average time taken and example images showcasing their visual output, are yet to be added.
| Feature | Implementation Status |
|---|---|
| Greyscale | ✓ |
| Mean Blur | ✓ |
| Gaussian Blur | ✓ |
| Kuwahara | ✓ |
| Sobel Edge | ✓ |
| Gaussian Edge | ✓ |
| Extended Difference of Gaussians | ✓ |
| Monochromatic Error-Diffused Dithering | ✓ |
| Chromatic Error-Diffused Dithering | ✓ |
| Error-Diffused Palette Quantizer | ✓ |
[1] The name was based on the famous still-life painter, Paul Cézanne.
[2] This project actually started on the late August of 2024 and was set to be finished and released to the public on September, but was postponed as school had just started again and development had to be pulled back a bit. I also started to gain interest in other more complex subjects to program around this time, which distracted me away.