This project is about morphing from faces to faces, and I also get to calculate some mean faces for the face datasets.
To morph faces, corresponding feature points (edges, eyes, ears, etc.) between faces are selected, and those feature points are linearly interpolated throughout the morphing phase. In order to seamlessly morph the other region, Delaunay triangulization helps defines triangular meshes, where the affine transformation for each corresponding triangles can be defined and calculated. Warping is then achievable given the transformation function, and therefore the face morphing can be implemented with these tricks. During the morphing, not only the shape, the colors of two images are also linearly interpolated to create the morphing effect. The morphing result is pretty good with little artifacts.
Correspondence points are defined using cpselect. The averge face is generated with both average shape and color.
|
|
|
|
|
This is the mean face in Danes' dataset. Note that in order to have clear face features, it is important to align the face features before calculating the mean. Fortunately, the feature points are given in the dataset, so all the faces are morphed to the average positions of the feature points in shape (note the coloring is not changed) and then averaged. However, the edge of the head is not provided as features in this data set, so there will be some wierd artifacts at the forehead part, which is shown below.
|
Examples of faces morphed into the average face shape:
My face morphed into the average face geometry, and vice versa.
|
|
Note that to avoid the forehead having some wierd transformation, here the corresponding feature points are redefined for the two images above. Although it also looks weird, but there's no unexpected shape morphing of the facial features.
Note that the caricature is calculated merely based on appearance(color); in other words, shape extrapolation is not taken into account for the caricature calculation. Instead, the pixel values are the only things that are extrapolated. To compute the caricature, the deviation between my face and the average face is calculated, and the results will be (caricature factor)*deviation + mean. The skin color gets darker as the caricature factor goes higher.
|
|
|
|
Similar morphing techniques applied to the attempt of ethnicity transform. Below are results of three different morphing approaches from my face to an average european male face.
|
|
|
|
|