The Intel OpenCV and IP Libraries


The Intel Open Source Computer Vision (OpenCV) Library is a project that has been running for the last few years with the idea of establishing a repository of high-quality code for various computer vision applications. The core code is derived from submissions from the computer vision communtity, but is supposedly reviewed and debugged, and possibly rewritten. It is not intended as a general repository, but rather as a set of high-quality, broadly usable applications. There is (supposedly) a submission and development process for new core components, and also a separate (but still moderated) archive for less broadly-useful or less well-developed applications.

The various applications are all supposed to use a common (in-core) representation for image-data, and are supposed to use a common library of low-level image processing operations where appropriate. The image structure definitions and the low-level image processing functions are components of the Intel Image Processing Library (IPL), a NON-open-source product developed by Intel that targets the Pentium chip and its MMX acccelerator, primarily under Microsoft Windows environments. The Linux version of the OpenCV library includes a version of the IPL; it is rumored not to be optimized very well.

The IPL includes functions for arithmetic and logical operations on images, local linear and non-linear filters (e.g. smoothing, general convolution, median filters etc.), morphological operations, geometric operations, simple statistics, color model conversion, and a Fourier transform.

The OpenCV core contains operations for contour extraction, line and ellipse fitting, local feature detection (e.g. edgels, corners), Hough transform lines, local and masked statistics, pyramid formation, morphology, connected components, distance transform, camera calibration, image warping, optical flow, adaptive contours (snakes), kalman filtering, histogram analysis, eigen-vector analysis, hidden Markov models, simple matrix operations, and even gesture analysis and motion segmentation. (no guarantees on how the last two will work). There is miscellaneous other stuff as well.

The OpenCV libraries have been installed on the Linux machines in the lab in /usr/vision/lib with include files in /usr/vision/include. Isaac Green did the installation, but so far no one has really tried to make use of the package, so there are no make files or local demos to point to. This could be an extremely valuable resource. If someone wants to make a stab at first use, let me know, and I'll try to help. The primary drawback is that the package does not contain any file i/o functions for getting or writing images from disk. Possible options are to use the file i/o in the ipp utility library and convert ipp core images to the IPL core image format, or write your own routines for reading and writing (say) tiff images. You could even use the ipp functions as models here.

Intel has a web site on the project at http://www.intel.com/research/mrl/research/opencv. There is relatively good documentation of both the IPL and the OpenCV libraries. I have pdf files for the reference manuals at /u/nelson/programs/src/openCV_intel/(IPLMAN.pdf | OpenCV.pdf). They date from 10/2000. There may be more up-to-date versions available at the web site. These are very large documents, containing several hundred pages each. Please do not print the whole thing. If there is a demand for hard copy let me know, and I will run off some vision lab copies.

Back to vision course main page