Motion estimation in an image sequence has many potential uses such as detecting and tracking moving objects. However, one potential drawback to its use is the computation time needed to run the motion estimation software.
Seeking to accelerate the process, researchers from the Illinois Institute of Technology (Chicago, IL, USA) have taken a general purpose block-matching algorithm which is commonly used for motion estimation and ported it to run on multiple NVIDIA (Santa Clara, CA, USA) GPU cards using the Compute Unified Device Architecture (CUDA) computing engine.
Their intention in doing so was twofold -- to develop a fast and accurate motion estimation for use in real-time video sequence processing and to develop a good case example for understanding the CUDA environment with use of single or multiple GPU cards.
At the present time, the implementation is suitable for processing a surveillance video at 720× 480 pixel resolution at 30 fps (real-time) using two NVIDIA C1060 Tesla GPU cards, outperforming the same outperforming the same CPU implementations by several orders of magnitude.
For the purpose of testing the proposed GPU implementation by a wider audience, the researchers created an executable demo for Windows OS using the OpenCV library.
The demo program will perform video capturing and streaming, at 360 × 240 pixels resolution and 30 fps, through the Internet from the users camera to the GPU server. The server performs real-time motion estimation and return estimated motion field, which is displayed on the user's screen. The demo can be downloaded here.
The researchers detailed their work extensively in a technical article entitled "Compute-unified device architecture implementation of a block-matching algorithm for multiple graphical processing unit cards." It can be downloaded here.
Recent related articles on parallel processing from Vision Systems Design.
1. Vision could benefit from parallel computing standard
In an effort to make it easier for programmers to take advantage of parallel processing hardware, Nvidia, Cray, the Portland Group (PGI), and CAPS enterprise have developed a new parallel-programming standard known as OpenACC.
2. MIT researchers develop new programming language for image processing
Researchers at MIT's Computer Science and Artificial Intelligence Laboratory (CSAIL; Cambridge, MA, USA) aim to make writing image-processing algorithms easier with a new programming language called Halide.
3. Software tool parallelizes imaging code for multi-core processors
Engineers at Vector Fabrics (Eindhoven, The Netherlands) have built a tool to analyze and optimize source code for multi-core processors. As a test case, they have optimized an OpenCV image processing algorithm written in C++ and made the results available as an Android App.
-- Dave Wilson, Senior Editor, Vision Systems Design