/deconvolution_better

Richardson–Lucy deconvolution with OpenCL

Primary LanguageCGNU General Public License v2.0GPL-2.0

The new and improved Richardson–Lucy deconvolution with OpenCL and FFTW

- added fft's to do integrals on CPU, and OpenCL to do point-wise arithmetic on GPU

- error handling, if exceptions are encountered, functions will clean up after themselves, dealloc all buffers, etc etc, which also allows usage in larger programs without crashing them

- larger programs need only #include "deconvolute.h" and call deconvolute_image(input, psf, output, number of iterations, number of threads to use for fftw)

- probably still has many bugs though, but so far runs smoothly

main.c is example usage of deconvolute_image()

== Usage Notes ==
- input image must be 16-bit RGB TIFF
- psf image must be 8-bit RGB TIFF, due to GIMP limitations, i.e. you open the input image in GIMP, make a white psf (either by tracing one with pencil tool or taking image chunk), make background black, export TIFF (or you can modify source code to allow 16-bit psf if not using GIMP or if you already have a psf)
- output image will be 16-bit RGB TIFF
- due to memory limitations, you may need to scale your image smaller to avoid running out of memory
- all files are needed except the Makefile (you can write your own) and main.c (an example usage of deconvolute_image)
- either #include "deconvolute.h" or declare extern int deconvolute_image(char *, char *, char *, int, int);

== Prerequisites ==
- libc (-lc)
- OpenCL (-lOpenCL)
- libtiff (-ltiff)
- libfftw3 float (instead of double) and multi-thread enabled version (-lfftw3f_threads -lfftw3f -lm -lpthread)