CS 194-26 Project 3 [acc id: aez]
Part 1: Correspondences and Mid-way Face
-
Correspondences: To create the correspondenses, I used
ginput
together with manually adding in edge points to
make sure that the morph accounts for features outside of the main
face shape as well (i.e hair).
-
Midway Face: The 2 faces I used were that of George Clooney and Emma
Watson, as shown below.
-
computeAffine
: Implemented using algebraic method – 6
unknowns, 6 equations
-
Midway shape: Generated by averaging the
coordinates from image A and B
-
Triangulation: computed using Delauney
Triangulation on midway shape
-
Midway face: Created by looping over triangles of
mid-way shape powered by numpy computations (
polygon
and dot
products)
-
The midway face looks largely good, except slight blur in the left
eye. This is largely due to the difference in eye shape and size.
Part 2: Morph Sequence
-
morph
: Function implemented by re-factoring code used to
achieve Part 1, with additional warp_frac
and
dissolve_frac
parameters.
-
45 frames were taken for different t values from interval [0, 1],
resulting in the gif shown below set at 30fps.
Part 3: Population mean
-
Data set: The dataset used is the FEI database of
Brazillian faces
- Corresponding points were taken from
.pt
files
-
Images downloaded were in black and white. For the sake of
congruency, all images used for computation was black and white
too
- For this part, only neutral faces were taken and processed.
-
Average shape: Computed by taking mean over
corresponding points of all the images
-
Morph face to average: Code largely similar to part
2, re-purposed to end at the average shape.
-
Average face: Pixels summed and averaged over the
average shape.
Dataset faces morphed to average shape
Original |
Morphed to Average |
|
|
|
|
|
|
Face <-> Average
My Face |
Mean Image |
|
|
Average -> My Face |
My Face -> Average |
|
|
Part 4: Caricature
-
Extrapolating from the morphing functions used in both Part 2 and 3, I
morphed my face to take on more features of the Brazillian face
-
The most notable change effect I saw was the shrinkage/sharpening of
my nose, together with overall broadening of my face.
-
The caricature also caused an increase in the size of my left eye and
significantly reduced the distance between my eyes.
-
With regards to the increase in size of eye, one reason could be
due to the angle of my original photo which caused my left eye to
look larger. Upon caricaturizing, the algorithm might have tried
to project the symmetry of the average face and thus
overcompensated on the increased size of my eye.
-
This is overall aligned with how the average face looks like –
smaller/defined features of the nose, small gap between eyes,
symmetrical face.
Face |
Caricature |
|
|
Part 5: Bells and Whistles: Making my friend smile
- Oh no, my friend looks so UPSET - time to make him smile.
-
I did this by taking the average smiling face from the same dataset as
in Part 3, and then simply morphed my friend’s face to the average
smiling shape of the dataset
Friend |
Average smiling |
|
|
Morphing shape |
Morphing appearance |
Both (small tuning) |
Both (large tuning) |
|
|
|
|
CS 194-26 Project 3 [acc id: aez]
Part 1: Correspondences and Mid-way Face
ginput
together with manually adding in edge points to make sure that the morph accounts for features outside of the main face shape as well (i.e hair).computeAffine
: Implemented using algebraic method – 6 unknowns, 6 equationspolygon
anddot
products)Part 2: Morph Sequence
morph
: Function implemented by re-factoring code used to achieve Part 1, with additionalwarp_frac
anddissolve_frac
parameters.Part 3: Population mean
.pt
filesDataset faces morphed to average shape
Face <-> Average
Part 4: Caricature
Part 5: Bells and Whistles: Making my friend smile