With the advent of hardware accelerated graphics card, the ability to perform parallelizable tasks on the graphics card makes it
easy to accelerated common image processing tasks. NVIDIA's Cg (C for Graphics) language allows the ability to write high level programs (shaders) that
allow access to graphics memory. The strength of using Cg, when it was introduced, was the seamless integration with OpenGL and DirectX and allowed
for easy interaction with the graphics hardware. With the availabilty of CUDA, and OpenCL now, the graphics cards are more accessible and allow for
parallelization of time consuming computationally expensive tasks. A CUDA-based version of this utility is in the works and shall be available shortly.