Slashdot Mirror


Introduction to Wavelets

tang_horse writes "If you're curious about where wavelet theory came from and how it works, but didn't get beyond second semester DQ (or algebra/trig I), there's a lucid review, history, and introduction to wavelet theory on the National Academy of Sciences Beyond Discovery website. It includes some fairly concrete demos of what a wavelet function does to an image."

2 of 16 comments (clear)

  1. Re:Just how DO you do DSP on a PC? by ChadN · · Score: 4, Informative
    And how do these libraries work? Is it basically iterating stuff over a huge array of amplitudes? So that to implement the lowpass filter, you actually have to somehow or other scan the array to look for patterns that need to be smoothed out? (actually, it occurs to me that you might be able to do this by averaging adjacent entries together. Okay, then, how do you do a high-pass filter, keeping the local oscillations but dropping the low-frequency ones?)

    Well, you are getting there... Basically, a lot of the actual processing of discrete sample sequences (such as a .wav file) are based on an operation called a convolution (which is the same as a correlation with one argument reversed in time). Thus, you "convolve" a digital sequence with another, usually much shorter sequence that is known as a filter. The filter sequence is deisgned to be low-pass, high-pass, band-pass, etc.

    The key point is that a convolution in the time domain (ie. dealing with discrete samples in time) has an equivalence to operations in the frequency domain (what you get when you do a Fourier Transform on a sequence of time samples). By designing your filter in the frequency domain, you come up with filter sequences in the time domain, and the "convolution" does the rest. It is really some of the most elegant mathematics one can study in an engineering discipline (IMO)

    Anyway, this oversimplifies many things, but is a step toward removing the "mystery" of digital filtering. I would suggest a book such as Hamming's "Digital Filters" (which is cheap and good), or checking Google for "Fourier digital filtering", etc. for more info. You were on to something when you talked about averaging; that is indeed a simple low-pass filter, but much better ones can be made almost as simply.

    BTW, wavelets are a related topic, but it is probably better to understand the Fourier realm first.

    I welcome any corrections or clarifications to these statements by those in the know; or follow up questions if what I said is unclear.

    --
    "It's overkill, of course. But you can never have too much overkill." - Anonymous Slashdot Coward
  2. sound processing by bedessen · · Score: 3, Informative
    To get a signal shifted by a uniform 90 degress across all frequencies, I believe you want to use the Hilbert Transform.

    As far as applications, if you're using windows, there are a number of very advanced audio editor programs, like Cool Edit, Goldwave, etc. Try a search at one of the usual software download places.

    Probably the most extensive DSP applications turn to something like Matlab, but that's hardly free.

    For a unix-style solution, there's a package of tools here called pipewave which allows you to do very complicated digital signal processing using unix pipes. It follows the philosophy that you can do very complicated tasks by cascading smaller components using pipelines. Here are some examples from the above site:


    Plot the Fourier transform of a file using a Hanning window.

    fd file | fft -h | plot

    Generate the default synthestic vowel (200 ms duration, fundamental frequency = 100 Hz and formants, F1 = 650 Hz and F2 = 950 Hz), halve the sampling rate, take the hanning-windowed Fourier transform, and plot

    klatt -k | downsample 2 | fft -h | plot

    Generate 2000 samples of white noise, pass it through a gamma-tone filterbank (1 channel per ERB), arrange the filtered waveforms in a cascade, such that there is no overlap between them and plot.

    gaussian 2000 | fbank -e 1 | cascade -o 0.8 | plot -b

    Generate 2000 samples of white noise, store a copy of the original in a file called 'noise0', then phase shift it by 90 and store the phase shifted version as 'noise90'.

    gaussian 2000 | store -o noise0 | fft -p | ffilt -a 90 | ift | store noise90