I recently read this comparison of four vision libraries: OpenCV, VXL, LTI and OpenCV with IPP. It was in the book Learning Learning OpenCV: Computer Vision with the OpenCV Library, authored by the creators of OpenCV themselves. For those who aren't familiar with these libraries, here's a brief introduction.
VXL stands for Vision something Library. It is a C++ library that implements several common computer vision algorithms and related functionality. The idea is to replace the 'X' with one of the several letters:
VGL = Vision Geometry Library
VIL = Vision Image processing Library
VNL = Vision Numerics Library
VSL = Vision Streaming Library
There are several other libraries as well
LTI-Lib is another object oriented library for computer vision. It has also been implemented in C++. It also includes classes that encapsulate multithreading, synchronization, serial port access, etc. And it ensures you don't have to deal with changing operating systems or hardware.
Yet another computer vision library. It includes over 500 functions for various commonly used algorithms. It also comes with a machine learning library and a portable window creation library. With version 2.0, OpenCV comes with a C++ interface as well. Before 2.0, it was only the C interface.
OpenCV + IPP
OpenCV developers were friendly with the Intel Performance Primitives team. So, OpenCV makes use of IPP code (which is hand tuned and extremely optimized code) to speed up execution. And this, as you'll see, gives a substantial boost to its execution speed.
The machine used was a Pentium M 1.7GHz. Four tests were done:
2D DFT: Forward fourier transform of a 512x512 image
Resize: 512x512 to a 384x384 image, bilinear interpolation. An 8-bit, 3 channeled image was used
Optical flow: 520 points were tracked with a 41x41 window and 4 pyramid levels
Neural net: the mushroom benchmark of FANN
The results were like this (I've tried my best to replicate the chart as best as possible):
Hmm. It can't get simpler. If you want to do your computer vision thing super fast, you must use OpenCV. If possible, Go for OpenCV+IPP. If something doesn't work fast enough, there are only two possibilities:
You don't know how to use it (doing template matching on a 3000x3000 image)
The algorithm itself is slow and current technology can't make it go faster (like SIFT)
If you can think of other possibilities, please leave a comment and let me know :P Anyway, in either case, the algorithm will work even slower on other vision libraries.
Whatever vision task you have, choose OpenCV :D This (probably) only applies to desktops/laptops. If you're using it on mobile, you can probably reconsider :)
Note: OpenCV does NOT depend on IPP in any way. But, if it detects IPP on a particular system, it will automatically make use of it.
Utkarsh Sinha created AI Shack in 2010 and has since been working on computer vision and related fields. He is currently at Microsoft working on computer vision.
About AI Shack
Learn about the latest in AI technology with in-depth tutorials on vision and learning!