The code uses agents as a fundamental concept for concurrent and asynchronous processing of images. Agents are lightweight, concurrent execution units that can receive and process messages independently.
Image processing is a key operation performed on images, which involves applying various transformations. These transformations can include filters like Gaussian blur, sharpening, and flip operations (both horizontal and vertical).
The code supports image processing on both CPU and GPU platforms. CPU processing is done using standard F# functions, while GPU processing utilizes the Brahma.FSharp library to leverage the power of Graphics Processing Units for parallel processing.
There is a UML diagram representing the dependencies between modules: