Wavelet Transform

   Good luck trying to understand the corresponding [1]Wikipedia article.

   Wavelet transform is a [2]mathematical operation, similar to e.g.
   [3]Fourier transform, that takes a [4]signal (let's say audio or an image)
   and outputs information about the [5]frequencies contained in that signal
   AS WELL as the locations of those frequencies. This is of course very
   handy should we want to analyze and manipulate frequencies in the signal
   -- for example [6]JPEG 2000 exploits wavelet transforms for [7]compressing
   images by discarding certain frequencies in them that our eyes are not so
   sensitive to.

   The main advantage over [8]Fourier transform (and similar transforms such
   as [9]cosine transform) is that wavelet transform shows us not only the
   frequencies, but ALSO their locations (i.e. for example time at which
   these frequencies come into play in an audio signal). This allows us for
   example to locate specific sounds in audio or apply compression only to
   certain parts of an image. While localizing frequencies is also possible
   with Fourier transform with tricks such as [10]spectrograms, wavelet
   transforms are a more elegant, natural and continuous way of doing so.
   Note that due to [11]Heisenberg's uncertainty principle it is
   mathematically IMPOSSIBLE to know both frequencies and their locations
   exactly, there always has to be a tradeoff -- the input signal itself
   tells us everything about location but nothing about frequencies, Fourier
   transform tells us everything about frequencies but nothing about their
   locations and wavelet transform is a midway between the two -- it tells us
   something about frequencies and their approximate locations.

   Of course there is always an inverse transform for a wavelet transform so
   we can transform the signal, then manipulate the frequencies and transform
   it back.

   Wavelet transforms use so called [12]wavelets (tiny waves) as their basis
   function, similarly to how Fourier transform uses [13]sine/[14]cosine
   functions to analyze the input signal. A wavelet is a special function
   (satisfying some given properties) that looks like a "short wave", i.e.
   while a sine function is an infinite wave (it goes on forever), a wavelet
   rises up in front of 0, vibrates for a while and then gradually disappears
   again after 0. Note that there are many possible wavelet functions, so
   there isn't a single wavelet transform either -- wavelet transforms are a
   family of transforms that each uses some kind of wavelet as its basis. One
   possible wavelet is e.g. the [15]Morlet wavelet that looks something like
   this:

                         _
                        : :
                       .' '.
                       :   :
              .'.      :   :      .'.
              : :     :     :     : :
             .'  :    :     :    :  '.
 ____  ..    :   :    :     :    :   :    ..  ___
     ''  '. .'    :   :     :   :    '. .'  ''
          '_'     :   :     :   :     '_'
                  :   :     :   :
                   : :       : :
                   : :       : :
                   '.'       '.'

   The wavelet is in fact a [16]complex function, what's shown here is just
   its real part (the [17]imaginary part looks similar and swings in a
   perpendicular way to real part). The transform can somewhat work even just
   with the real part, for understanding it you can for start ignore complex
   numbers, but working with complex numbers will eventually create a nicer
   output (we'll effectively compute an envelope which is what we're
   interested in).

   The output of a wavelet transform is so called scalogram (similar to
   [18]spectrum in Fourier transform), a multidimensional function that for
   each location in the signal (e.g. time in audio signal or pixel position
   in an image) and for each frequency gives "strength" of influence of that
   frequency on that location in the signal. Here the "influence strength" is
   basically similarity to the wavelet of given frequency and shift,
   similarity meaning basically a [19]dot product or [20]convolution.
   Scalogram can be computed by [21]brute force simply by taking each
   possible frequency wavelet, shifting it by each possible offset and then
   convolving it with the input signal.

   For big brains, similarly to Fourier transform, wavelet transform can also
   be seen as transforming a point in high dimensional space -- the input
   function -- to a different orthogonal [22]vector basis -- the set of basis
   vectors represented by the possible scaled/shifted wavelets. I.e. we
   literally just transform the function into a different coordinate system
   where our coordinates are frequencies and their locations rather than
   locations and amplitudes of the signal (the original coordinate system).

   TODO

Links:
1. wikipedia.md
2. math.md
3. fourier_transform.md
4. signal_processing.md
5. frequency.md
6. jpeg_2000.md
7. compression.md
8. fourier_transform.md
9. cosine_transform.md
10. spectrogram.md
11. uncertainty_principle.md
12. wavelet.md
13. sin.md
14. cos.md
15. morlet.md
16. complex_number.md
17. imaginary_number.md
18. spectrum.md
19. dot_product.md
20. convolution.md
21. brute_force.md
22. vector_basis.md