Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!husc6!bbn!mit-eddie!mit-amt!turk From: turk@mit-amt (Matthew Turk) Newsgroups: comp.graphics Subject: Re: Image Processing question Summary: gaussian pyramid interpolation Message-ID: <3179@mit-amt> Date: 18 Oct 88 15:49:52 GMT References: <26451@ucbvax.BERKELEY.EDU> Organization: MIT Media Lab, Cambridge, MA Lines: 32 In article <26451@ucbvax.BERKELEY.EDU>, nick@marvax.berkeley.edu (nicholas socci) writes: > I have simple (I hope) image processing problem. I am given an image > with say 32x32 pixels (8 bits) and want to magnify the image to say > 512x512. (Actually i need to go from MxN --> M1xN1). > > I would like to know if there are any good algorithms out there to do > this. NOTE linear interpolation is not good enough. It was suggested to > me that I fourier transform the image and then use the transform to > interpolate. This simplest way I know of doing this is described by Burt and Adelson in April 1983 IEEE Trans. on Communications (p.534). They give a simple algorithm for expanding a pyramid level, which basically preserves the band-limited spatial frequency characteristics of the image. In a nutshell, here it is: I'old - (M+1)by(N+1) I'new - (2M+1)by(2N+1) 2 2 I'new(i,j) = 4 Sum Sum w(m,n) I'old( (i-m)/2, (j-n)/2 ) m=-2 n=-2 where w(m,n) is the 5x5 array whose 1D separable component is (0.05 0.25 0.4 0.25 0.05) and only terms for which (i-m)/2 and (j-n)/2 are integers are included in the sum. You could use a larger filter, but this 5x5 one is pretty good and rather quick. Matthew Turk