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!!

Monday, 21 March 2011

Why Linux?

There are many reasons for the question that why one should use Linux rather than using Windows. Some of them in brief:-
  • Forget about Viruses :-  If your computer shuts itself down without asking you, if strange windows with text you don't understand and all kinds of advertisements appear when you don't ask for them, then your computer probably has a virus. Linux uses smart authorization management. In Windows the user or any program you install can access any file and even any system files. And so the virus can make your computer unstable withing seconds. But Linux doesn't allows this type of access. Every time you request to do something that has to do with the system, an administrator password is required (and if you're not an administrator on this system, you simply can't do it). Viruses can't just go around and delete or modify what they want in the system; they don't have the authorization for that.
  • Longer Life Time :- some operating systems can be so stable that most users never see their systems crash, even after several years. This is true for Linux. Here's a good way to see this. When a system crashes, it needs to be shut down or restarted. Therefore, if your computer can stay up and running for a long time, no matter how much you use it, then you can say the system is stable. Well, Linux can run for years without needing to be restarted (most internet servers run Linux, and they usually never restart). Of course, with heavy updates, it still needs to be restarted (the proper way). But if you install Linux, and then use your system as much as you want, leaving your computer on all the time, you can go on like that for years without having any trouble.
  • Don't pay money for your operating system :- Linux is completely free of charge. That's right, all these guys all around the world worked very hard to make a neat, secure, efficient, good-looking system, and they are giving their work away for everybody to use freely. Of course, some companies are making good business by selling support, documentation, hotline, etc., for their own version of Linux, and this is certainly a good thing. But most of the time, you won't need to pay a cent.
  • Need to install extra stuff :- When you get Linux (such as Ubuntu, Mandriva, Fedora, etc., these are different "flavors" of Linux), you also get, without installing anything more :

  1. Everything you need to write texts, edit spreadsheets, make neat presentations, draw, edit equations.
  2. A web browser (eg Firefox) and an email program (eg Thunderbird, or Evolution).
  3. An image editor (GIMP) nearly as powerful as Photoshop.
  4. An instant messenger.
  5. A movie player.
  6. A music player and organizer.
  7. A PDF reader.
  8. Everything you need to uncompress archives (ZIP, etc.).
  9. etc.
  10. You can just start working right away.
  • Forget about drivers :- Linux doesn't need separate drivers. All the drivers are already included in the Linux kernel, the core of the system, and that comes with every single Linux installation. This means:

  1. very fast and standalone installation process. Once you're done, you have everything you need to start working (including the software you'll be using, see "When the system has installed..." item on this website).
  2. Out-of-the-box ready peripherals.
  3. Less harm for the planet because all these CDs don't need to come with hardware any more (well, at least once Windows don't need them either...).
  • Update all of your software with a single click :- Linux has a central place called the "Package manager", which takes care of everything installed on your system, but also every single piece of software your computer has. So if you want to keep everything up-to-date, the only thing you need to do is press the "Install Updates" button down there
  • All downloadable software at one place :- With Linux you don't need to Google for every software you need. With Linux, everything is much simpler. Linux has what is called a "package manager": each piece of software is contained in its own "package". If you need some new software, just open the package manager, type a few keywords, choose which software you want to install and press "Apply" or "OK". Or you can just browse existing software (that's a lot of choice!) in categories.
  • Lots of Space :- Workspaces is a feature I would never trade for anything else. You probably only have one screen, right? Try Linux, and you have four. Well, you can't actually look at the four of them at the same time, but this doesn't matter since your eyes can't look in two directions at once, right? On the first screen, lets put your word processor. On the second one, your instant messenger software. On the third one, your web browser. So when you're writing something in your word processor and you want to check out something on the web, no need to review all your windows to find your browser, stacked all the way behind the others. You just switch to your third screen and voilĂ , here it is.
  • Weather Forecast :- Get information about weather right from your own desktop.
  • Effects Crazy :- Are you a effect crazy? Do you want lots of effects so that you can play with it? Then Linux is the thing that you should have. Linux has lots of such effects which also makes it easy to use and operate.
  • File System :- Linux supports all types of file systems from FAT to NTFS. So now you don't have to replace your hard drive with a new one to get your new operating system working.
And at last it is Open Source Software. You can talk to the developers anytime and suggest them things like 'Make this feature look like this or that!'. If it contains bugs , it won't take much longer to get it solved. If you think you have found a bug and also know the solution for this then you can contact the developers or mail them anytime and tell the solution. And I think that above points are more than enough reasons  for anyone to know that why should they use Linux as their operating system.
If you find more advantages of linux that i haven't mentioned them please inform me. :)
Thanks :)