So how can a signal be converted and manipulated while keeping resolution
across the entire signal and still be based in time? This is where wavelets
come into play. Wavelets are finite windows through which the signal can
be viewed. In order to move the window about the length of the signal,
the wavelets can be translated about time in addition to being compressed
Basically a vector space is a set of vectors such as V=[(0,1),(1,0),(1/2,1/2),(-1/2,0)]. In addition to defining a vector space by explicitly stating all the vectors that make up the space, you can also define a vector space using a function. When reading material on wavelets, the vector space L2 is often mentioned meaning the 2 dimensional plane of real numbers. This vector space can be thought of as the plane made up by the x and y axis. There are three important terms to learn for understand vector spaces and these terms of often used in discussions of wavelets with respect to their use in multiresolution analysis.
Linear combination – this is the easiest term to understand. It is simply the sum of a set of vectors or equations where each vector, value, or function is multiplied by some real constant. It is represented mathematically by the following:
Span – a span is a set of vectors whose linear combination can create all of the other vectors in the vector space. For example, using i=(1,0) and j=(0,1) we can recreate any of the vectors mentioned above through a linear combination.
i*1 + j*0 = (0,1)
i*0 + j*1 = (1,0)
i*(1/2) + j*(1/2) = (1/2,1/2)
i*(-1/2) + j*0 = (-1/2,0)
So we can say that the vectors [(1,0),(0,1)] span the vector space V mentioned above. If we try to see if just the vectors i=(1,0) and k=(-1/2,0) span V, we’ll see that it does not work.
i*1 + k*0 = (1,0)
i*(-1/2) + k*0 = (-1/2,0)
That works fine, but no matter how hard you try you will never make (0,1) using just I and k, so we can say that the vectors i and k do not span vector space V.
Basis – This is the smallest set of vectors that can span a vector
space. If we create a sub set of our vector space V called S consisting
of the set [i,j,k], we can say that it spans V, but is not a basis for
V. Why, because we can eliminate k from S since k can be created using
i and j. So, S is not a basis, but a set of the vectors [i,j] is a basis
for vector space V. This is not the only basis for V, another basis could
be the vector (1/2,1/2) and (-1/2,0), since those two can also create all
the other vectors.
For practical purposes one can think of an image as a vector space such
as Vj would be the perfectly normal image, and Vj-1
would be that image at a lower resolution until you get to V0
where you just have one pixel in the entire image. For each vector space
Vj, there is an orthogonal complement called Wj and
the basis function for this vector space is the wavelet.
These are the root functions for the haar wavelet. fis what is called the scale of the haar wavelet, y is the actual wavelet. With these two functions alone, you really cannot do much, so you must create a function where you can translate and scale both of these functions which are the following:
i is responsible for the scaling of the function, it basically shrinks and expands the graph the function makes and represents the resolution of the function.
j is the translation of the graph across the time axis. Note how as the resolution increases, the number of possible translations increases exponentially.
Also, f(i,j) and y(i,j)
for the haar wavelet do not call themselves unlike some other wavelets,
they call the piecewise functions mentioned above. To show how these functions
actually work, see the Animations section in this Maple
[9 7 3 5] (9+7)/2 = 8
(9-7)/2 = 1
(3+5)/2 = 4
(3-5)/2 = -1
[8 4 1 –1] (8+4)/2 = 6
(8-4)/2 = 2
[6 2 1 –1]
There are two types of data here, the sparse data and the detailed data. The sparse data is what we want to get rid of and in this examples are the numbers [9,7,3,5,8,4,6]. The other data type here are the details which make up the differences when doing our compression and here they are [2,1,-1].
This may look wonderful and all, but what good is compression that takes
four values and compresses it to four values? Simple, in images especially,
the pixel values are similar to their neighbors. If they weren’t we would
be looking at random static and there would not be an object. When doing
the averaging and differencing with wavelets, the detail values are usually
low numbers and sometimes zero. These detail values (which compose all
but one of the resulting values) can be compressed much better than the
original pixel values. In this example, the number [6 2 1 –1] are more
easily compressible than [9 7 3 5].
Here we see what happens to an array of 8 values. First the values are
filtered with the high and low pass filters. The data from the high pass
filter is stored and the data from the low pass filter is filtered again.
This process repeats until there is only one value left and since the averaging
and differencing works in pairs, that value is saved. For my examples,
the differences are stored in an array called d and the coefficients
of the actual values and sparse values are stored in an array called c.
To see how these filter banks are applied using matrices, please review
the Maple worksheet.
We can do our normal compression and get the following:
[.5, -.5, .5, -.5, .5, -2.5, .5, -.5]
Or we can implement the scaling of 2(j/2) and get this:
From here we can do a better job of applying a threshold on our detail values. In this example we can scale any value at or below 1/sqrt(2) to 0 and get the following as our new coefficients:
How well does this thresholding mangle our orginial data? Here are the plots of the original data and reconstructed data with the thresheld coefficients followed by the comparison of the two:
Chui, Charles K., An Introduction to Wavelets, Academic Press, Boston, 1992.
Chui, Charles K., Wavelets: A Tutorial in Theory and Applications, Academic Press, Boston, 1992.
Daubechies, Ingrid, Different perspectives on wavelets : American Mathematical Society Short Course, January 11-12, 1993, San Antonio, Texas.
Daubechies, Ingrid, Ten lectures on Wavelets, Society for Industrial and Applied Mathematics, Kolman,
Iyengar, S. S., Prasad, L., Wavelet Analysis wth Applications to Image Processing, CRC Press, Boca Raton, 1997.
Kolman, Bernard, Introductory Linear Algebra with Applications, Prentice Hall, New Jersey, 1997.
Renikoff, Howard L., Wells, Raymond O. Jr, Wavelet Analysis: The Scalable Structure of Information, Springer-Verlag, New York, 1998
Stuart, R. D., An Introduction to Fourier Analysis, Science Paperback, Cambridge, 1966.
Walter, Gilbert G., Wavelets and Other Orthogonal Systems with Applications,
CRC Press, Boca Raton, 1994.
S. G. Mallat, "A Theory for Multiresolution Signal Decomposition: A Wavelet Representation," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 11, No. 7, July 1989.
E. J. Stollnitz, T. D. DeRose, D. H. Salesin, "Wavelets for Computer Graphics: A Primer Part I", IEEE Computer Graphics and Applications, 15, May 1995.
E. J. Stollnitz, T. D. DeRose, D. H. Salesin, "Wavelets for Computer
Graphics: A Primer Part II", IEEE Computer Graphics
and Applications, 15, July 1995.
C. Mulcahy, "Image Compression Using the Haar Wavelet Transform,"
C. Mulcahy, "Plotting and Scheming with Wavelet," Mathematics Magazine 69, 5, 1996.
G. Strang, "Wavelets and Dilation Equations: A Brief Introduction," Siam Review 31, 1989.
P. Muller, B. Vidakovic, "Wavelets for Kids: A Tutorial Introduction,"
B. Lipchak, "2D and 3D Progressive Transmission Using Wavelets," http://www.cs.wpi.edu/~matt/courses/cs563/talks/Wavelet_Presentation/Wavelet_Presentation.html
A. Nicolaou, "A Wavelet Wading Pool," http://www.cgl.uwaterloo.ca/~anicolao/wadingpool/WaveletWadingPool.html
R. Polikar, "The Wavelet Tutorial Part I: Fundamental Concepts and an Overview of the Wavelet Theory," http://www.public.iastate.edu/~rpolikar/WAVELETS/WTpart1.html
R. Polikar, "The Wavelet Tutorial Part II: Fundamentals: The Fourier Transform and the Short Term Fourier Transform," http://www.public.iastate.edu/~rpolikar/WAVELETS/WTpart2.html
R. Polikar, "The Wavelet Tutorial Part III: Multiresolution Analysis and the Continuous Wavelet Transform," http://www.public.iastate.edu/~rpolikar/WAVELETS/WTpart3.html
R. Polikar, "The Wavelet Tutorial Part IV: Multiresolution Analysis: The Discrete Wavelet Transform," http://www.public.iastate.edu/~rpolikar/WAVELETS/WTpart4.html
D. Zorin, J. Owens, "Introduction to Wavelets," http://www-graphics.stanford.edu/courses/cs448-97-fall/notes.html
D. Zorin, J. Owens, "Introduction to Wavelets II," http://www-graphics.stanford.edu/courses/cs448-97-fall/notes.html
http://www.amara.com/current/wavelet.html – Amara’s Wavelets Page containing tutorials and many links
http://dir.yahoo.com/Science/Mathematics/Wavelets/ - Wavelets at Yahoo
http://www.mathsoft.com/wavelets.html – Huge resource of papers about wavelets
http://www.multires.caltech.edu/teaching/courses/waveletcourse/ - Wavelets in computer graphics
http://www.cs.washington.edu/research/projects/grail2/www/pub/abstracts.html – More papers on the applications of wavelets in computer graphics
http://cas.ensmp.fr/~chaplais/Wavetour_presentation/Wavetour_presentation_US.html – A Wavelet Tour of Signal Processing by Stephane Mallat
– Stanford course with lecture notes on computer graphics