What is this project about?

How we should obtain the pictures?

Correspondence Point Picking

Estimation of Projection Matrix

Complete Correspondence estimation

Prewarp, Morph, Postwarp

Hole Filling

Example of Set 1

View morphing is a technique to take in the consideration of 3D space transformation in terms of 2D prewarping and postwarping and thereby reducing the possible amount of distortion. In fact, the prewarping step is to make the 2 images plane parallel to each other such that position as well as intensity could reduce back to linear relationship, thus we could interpolate the position and color intensity just like normal morphing.

Therefore, view morphing is in fact a sequence of steps which could help reducing the 3D distortion from 2D morphing, by first prewarping the images such that the images are on the same plane or parallel plane then normal morphing technique is applied. The output images are then postwarp back to the plane it should be and the result will give much more 3D sense than the normal morphing as well as a possible reductation of 3D transformation distort to the 2D images.

Once the program got the projectiopn matrix, it will prewarp the images and then perform image morphing each image will be postwarped back to it's projection plane and the images will be outputed to the user.

For this project purpose we are mainly focus on morphing from one image, i.e. to obtain the mirror images of the input image and then morph it.

To do mirror images morphing, we need to make sure that the mirrored image will not be too different from the original one, to ensure the best result the person's face feature should best be symmetrical and hence the features will not appear in one side and not the other side, and thus creating some kind of contracting effects.

The user could also save the correspondence points sets to a file as well as loading correspondence point from file, hence the user can modify the correspondence easily.

Since we need to have complete correspondence for morphing, we need to perform complete correspondence estimation. This is done by the using a slab window to find out the closest left and right points within the slab windows and then interpolate the corresponding x coordinate using the x coordinate distance ratio between the left and right point. The corresponding y coordinate is done using similar way, we use a slab width to find out the closest top and bottom points and then interpolate the corresponding y coordinate using the y coordinate distance ratio between them.

PL=Left Closest Point within slab window

PR=Right Closest Point within slab window

PT=Top Closest Point within slab window

PB=Bottom Closest Point within slab window

DL=horizontal distance between P and PL

DR=horizontal distance between P and PR

DT=vertical distance between P and PT

DB=vertical distance between P and PB

C()=correspondent point function, given P given the corresponding point in the other image.

C(P).x=C(PL).x * (DR/(DL+DR) + C(PR).x * (DL/(DL+DR)

C(P).y=C(PT).y * (DB/(DT+DB) + C(PB).x * (DT/(DT+DB)

Hole Filling

Here is the method:

I(P) = Intensity of the P

D(P) = distance between the point P and the hole point

I(Hole Point)= ( I(P0)*(1/D(P0)) + I(P1)*(1/D(P1)) ....... ) /(1/D(P0) + 1/ D(P1) + .....)

where P0, P1..... are the points within the window and is not a hole.

X=-100

Y=0

Z=100

Rotation in Y Axis = 15

Camera 1 position:

X=-100

Y=0

Z=-100

Rotation in Y Axis = -15

Focal Length = 300

I want to thank Tsz Ming Wong for his dataset, I used his correspondence points for this test sample.

Movie

X=-100

Y=0

Z=100

Rotation in Y Axis = 15

Camera 1 position:

X=-100

Y=0

Z=-100

Rotation in Y Axis = -15

Focal Length = 450

Movie