In this project, I worked on face morphing, computing average faces, and creating caricatures. I implemented different image processing techniques to morph one face into another, calculate the mean face from a group of faces, and make exaggerated versions of faces.
For the correspondences, I used the tool from a previous student's project (available here). I selected images of Conor McGregor and Lionel Messi from Martin Schoeller's close-up series. I then hand-picked the correspondences, making sure I had enough points for a good warp and a good number of triangles.
To create the mid-way face between McGregor and Messi, I followed these steps:
I created a morph sequence by generating 45 frames. For each frame, I linearly interpolated the warp_frac and dissolve_frac from 0 to 1. I then created the morphed image for each frame using these interpolated values. Finally, I saved the frames together as an animated GIF.
For this part, I used the FEI Face Database. I clipped some points that were going outside of the image range. I then chose one image to warp to the average face (and vice versa), as well as doing it on my own face after choosing corresponding points.
I used different alpha values to create caricatures by extrapolating from the mean. The caricature points were calculated using this formula:
caricature_points = α * mean_neutral_points + (1 - α) * adnan_points
I computed the eigenfaces by performing PCA on the dataset. Here are the top 16 principal components:
I then used these eigenfaces along with some of the neutral normal faces to produce caricatures by adding a random variable alpha. Here are the results:
In this project, I successfully implemented face morphing between two images, created a morph sequence, computed mean faces from a dataset, and generated caricatures. I also explored using eigenfaces for creating caricatures. These techniques helped me understand how to manipulate and analyze facial images using computer vision methods.