#Eigenfaces
Eigenfaces for Facial Recognition implementation in Java to following Turk's thesis.
- Loads a set of images provided into Images.java.
- Performs Turk's Algorithm on images. Storing components as globals.
- Outputs helpful information on various transformations
- Mean average Image derived from set.
- Select Probe image we're going to search
- Probe minus mean (1-bit)
- Absolute value of probe minus mean.
- Inversion of probe minus mean.
- Outputs library of images with error ratings with respect to the probe.
##Abstract This project implements Turk's thesis in Java for my CSC 450, Scientific Computing final project / assignment 04. The references below will provide a better explanation than I will. So here is the Java implementation in a nut shell (further details is provided in the comments and doc blocks).
- Run EigenFaces.java
- Images.java bootstraps MathLink (JLink.jar required in your build path)
- Images.java loads images from
src/images
folder. - Images.java will load run Turk's algorithm (step-by-step details in the comments)
- Images.java selects which probe to try. Adjust this accordingly for your testing.
- Images.java runs recognition, accessing the weights of our training set with respect the weight built for the probe image.
- EigenFaces.java draws our JFrame, reporting everything that happened.
- Eigenfaces for Recognition, Turk & Pentland, MIT
- Onionesque Reality does a great job breaking Turk's and Pentland's Paper down into step-by-step instructions
Aside from MathLink, which you need to add JLink to your build path, all dependencies and resources are included in this repo.
- All images should be identical in width and height (included set is 150 x 150 px).
- All images should be 8-bit/Grayscale (preferably BITMAP)
- Images should be cropped in such a way that eyes appear in the same general area in every picture.
- Probes should be different than the images in your set.
- Items 1~3 apply to your probes as well.
- Multiple images of the same person will enhance your training set for recognition. (although there are none in my library)
Not very good, we have several others who placed better. Adding more images of Natalie would help build a stronger training set.
Our best result, the hair must have helped, haha. Unfortuntely, Jennifer's neighbor has very similar hair to the probe, scoring slightly better.
- The easiest way to improve this implementation is with a better training set. These are head shots I took off of Google Images.
- You would also benefit from adding multiple images for each person in your training set. This will allow your vectors to account for more variations and come closer when scoring weights.
eigen-faces-project
is free software distributed under the terms of the MIT license.