The Lifting Applet

Learning About Wavelets With Java

This applet was developed as a project for Caltech's 1996 Summer Undergraduate Research Fellowship (SURF) by Mike Astle and Dae Kang under the guidance of Dr. Peter Schröder. It demonstrates a very low level visualization of the lifting scheme, a method of hierarchial numerical analysis that can be used to construct wavelets. An excellent resource for understanding the lifting scheme is ''Building Your Own Wavelets at Home'', the first two chapters of wavelets course notes from Siggraph 96.

Using the Applet

The operation of the applet is fairly straightforward. Points can be added to the display by clicking and moved by dragging in the usual manner. The Predict and Update selectors determine the order of their respective steps in the transform. The update order cannot be greater than the prediction order. The applet can be forced to assume that all points are evenly spaced by choosing 'regular' in the Spacing selector. The slider controls the Inverse and Forward transform. Note that the Depth of the transform cannot go below zero and is limited by the number of points in the signal. The forward transform can not be computed unless their are an odd numer of points greater than 2p-1 where p is the order of prediction. When the Depth display does not read zero, no points can be added and existing points may only be dragged vertically.

It is possible to set the points to several predetermined states using the selector at the lower right. Linear, delta, and step function arrangements are available. 'Free' allows the user to start from scratch. Pressing the Reset button at any time will put the applet into the currently selected state and wipe off any changes that were made. When Ghosts is selected, progressive curves will be kept in lighter shades of gray as deeper levels of the transform are displayed. The applet can operate in 'Scaling' or 'Wavelet' mode in which it draws curves based on the scaling or detail coefficients of the signal.

The Source

LiftScheme.java
FunctionCurve.java