Thursday, 24 March 2011

Open Source Compuer Vision (OpenCV)

While just searching for the techniques of Face Recognition and Face Detection, I came across an Open Source library named OpenCV. This library was developed by Intel. I personally found it very much useful for almost all the image processing works. Here is something about it from Wikipedia:-

OpenCV (Open Source Computer Vision Library) is a library of programming functions mainly aimed at real time computer vision, developed by Intel and now supported by Willow Garage. It is free for use under the open source BSD license. The library is cross-platform. It focuses mainly on real-time image processing. If the library finds Intel's Integrated Performance Primitives on the system, it will use these commercial optimized routines to accelerate itself.

History :-
Officially launched in 1999, the OpenCV project was initially an Intel Research initiative to advance CPU-intensive applications, part of a series of projects including real-time ray tracing and 3D display walls. The main contributors to the project included Intel’s Performance Library Team, as well as a number of optimization experts in Intel Russia. In the early days of OpenCV, the goals of the project were described as
  • Advance vision research by providing not only open but also optimized code for basic vision infrastructure. No more reinventing the wheel.
  • Disseminate vision knowledge by providing a common infrastructure that developers could build on, so that code would be more readily readable and transferable.
  • Advance vision-based commercial applications by making portable, performance-optimized code available for free—with a license that did not require to be open or free themselves.
The first alpha version of OpenCV was released to the public at the IEEE Conference on Computer Vision and Pattern Recognition in 2000, and five betas were released between 2001 and 2005. The first 1.0 version was released in 2006. In mid 2008, OpenCV obtained corporate support from Willow Garage, and is now again under active development. A version 1.1 "pre-release" was released in October 2008.
The second major release of the OpenCV was on October 2009. OpenCV 2 includes major changes to the C++ interface, aiming at easier, more type-safe patterns, new functions, and better implementations for existing ones in terms of performance (especially on multi-core systems). Official releases now occur every 6 months[1].

OpenCV's application areas include:
To support some of the above areas, OpenCV includes a statistical machine learning library that contains:

It is basically the best library for for any type of image processing tasks. If you are now thinking any source to read and learn about this library then here is the book which you can read to learn it properly and here is the OpenCV's Yahoo Group where you can post your problems if you are having any, while using the library.
When I joined this group, the number of unread mails in my email id increased rapidly. i almost had 100-200 unread mails daily. The group is very much active and the members are increasing day by day. The library is becoming popular day by day. The most active member I found in the group was Shervin Emami. When I visited her website I found the thing which I was searching for almost a week i.e. the Face Recognition Software. You can find it here. She has made an basic Face Recognition program using OpenCV to help others to use as an example who are still learning OpenCV and facing lots of problems. But atlast we can say that OpenCV will be the library which will be the base for all the other Realtime Future Projects such as projects related to Hand Gestures. Think of the computers which will be operated with hand and voice no need of extra peripherals. Think!!