I'm running a small research on face detection and comparison for my article. Current开发者_StackOverflow中文版ly, I'm using rapid face detection based on haar like features based on OpenCV cascade (I'll implement learning later). The next step is making face comparison. Are there any well know algorithms? It'll be great, if there are some C# codes, explaining them or some dll's that implements them.
Eigenfaces
To generate a set of eigenfaces, a large set of digitized images of human faces, taken under the same lighting conditions, are normalized to line up the eyes and mouths. They are then all resampled at the same pixel resolution. Eigenfaces can be extracted out of the image data by means of a mathematical tool called principal component analysis (PCA).
The eigenfaces can now be used to represent new faces: we can project a new (mean-subtracted) image on the eigenfaces and thereby record how that new face differs from the mean face. The eigenvalues associated with each eigenface represent how much the images in the training set vary from the mean image in that direction. We lose information by projecting the image on a subset of the eigenvectors, but we minimise this loss by keeping those eigenfaces with the largest eigenvalues.
Fisherfaces and Eigenfaces
If your faces aren't aligned, then I'd recommend reading the following paper:
Support Vector Machines
Abstract: We present a component-based method and two global methods for face recognition and evaluate them with respect to robustness against pose changes. In the component system we first locate facial components, extract them and combine them into a single feature vector which is classified by a Support Vector Machine (SVM).
The two global systems recognize faces by classifying a single feature vector consisting of the gray values of the whole face image. In the first global system we trained a single SVM classifier for each person in the database. The second system consists of sets of viewpoint-specific SVM classifiers and involves clustering during training.
I wrote a tutorial and demo program with free source code for performing face detection and face recognition in real-time from a webcam (also in OpenCV):
http://www.shervinemami.info/faceRecognition.html
There is a evaluation System from Beveridge. They implemented three face recognition algorithms with different metrics. The algorithms are implemented for evaluation therefor it could be difficult to use them for your own programs.
Some Java API's and general links can be found in my Question about face recognition.
精彩评论