Math 316 Applied Math and Modeling II Final Projects


Presentation Date: Wedneday, May 19, 2004.

Instructions: Below are possible final projects for Math 316. You may work with one or two other classmates should you so desire. Rank the top three projects that interest you (or your group) and email me your choices no later than Friday, April 30, 2004. If you have an idea for a project not on this list, email that to me too (or instead).

You will be required to submit a written report on your project as well as make a presentation. Most people opt to use Power Point for their presentations. I am also going to require that you save your presentation in HTML format. We can then post your presentation on the CAM Website. If you do your presentation in Power Point, you can easily save it as HTML.

Project assignments will be announced on Monday, May 3, 2004. Once you or your group has selected a project, we will set up meeting times to further outline the work for the project.


Wavelet Packets and Audio/Image Compression
Wavelet Packets is a variation on the wavelet decomposition method. Consider applying a wavelet transform on a one dimensional signal. Then the data is transformed into a lowpass and a highpass portion. We can iterate then by transforming the lowpass portion again. Wavelet packets simply allow you to apply the wavelet transform on the highpass portion (at any iterative level) you so desire. Thus you have several options for decomposing a signal. Coifman and Wickerhauser devised an entropy based method for determining the best decomposition. In the first part of this project, you will learn the mathematics behind wavelet packets and the best basis selection method of Coifman and Wickerhauser. You will then apply wavelet packets to the problem of audio/image compression.

For the application portion of this project, you will take several test images/sounds and apply a wavelet packet decomposition to them. You will then compute the cumulative energy of this transform to determine the compression rate of the transform. You will compare this to Daubechies 4,6 term wavelets as well as a couple of biorthogonal wavelet transformations.

Your report/presentation should discuss the mathematics behind wavelet packets as well as a discussion of the best-basis selection process. You should also then create Mathematica code to do the audio/image compression and then run it on 3-4 test images/sounds.

The Cascade Algorithm
Attached to each set of filter coefficients is a scaling function. In this project you will investigate a method for generating these functions called the Cascade Algorithm. The algorithm works by taking an initial guess to the scaling function and processing it through the dilation equation. This produces the next guess and then you iterate. Of course, we must first know if the process will converge to the scaling function before we implement it. To successfully complete this project, you would need to:
  1. Familiarize yourself with the Cascade Algorithm and then understand conditions that guarantee its convergence.
  2. Write software that, given a filter h and a number of iterations i, produces an approximate of the scaling function.
  3. Demonstrate your algorithm on several filters.

BootStrapping and Edge Detection
A key application of wavelet transformations is boundary or edge detection. In this application, it is your task to find boundaries or edges in images. You start by taking the wavelet transform of an image and then you consider only the details of the transform. Large values in the detail portion of the detail sections often indicate boundaries in the original image. After deciding which large detail values to keep, the remaining detail values are converted to zero and the detail portions of the transformation are combined to produce a picture of the edges in the original image.

Bootstrapping is a statistical method that you will apply to determine which detail coefficients you will keep. You will learn the mathematics behind bootstrapping and then apply it to 3-4 test images. For comparison purposes, you will use the Daubechies 4-term transform on all of your test images. You will then reconstruct the image of edges and see how bootstrapping did. You will compare your results to those obtained by using elementary statistical methods for determining which detail coefficients to keep.

Your report/presentation should discuss the mathematics behind bootstrapping. You should also then create Mathematica code to do bootstrapping and use it to edge detect 3-4 test images.

Biorthogonal Wavelets - Mathematical Derivation

Other than the Haar filter, none of the filters in the Daubechies family are symmetric. Symmetric filters are often desirable in image processing applications. It is possible to alter the construction to obtain symmetry, but it turns out that you must sacrifice orthogonality. In this project, you will derive a class of biorthogonal filters. The idea here is to develop a symmetric lowpass filter that satisfies the derivative conditions (and it's corresponding highpass filter) AND a dual pair of lowpass/highpass filters that we can use for the inversion process.

The mathematical derivation is done exclusively in the Fourier domain. Students who took Math 315 last fall might enjoy this project.

Your final report will be a detailed discussion of the derivation of the so-called spline biorthogonal filters.

Biorthogonal Wavelets - Implementation

The Wavelet Transform for a biorthogonal filter pair is a bit different than the one for an orthogonal filter. This transform uses two filters to process/invert the input. In this project, you will develop a Mathematica module that takes a biorthogonal filter pair, computes the corresponding highpass filter pair, and then processes either a matrix or vector of input. You need to also develop the inverse transform and iterated versions of both the transform and its inverse.

This project is primarily programming. It main difficuly lies with how to implement two filters in the transformation scheme instead of the one filter we used when developing modules to implement Daubechies family or Coiflets.

Your report/presentation should be the Mathematica modules you have developed to do the iterated versions of the wavelet transform with a biorthogonal filter and its inverse. You should also compare several biorthogonal filters (provided by me or the student doing the preceding project!) by processing 2-3 images with them and measuring the entropy of the transform.

Factoring the Daubechies 4-Term Transform Matrix
This project is quite theoretical in design but has applications in data compression. Consider the Discrete Daubechies Wavelet Transform built from the 4 term filter. Writing this matrix in an alternative form leads to a factorization that is very insightful geometrically. This factorization also allows us to see a way to modify this transform so that we can make integers to integers.

In this project you will learn about the Singular Value Decomposition (maybe you've seen it in Math310) and how to use it to factor the Daubechies transform.

You will then show how to use this factorization to modify the transformation so that it can successfully be used to map integers to integers (integers are much easier to quantize for compression routines than the normally noninteger values returned by transform).

Image Identification (experimental!)
Suppose you have a library of digital images and wish to match it with a new image. Can we use wavelets to do it? If so, how? In this project, you will create a library of images and then use wavelets to take a test image and determine if it matches any image in your library.

Your report/presentation should be the mathematics behind your method for determining the image match. You should also then create Mathematica code for image identification and then run your code on 3-4 test images.

Entropy Encoding
This project involves wavelets indirectly. We've talked a lot about compressing transformed data. That is, for values below a certain tolerance, we simply convert them to 0. But how do we actually encode the data to make the filesize smaller? In this project, you will learn about one such method. Entropy encoding is a straightforward process of replacing characters or strings of characters by other characters so as to make the resulting file smaller.

You will learn how entropy encoding works and then write a mathematica module to encode a data set. You will write the original data, the transformed data, and the encoded data to disk and see the savings in file size. You will perform this test on 5-6 test files to determine the efficiency of the algorithm.