by Chris Halsall
Computer Vision is the science of applying algorithms to still or moving images in order to automatically extract meaningful, reproducible data. Research in the area has been underway for over 30 years and has mostly been concentrated in large, well-funded labs with access to mainframes or specialized hardware because of the extremely intensive computation needed.
In recent years, as everyone knows, Moore's law has continued its exponential march, and consumer-level computing devices have started matching mainframe performance and memory sizes of yesteryear. At the same time, charge-coupled device (CCD) camera technology continues to get better, smaller, and cheaper. This means that some of what used to be confined to the labs is now becoming practical for the home or office.
The applications possible with CV are literally limitless. A few examples include optical character recognition (OCR), handwriting interpretation, gesture recognition, face tracking, security or traffic monitoring, and feature extraction from satellite or aerial photographs. Biometric data can be determined for face, iris, or fingerprint identification. With fast enough processing and stereo cameras, autonomous robots and vehicles become possible.
But despite the increases in raw data processing power available, CV continues to be very difficult, with advances being hard won and the most successful algorithms often being extremely complex. While high-reliability solutions to limited domain problems are becoming more common, no computer program can look at an arbitrary image and tell you what it contains. Even something as simple as reliably recognizing one face from a database of many requires graduate or Ph.D. level knowledge and a great deal of code.
Intel's Open Source Computer Vision Library
In June of this year, at the IEEE Computer Society Conference on Computer Vision and Pattern Recognition, Intel announced the availability of the first alpha version of its "Open Source Computer Vision Library" (OSCVL) for Microsoft Windows. On September 13th, the library, version Alpha3.1, was made available for Linux for the first time.
The library provides several hundred functions that implement many of the most common algorithms in use in CV applications. It's intended to be a substrate upon which both researchers and commercial developers can immediately begin being productive at building CV solutions, instead of having to first reimplement the basic building blocks from white papers and sprinkled bits of source code.
The code is under a BSD-like license which allows either source or binary redistribution so long as the copyright notice remains attached. It is perfectly OK to take the library and produce a commercial product with it, so long as Intel's name is not used to promote the product. Full details, including download links, are available at Intel's Open Source Computer Vision Library page.
Intel has been working on the OSCVL for approximately three years, growing in scope from one man with a vision (no pun intended), Gary Bradski, to a multi-national team of developers. The library has an acceptance and navigating committee of some of the world's leading CV experts and a Web-based users group of over 500 researchers.
The facilities provided by the library vary from the common and easy-to-understand to the very complex. Some of the former include camera calibration, image statistics and histograms, gesture recognition, arbitrarily sized matrix math support, edge detection, and flood filling. The more complex include optical flow algorithms, segmentation, eigen objects, and embedded hidden Markov models. Reading the PDF manual included with the library or linked off the above site is recommended.
It's important to point out that the OSCVL relies on another free library, Intel's "Image Processing Library" (IPL). This is currently only available in x86 binary format, although Intel has committed to releasing this as truly open source within the fourth quarter of this year. The IPL will work with any x86 based processor using optimized C and will take advantage of MMX or SSE processors if available.
Once released as source, porting to and optimizing for other processors will become possible. In addition, Linux distributions may choose to include the libraries for vision applications. This should not be misinterpreted as a tie-in to Intel processors -- because of the license, anyone could port the OSCVL to work with another image processing library. It would probably be quicker, however, to simply wait for the IPL to become available.
Following the link above, navigate to the download section, where you'll
find the manuals, library headers, the libraries themselves, and
several sample applications (for Windows). Download the IPL package
(currently IPL-2.2-1.i386.rpm), and install it as root
rpm -Uvh ipl-2.2-1.i386.rpm).
Next, download the OSCVL itself, which currently is available only as a source tar-ball, version Alpha 3.1. Uncompress this on any partition where you have at least 80 megabytes of free space available (e.g.,
tar -xzvf opencv-0.3.1.tar.gz), and
cd into the created directory (
cd opencv-0.3.1.b). Run the configure script (
./configure) and then run
Once the build has completed successfully, become root and execute
make install. This places the library files in
/usr/local/lib/ and the include files in the
opencv subdirectory in
Keep in mind, you may need to update your
/etc/ld.so.conf file to include the
/usr/local/lib/ directory in the library search path, or add it to the
LD_***_PATH environmental variables. You will know you need to do this if you get "cannot find library" messages when you try to run a program linked against the library. If you update
ld.so.conf, be sure to run the command
ldconfig (as root) in order to update the cache, or the changes won't be "seen" until the next reboot.
Pages: 1, 2