FLCC: Fast computation of Local Correlation Coefficients
The FLCC Library (which stands for Fast Local Correlation Coefficients) is a programming tool that provides an interface for the fast computation of two fundamental image processing operations: the distribution of Correlation Coefficients with Local Normalization (also known as LCCs) and the sum of Convolution, between an image (or a stream of images) and an image template. Generally speaking, LCCs and Convolution are basic image-based information processing steps that find numerous applications in a wide spectrum of areas concerning image processing, such as template or pattern matching, image registration, motion detection, computer vision and many more. However, these operations (especially LCCs) have always been considered of high arithmetic complexity and time consuming, particularly for real-time applications, thus making their usage rather troublesome.
This library intends to overcome this problem and provide users with a simple yet powerful interface for carrying out the computations under consideration. Especially in the case of LCCs, many implementations so far have tried to reduce computation time by sacrificing the local normalization characteristic of the LCCs or approximating the result in other lossy ways. This library, though, manages to reduce computation time to a minimum, yet without making any compromises on the quality of the result. The user can be sure that the output result is accurately the “real” LCC distribution in any case, as exactly it is defined formally.
The performance benefit is achieved by two routes. On the one hand, the library implements a set of optimized fast algorithms for computing LCCs or convolutions, selecting the most appropriate for each case, depending on the size of the input images and templates and the capability of the machine it runs on. On the other hand, it fully exploits current top-notch architectures, namely multicore CPU processors and manycore GPU devices. In other words, the library takes advantage of the system's computational resources, executing in parallel on multiple CPU threads or having the work load carried out by the powerful GPU devices of the system (according to what it deems to be faster).
The FLCC Library Version 1.2, although being fully operational, is still in a stage of infancy and more features are sure to be added in the future. For now, FLCC Library Version 1.2 features:
- Fast LCC computation of 2D and 3D images of any size
- Fast Convolution computation of 2D and 3D images of any size
- Single-precision arithmetic (we will expand to double-precision in the future)
- Accelerated LCC or Convolution computation of a stream of images with the same template
- Ability to execute parallel computations on multiple CPUs or (currently one) GPU
Current version 1.2 compiles under Linux or Windows (via Cygwin).
- This is a self hosted fossil repository.