Computer Graphics Project 1

Timothy Sherman

tmsherma

Algorithm:

My MATLAB code first splits the image into 3 channels, examines the size of the image, and runs different algorithms if it’s a large or small image.

Small images are aligned using an exhaustive SSD matching process, over a window of -25 to 25. The images are shifted, then have 10% margins cropped before calculating SSD. This gets rid of border and shifting noise. The best alignment is used to recombine the original images.

Large images require the use of a coarse-to-fine Gaussian pyramid. The pyramid is built until the top level has a width less than 256, and then an exhaustive SSD matching search with a -25 to 25 window is done at this level. The images are cropped before calculation as described in the small images section. At each other level, SSD matching is used with a window of -3 to 3, starting at the scaled coordinates found at the previous level. This is a recursive algorithm.

Results:

Small Images:


Red X: 5 Red Y: 4

Green X: 3 Green Y: 3


Red X: -1 Red Y: 9

Green X: 1 Green Y: 4


Red X: 8 Red Y: 11

Green X: 5 Green Y: 6


Red X: 5 Red Y: 5

Green X: 3 Green Y: 2


Red X: 0 Red Y: 12

Green X: 1 Green Y: 6


Red X: 3 Red Y: 4

Green X: 2 Green Y: 2


Red X: -1 Red Y: 13

Green X: -1 Green Y: 1


Red X: 2 Red Y: 4

Green X: 1 Green Y: 1


Red X: 0 Red Y: 6

Green X: 1 Green Y: 3


Red X: 4 Red Y: 14

Green X: 2 Green Y: 6

Large Images


Red X: 37 Red Y: 81

Green X: 1 Green Y: 17


Red X: 49 Red Y: 97

Green X: 17 Green Y: 33


Red X: 33 Red Y: 97

Green X: 33 Green Y: 33


Red X: 17 Red Y: 113

Green X: 1 Green Y: 49


Red X: 13 Red Y: 15

Green X: 1 Green Y: -1


Red X: 25 Red Y: 33

Green X: 1 Green Y: 17


Red X: 17 Red Y: 97

Green X: 1 Green Y: 33


Red X: 11 Red Y: 41

Green X: 1 Green Y: 1


Red X: 33 Red Y: 81

Green X: 17 Green Y: 33


Red X: -3 Red Y: 33

Green X: 1 Green Y: 1

Note: this image used a window of -3 to 3 at the top pyramid level, rather than -25 to 25. This was because false matches were occurring due to the other poles in the water.