Skip to content

Latest commit

 

History

History
82 lines (56 loc) · 4.91 KB

README.md

File metadata and controls

82 lines (56 loc) · 4.91 KB

#Eigenfaces

Eigenfaces for Facial Recognition implementation in Java to following Turk's thesis.

Table of Contents

##Features

  • 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).

  1. Run EigenFaces.java
  2. Images.java bootstraps MathLink (JLink.jar required in your build path)
  3. Images.java loads images from src/images folder.
  4. Images.java will load run Turk's algorithm (step-by-step details in the comments)
  5. Images.java selects which probe to try. Adjust this accordingly for your testing.
  6. Images.java runs recognition, accessing the weights of our training set with respect the weight built for the probe image.
  7. EigenFaces.java draws our JFrame, reporting everything that happened.

References

##Dependencies

Aside from MathLink, which you need to add JLink to your build path, all dependencies and resources are included in this repo.

##Usage

Image Library

  1. All images should be identical in width and height (included set is 150 x 150 px).
  2. All images should be 8-bit/Grayscale (preferably BITMAP)
  3. Images should be cropped in such a way that eyes appear in the same general area in every picture.
  4. Probes should be different than the images in your set.
  5. Items 1~3 apply to your probes as well.
  6. Multiple images of the same person will enhance your training set for recognition. (although there are none in my library)

Please note how the probe images differ from the images in the training set.

Screenshot of App running Probe 0

Screenshot of App running Probe 0

Very close, but Clive Owen stole 1st place somehow. Possibly the large amount of white space.

Screenshot of App running Probe 1

Screenshot of App running Probe 0

Not very good, we have several others who placed better. Adding more images of Natalie would help build a stronger training set.

Screenshot of App running Probe 2

Screenshot of App running Probe 0

Our best result, the hair must have helped, haha. Unfortuntely, Jennifer's neighbor has very similar hair to the probe, scoring slightly better.

Improvements

  • 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.

License

eigen-faces-project is free software distributed under the terms of the MIT license.