If you are looking to buy practical guide for face detection in MATLAB please visit Face Detection Code website.

My favorite programming languages:

  1. Visual Studio C++
  2. MATLAB
  3. PHP

I love all of them and depending on the project and on the situation, I will choose one. For research and education purposes, I usually go with MATLAB. Especially I have fully experience in working with Image Processing, Neural Networks, Optimization and Wavelets Toolboxes. For better interface and faster algorithm, I go with Visual C++ and PHP is my option when I want to work on web projects. I consider myself an expert in all of them.

Other Languages

I started programming at age 11, when I got my first ZX-Spectrum, It was based on its own BASIC language. Then after moving to a 286 computer PC, I was already famillier with GW-Basic and that is when Quick Basic came.

I then learned Pascal and FoxPro until I got an expert in FoxPro programming. Later I started to learn C language and I continued my study until I learned Visual C++.

Assembly x86 was always an attraction for me. I didn't get fully into the language to produce standalone application fully in it, but I learned it by the help of Peter Norton's books. Later when I started to write programs for microcontrollers, I used lots of that knowledge, and I mixed them with Keil C51.

Here is a list of C++ libraries that I love to work with:

1- STL (Standard Template Libraries)
Actually nowadays it is hard to find someone who has not heard about it. It is so popular that even by default it is supported by most of C++ compilers. I remember days that we had to write every single thing ourselves but now I cannot  imagine such a world anymore.  STL has some of the best algorithms and containers that you need. Even many other libraries are dependent to it. So what else I can say.

2- QT



Again QT is not dedicated to computer vision programmers. It is the best cross-platform Graphic User Interface that you may find. And the best part is that it is free for non-commercial use and with good help and support. From my point of view, Qt is more than a library. It is a platform for developing software. I am going to be honest, It does not make your life easier. It is quite the contrary. It is like learning another language and cope with its issues but when you do that, and if you develop your first program with it, you are already deep in and you cannot  get yourself out and go with any other graphic interface.

3- CGAL (Computational Geometry Algorithm Libraries)

Yes, it offers data structures and algorithms like triangulations (2D constrained triangulations and Delaunay triangulations in 2D and 3D, periodic triangulations in 3D), Voronoi diagrams (for 2D and 3D points, 2D additively weighted Voronoi diagrams, and segment Voronoi diagrams), I heavily used it for my master's thesis for image approximation using Delaunay triangulations. It is a good one. I recommend it.

4- OpenGL



Well, the name says it all. Even if you are the fan of video games for PCs, chances are you have heard about it. Personally it does the same thing as DirectX and Mesa3D. However, I first started to learn it because it was more popular. It doesn't really matter which one you learn, as long as you know one to start communicating with your graphic card.

5- Cg Toolkit

That is a good one. I use it for writing GPGPU (General purpose computing on GPU) scripts. I found it better than the OpenGL built-in OpenGL shading Language.

6- GDAL (Geospatial Data Abstraction Library)

When it comes to reading geographic file formats and working with large data files, It is the best option that you can find on the net. I was lucky enough to be able to write my master's thesis, based on that, but it is a little buggy.

7- FFTW

Better to be said by himself. "FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST)". It is the fastest, and it is the most optimized.