We compute the midway face between two images by morphing the shape to the average shape, which uses the average of the defined correspondences, and then also cross dissolve evenly. To do so, I implemented an affine warp for each triangle in the triangulation, and used inverse warping.
To create a morph sequence, the process is similar to creating a mid-way face, but is different by generating multiple frames, each with a different warp fraction (controls shape) and cross dissolve fraction that start from 0 each to 1, allowing us to move from the starting frame to the end frame relatively smoothly.
Below is the mean face created from a data set courtesy of the IMM Face Database. We compute the mean face by warping all shapes to the average shape, and then cross dissolving across all images (average pixel values). I also morphed my own face to the mean face's shape, and the mean face to my own face's shape.
Here, I create a caricature by morphing away from the mean face rather than towards it. This creates a caricature because it emphasizes my unique features that distinguish it from the mean face.
Here is a video of face morphing between a few of the students in CS194 this semester, including myself. If the video is unavailable, link is here
Below, I morph my face towards two different mean faces found on the internet.