You are on page 1of 6

Face recognition using Eigen faces

Eigen faces technique is a popularly used technique which gives good accuracy with certain
limitations with the images such as size, frontal view etc. In this project Face recognition using
Eigen faces has been implemented using OpenCV 2.0. The paper by Turk and Pentland on face
recognition using eigen faces (http://www.cs.ucsb.edu/~mturk/Papers/mturk-CVPR91.pdf) has
been referred to for implementation.

Build Instructions:
I have built the project using Visual C++ Express edition 2008 and have included the build files in
build directory. The necessary include files are in ‘inc’ directory. The source files are in ‘src’
directory. OpenCV include files are in ‘inc/opencv’ and ‘inc/3rdparty/include’ directories. The
library files for build are in ‘lib’ directory and dll’s are in ‘build/face_recognition/debug’
directory. The images are in training_images directory.

The images for test and training are taken from AT&T face database (open source face
database). For training, the first image from each of the ten groups is taken. For test all the ten
images from ten groups are taken. The path to training and test images are set as relative paths
from the current directory as ‘../../training_images/’

Interpreting result
A sample result is given below:

Press Esc key to exit program

Reading training image ../../training_faces/s1/1.pgm

Reading training image ../../training_faces/s2/1.pgm

Reading training image ../../training_faces/s3/1.pgm

Reading training image ../../training_faces/s4/1.pgm

Reading training image ../../training_faces/s5/1.pgm

Reading training image ../../training_faces/s6/1.pgm

Reading training image ../../training_faces/s7/1.pgm

Reading training image ../../training_faces/s8/1.pgm

Reading training image ../../training_faces/s9/1.pgm


Reading training image ../../training_faces/s10/1.pgm

Test images and closest match

../../training_faces/s1/1.pgm Match = 1

../../training_faces/s1/2.pgm Match = 5

../../training_faces/s1/3.pgm Match = 1

../../training_faces/s1/4.pgm Match = 1

../../training_faces/s1/5.pgm Match = 1

../../training_faces/s1/6.pgm Match = 1

../../training_faces/s1/7.pgm Match = 1

../../training_faces/s1/8.pgm Match = 1

../../training_faces/s1/9.pgm Match = 1

../../training_faces/s1/10.pgm Match = 1

../../training_faces/s2/1.pgm Match = 2

../../training_faces/s2/2.pgm Match = 2

../../training_faces/s2/3.pgm Match = 2

../../training_faces/s2/4.pgm Match = 2

../../training_faces/s2/5.pgm Match = 2

../../training_faces/s2/6.pgm Match = 2

../../training_faces/s2/7.pgm Match = 2

../../training_faces/s2/8.pgm Match = 2

../../training_faces/s2/9.pgm Match = 2

../../training_faces/s2/10.pgm Match = 2

../../training_faces/s3/1.pgm Match = 3
../../training_faces/s3/2.pgm Match = 3

../../training_faces/s3/3.pgm Match = 3

../../training_faces/s3/4.pgm Match = 3

../../training_faces/s3/5.pgm Match = 5

../../training_faces/s3/6.pgm Match = 3

../../training_faces/s3/7.pgm Match = 3

../../training_faces/s3/8.pgm Match = 3

../../training_faces/s3/9.pgm Match = 3

../../training_faces/s3/10.pgm Match = 3

../../training_faces/s4/1.pgm Match = 4

../../training_faces/s4/2.pgm Match = 4

../../training_faces/s4/3.pgm Match = 4

../../training_faces/s4/4.pgm Match = 4

../../training_faces/s4/5.pgm Match = 3

../../training_faces/s4/6.pgm Match = 1

../../training_faces/s4/7.pgm Match = 4

../../training_faces/s4/8.pgm Match = 4

../../training_faces/s4/9.pgm Match = 4

../../training_faces/s4/10.pgm Match = 3

../../training_faces/s5/1.pgm Match = 5

../../training_faces/s5/2.pgm Match = 5

../../training_faces/s5/3.pgm Match = 5

../../training_faces/s5/4.pgm Match = 5

../../training_faces/s5/5.pgm Match = 5

../../training_faces/s5/6.pgm Match = 5
../../training_faces/s5/7.pgm Match = 5

../../training_faces/s5/8.pgm Match = 5

../../training_faces/s5/9.pgm Match = 5

../../training_faces/s5/10.pgm Match = 5

../../training_faces/s6/1.pgm Match = 6

../../training_faces/s6/2.pgm Match = 6

../../training_faces/s6/3.pgm Match = 6

../../training_faces/s6/4.pgm Match = 6

../../training_faces/s6/5.pgm Match = 6

../../training_faces/s6/6.pgm Match = 6

../../training_faces/s6/7.pgm Match = 6

../../training_faces/s6/8.pgm Match = 6

../../training_faces/s6/9.pgm Match = 6

../../training_faces/s6/10.pgm Match = 6

../../training_faces/s7/1.pgm Match = 7

../../training_faces/s7/2.pgm Match = 7

../../training_faces/s7/3.pgm Match = 7

../../training_faces/s7/4.pgm Match = 7

../../training_faces/s7/5.pgm Match = 7

../../training_faces/s7/6.pgm Match = 7

../../training_faces/s7/7.pgm Match = 7

../../training_faces/s7/8.pgm Match = 7

../../training_faces/s7/9.pgm Match = 7

../../training_faces/s7/10.pgm Match = 7
../../training_faces/s8/1.pgm Match = 8

../../training_faces/s8/2.pgm Match = 8

../../training_faces/s8/3.pgm Match = 8

../../training_faces/s8/4.pgm Match = 8

../../training_faces/s8/5.pgm Match = 8

../../training_faces/s8/6.pgm Match = 8

../../training_faces/s8/7.pgm Match = 8

../../training_faces/s8/8.pgm Match = 8

../../training_faces/s8/9.pgm Match = 8

../../training_faces/s8/10.pgm Match = 8

../../training_faces/s9/1.pgm Match = 9

../../training_faces/s9/2.pgm Match = 9

../../training_faces/s9/3.pgm Match = 9

../../training_faces/s9/4.pgm Match = 9

../../training_faces/s9/5.pgm Match = 9

../../training_faces/s9/6.pgm Match = 9

../../training_faces/s9/7.pgm Match = 4

../../training_faces/s9/8.pgm Match = 4

../../training_faces/s9/9.pgm Match = 9

../../training_faces/s9/10.pgm Match = 9

../../training_faces/s10/1.pgm Match = 10

../../training_faces/s10/2.pgm Match = 10

../../training_faces/s10/3.pgm Match = 9

../../training_faces/s10/4.pgm Match = 9

../../training_faces/s10/5.pgm Match = 10
../../training_faces/s10/6.pgm Match = 10

../../training_faces/s10/7.pgm Match = 10

../../training_faces/s10/8.pgm Match = 10

../../training_faces/s10/9.pgm Match = 10

../../training_faces/s10/10.pgm Match = 4

Percentage correct matches = 90%

The test image and closet match is given. In each of the directories ‘training_image/s1’ to
‘training_image/s10’ are the faces of 10 persons with different facial expressions. The first
column indicates the test image name. The second column has ‘Match = N’ where N is the
training image group number. For example, consider a row

../../training_faces/s10/6.pgm Match = 10

It means that the closest match to test image s10/6.pgm is an image from group 10 in training
database.

The percentage correct match at the end gives the percentage of correct matches.

The number of basis Eigen faces can be changed using ‘NO_BASIS_VECTORS’. It should be less
than or equal to number of training images which in this case is 10. Varying the number of basis
vectors gives variation in performance with performance degrading when less number of basis
vectors are used.

If ‘SHOW_IMAGES’ is set to 1, then the test images which match are displayed.

For full basis vectors (10) , the program acheives 90% correct match.

You might also like