Algorithms for Embedded Computer Vision
Click HERE for additional resources
Software or hardware, focusing on pixel-level processing
Most computer vision algorithms were developed on general-purpose computer systems with software written in a high-level language. Some of the pixel-processing operations (ex: spatial filtering) have changed very little in the decades since they were first implemented on mainframes. With embedded vision, existing high-level algorithms may not fit within the system constraints and require new innovation to achieve the desired results. Some of this innovation may involve replacing a software-based algorithm with a hardware-accelerated equivalent. With such a broad range of programmable devices for embedded vision, most of the EVA algorithm analysis will likely focus on ways to maximize pixel-level processing within the constraints of embedded systems.
High-level conceptual algorithms and hardware optimization algorithms
The EVA algorithm definition refers to both high-level conceptual operations (ex: edge detection) as well as hardware-specific optimizations (ex: parallel adaptive filtering in an FPGA). There are many sources for non-hardware-specific algorithms, and the EVA will become yet another. However, the Embedded Vision Alliance has an opportunity to become one of the best industry resources for learning about algorithms that map to specific embedded hardware, since the EVA Members will be sharing this information directly with the EVA community.
Non-Hardware-Specific Computer Vision Algorithms:
One of the most-popular resources for computer vision algorithms is the OpenCV Library¹. This library is open-source and is described in a book that should be the first stop for anyone new to computer vision. The current version of the library is written in C, but a C++ version is on the way, according to Gary Bradski, the creator of OpenCV (watch the video of our conversation with Gary Bradski).
For an excellent online source for technical articles and research in computer vision algorithms, Robert Fisher of the University of Edinburgh has compiled a large library of reference material².
Hardware-Optimized Computer Vision Algorithms
Several vendors of programmable devices have created optimizations for off-the-shelf computer vision libraries, such as OpenCV and MathWorks Vision System Toolbox. For instance, nVidia works closely with the OpenCV community and has created algorithms that are accelerated by GPGPUs. MathWorks provides MATLAB functions/objects and Simulink blocks for many computer vision algorithms, while also alllowing vendors to create their own library of functions that are optimized for a specific programmable architecture.
Xilinx is an example of a vendor with an optimized computer vision library that is provided to customers as Plug and Play IP cores for creating hardware-accelerated vision algorithms in an FPGA. The Xilinx IP blocks for vision-related applications are described in more detail here.
Member Product Information: Video showing OpenCV face-tracking with Freescale i.MX
Other Vision Libraries:
Matrox Imaging Library (MIL): http://www.physimetrics.com/pdfs/mil8.pdf
Cognex VisionPro: http://www.cognex.com/VISIONPRO/
National Instruments also has a LabView Vision module library: http://www.ni.com/vision/software/
Technical Papers on Embedded Vision Algorithms:
Some additional non-commercial vision libraries to consider: