Note that I have started some image manipulation low-level primitives and also 
benchmarks in Impulse 
[https://github.com/SciNim/impulse](https://github.com/SciNim/impulse)

For example to apply an image filter I have benchmarked 5 low-level primitives 
here: 
[https://github.com/SciNim/impulse/blob/26e25e70/benchmarks/image_filters/filter2d_separable.nim](https://github.com/SciNim/impulse/blob/26e25e70/benchmarks/image_filters/filter2d_separable.nim),
 and the same with parallel implementation via Weave here: 
[https://github.com/SciNim/impulse/blob/26e25e70/benchmarks/image_filters/filter2d_separable_parallel.nim](https://github.com/SciNim/impulse/blob/26e25e70/benchmarks/image_filters/filter2d_separable_parallel.nim)

Besides, I've also added a RGB to YUV420 / Y'CbCr conversion to 
Trace-of-Radiance here with BT601 color matrix support (Jpeg and BT.709 for HD 
video is straightforward) 
[https://github.com/mratsim/trace-of-radiance/blob/99f7d85d/trace_of_radiance/io/color_conversions.nim](https://github.com/mratsim/trace-of-radiance/blob/99f7d85d/trace_of_radiance/io/color_conversions.nim)

In general I don't mind adding pure Nim primitives, potentially parallelized 
and vectorized for high-level image libraries provided I know what you need ;) 
(though my ultimate goal is to have something like Halide in pure Nim 
[https://halide-lang.org](https://halide-lang.org)/ instead of 2 stages 
code-generation).

I.e. you can raise an issue on your need in Impulse 
[https://github.com/SciNim/impulse](https://github.com/SciNim/impulse).

I've also wrapped PocketFFT C++ which provides multidimensional parallel FFTs 
(complex and real), DCT and DST (Discret Cosine Transform and Discrete Sine 
Transform) here though still wondering about the high level API: 
[https://github.com/SciNim/impulse/blob/26e25e70/impulse/fft/pocketfft.nim](https://github.com/SciNim/impulse/blob/26e25e70/impulse/fft/pocketfft.nim)
 I tried to implement a FFT in one weekend™ but it's too complex for a weekend 
task. If you're interested in resurrecting that code, that commits has a 
skeleton and plenty of documentation to build your own high performance FFT: 
[https://github.com/SciNim/impulse/tree/49b81323/impulse/fft](https://github.com/SciNim/impulse/tree/49b81323/impulse/fft)

I do think there is quite an interest in image procesing in Nim so maybe a new 
channel on the Discord or a Gitter channel might have enough interest?

Reply via email to