Code that can be easily parallelized into many threads have been streaming over to the GPU with many applications and helper libraries taking advantage of CUDA and OpenCL primarily. Thus for developers who wish to utilize the GPU more but are unsure where to start there are more and more options for libraries of functions to call and at least partially embrace their video cards. OpenCV is a library of functions for image manipulation and, while GPU support is ongoing through CUDA, primarily runs on the CPU. CUVIlib, which has just launched their 0.5 release, is a competitor to OpenCV with a strong focus on GPU utilization, performance, and ease of implementation. While OpenCV is licensed as BSD which is about as permissive a license as can be offered, CUVI is not and is based on a proprietary EULA.
Benchmark KLT – CUVILib from TunaCode on Vimeo.
Benchmark KLT – OpenCV from TunaCode on Vimeo.
The little plus signs are the computer tracking motion. CUVI (top; 33fps), OpenCV (bottom; 2.5fps)
(Video from CUVIlib)
Despite the proprietary and non-free for commercial use nature of CUVI they advertise large speedups for certain algorithms. For their Kanade-Lucas-Tomasi Feature Tracker algorithm when compared with OpenCV’s implementation they report a three-fold increase in performance with just a GeForce 9800GT installed and 8-13x faster when using a high end computing card such as the Tesla C2050. Their feature page includes footage of two 720p high definition videos undergoing the KLT algorithm with the OpenCV CPU method chugging at 2.5 fps contrasted with CUVI’s GPU-accelerated 33fps. Whether you would prefer to side with OpenCV’s GPU advancements or pay CUVIlib to augment what OpenCV is not good enough for your needs at is up to you, but either future will likely involve the GPU.