final_car.jpg

Computer Vision

This page includes numerous projects in computer vision such as image mosaicing, image morphing, and object recognition.

Computer Vision is the opposite problem of Computer Graphics. Graphics builds a 3D world and then derives a 2D image from it (your monitor). Computer Vision starts with a 2D image and attempts to interpret what the 3D world is behind it, which is ultimately a much more difficult problem. What you see above are multiple pictures taken of a single subject warped into one uniform mosaic. This is done by choosing reference points in the 3D world in every image that correlates to the same points in the image closest to its location. After this, the pictures are warped to make sure all reference points are aligned and then interpolates the pixel values between them from the original images. They are then pasted together using 2 band blending (separately pasting the low and high frequencies of the images and then adding the results together). As you can see, the final image still looks a little blurry in some areas and is being addressed in the next version of this system.

The program to the right deals with image morphing. This is my face morphing into one of my colleagues. This is done by, again, choosing reference points in both images that correlate to each other i.e., my nose to his nose, my eyes to his eyes, etc. This morphing was done with a group of 30 reference points on each image. Then, I turn these points into triangles, and morph each triangle separately via interpolation from one image to the next. This gives the appearance of the objects in the images morphing into each other rather than just the images themselves.

Another final example of my work in this field involves object recognition. The picture below on the left is serving as our training data. The program is built so any object in the left image can be selected and the system will look for that object in subsequent images. As you can see by the picture on the right, the program was able to find the object it was looking for without much trouble. This is done by computing gradients of the object in the training image and correlating that with the image in our testing image.

Comparing gradients is much more effective than simply comparing pixel values since gradient pays attention specifically to edge patters, which should be universal for the object in all images, where as pixel values can change drastically between the same objects in different images depending on the lighting and environment.