Eigenfaces Group - Code
For our implementation, we chose the language
Python, which is a dynamically-typed,
object-oriented, high level interpreted language with an extensive toolkit.
Add the Numerical
Extensions and the
Imaging
Toolkit and you have all the primitives we need. In my opinion, the result
is much friendlier to program than Matlab, as well as more flexible and
probably faster (the linear algebra part of the Numerical Extensions just
hands the work off to LAPACK).
- eigenlib.py (130 lines) -
Provides the core functionality, including construction of eigenfaces,
the transformation to face space, the inverse transform, and file I/O
operations, but no command-line interface.
- constr.py (10 lines) -
Front-end for eigenface construction.
- learn.py (22 lines) -
Front-end for recording face vectors for later identification and
reconstruction.
- recon.py (18 lines) -
Front-end for converting a recorded face vector back into image space
for viewing.
- identify.py (35 lines) -
Front-end for comparing new images to recorded face vectors. Gives top
three guesses as to who it is, as well as the "is a face?" score, which
reflects the quality of the reconstruction.
- progressive.py
(22 lines) -
Front-end for building reconstructions using 1, then 2, then 3, ... up
to all of the eigenfaces. These can be used to build a "reconstruction
animation".
- pool.py (31 lines) -
A relatively unsuccessful experiment. The idea was to take multiple
picture of each person to compute an average face vector for that
person. The was no noticeable improvement in recognition rates (not that
there was much room for one).
Tim Danner
<tdanner@rice.edu>,
Indraneel Datta
<kashent@rice.edu>
Last modified: Fri Dec 17 20:44:15 CST 1999