This is my final project for Computer Animation course, which implements the View Morphing by Steven M. Seitz etc . You can see the full report here (in Chinese).
Image morphing techniques can generate plausible transitions between images, but they may yield unnatural distortions when images are of different camera pose or different scenes transforms. The View Morphing technique is an extension to image morphing which also accounts for changes of viewpoint and scene transformations. It produces convincing transition results between images and can synthesize image under new viewpoint with only two images as input.
View Morphing has three steps.
We first compute Fundamental Matrix F as described in , then we get H0 and H1 as follows:
Like the original paper, I use the Feature-line based image morphing method  to morph the images. The algorithm works by first specifying some feature-line pairs on two images (e.g. connect two feature points to get a feature line), then warping and blending the images which are interpolated under the control of those feature lines. The morphing algorithm is GPU-friendly, so I implement it on GPU using BSGP language .
After morphing the prewarped images, we need to postwarp them back to the original image space. This perspective matrix can be computed following , that is to ask user to specify 4 feature-point pairs, so that we have 8 linear equations, and we add another constraint (such as forcing the last element in matrix to be 1), then we can solve the linear system to get the matrix.
I organize the program as a step-by-step wizard.
User specifies two images, the second image can be a mirrored copy of the first one.
Edit the corresponding feature lines. Whenever user adds a line on a image, a corresponding line will automatically be added on the other image.
This step has no user interaction, it merely shows the prewarped results. The corresponding points in two images should appear on same lines.
Edit the I0.5 rectangle, which is used to guide the postwarp.
In this final step, user can drag the slider to view the morphing results or export them as a video.
I compare view morphing's results with those of standard image morphing.
The view morphing result clearly has less distortions.
The difference may seem subtle, but by careful examination, you can see that the view morphing result yields a more realistic head-turning motion, while the image morphing result exhibits some squeezing and stretching effects of morphing.
On my github page.