CS 7321 Winter 1998

PS#3 Solutions by George Magiros

The Mind Body solution (or how to do splining)

(Credit one day to my extension days)


Index


How I solved it

    Well there was really no solving involved.  One just
    had to read Adelson and Burt's two papers and just implement
    exactly what they said.  Of course figuring out _why_ some
    of the things were implemented took some thought.  For instance
    why do you have to multiply the expanded image by 4 after convolving
    it.  (Ans: if you do it by, convolving a matrix on ones, you will
    see that the answer is 1/4 not one as it should be.  Thus you need
    to multiply it by 4)

    This splining operation seems to work by first separating all the
    images into passbands.  And then slining into each of these passbands.
    Those passbands are then summed together to get the new splined image.

    To keep the spline operation consistent in terms of using the appropriate
    frequency response for each spline operation within each passband,  the
    splining itself must obey a gaussian pyramid, ie. the S matrix
 

to TOP


Assumptions and Weaknesses

    I made an assumption that Adelson was correct, initially.
    However one of the articles seemed to have a typo so I had to
    rely on my wits in the end.  Specifically i'm refering to
    the difference between the two papers in regard to the expand
    summation equation.

    Indeed if i had a beter understanding of DSP I might have a more
    intuitive understanding of the filters and how the convolutions
    truely worked - beyond my naive understanding of them.

    Though i have started to read up on DSP and relating the two
    dimensional vector [.05 .25 .4 .25 .05] to the operations on
    an image had a direct correlation to doing sound filtering.

    As for my implementation, I limited my scope to manipulating
    images that are the same size when splining them together.  Also
    the images had to be 2^N+1 square in size.

    Though the paper seemed to endorse taking every even sample
    when both reducing and expanding.  I took every odd one.
    That is instead of doing the summation with respect to
    (i,j) = a * (2*i,2*j)
    and (i*2,j*2) = a * (i,j)
    I did it for:
    (i,j) = a * (2*i-1, 2*j-1)
    and (2*i-1,2*j-1) = a * (i,j)

    The technique is limited: the efficiency of the splining is directly
    replated to the strength of the highest frequency components in
    the border defining the spline operation.

    It also takes (as implemented) more space then the original image.

to TOP


Improvements and Possible Future Work

    If i had extra time i would make the program handle arbitrary resolutions.
    The algorithm should be able to handle this addition.
 
    I would also like to try to see how one could add compression to the Laplacian
    pyramid.

    Indeed isn't this one of the main reasons for the algorithm.  The other addition
    would be a better way to implement color.  At the moment each color intensity is
    given its own pyramid.  I wouldn't mind adding the capability to use some other
    type of color respresentation, like HSV, and laplacian pyramid this.

    Since the algorithm relies on textures to create better matching, i would like
    to add an option for the intensity of the convolution filter used.  So maybe
    textures that don't have very high frequency components can be splined together
    more seemlessly.

to TOP


Results

Image 1

Figure 1: this is one image

Image 2

Figure 2: this is the other

Image 3

Figure 3: now the lovely splined together image
 

The above is the laplacian of the tank
(this looks better in matlab)

The above is the gaussian of the tank
(this looks better in matlab?!)


the above images were silly,  so we will try again:

Figure 4: this is our first image.  (am i an a eco-centric mood or what?)


Figure 5: this is the second one

Figure 6: lucy is on top of the world

to TOP


Source Code