Hypercomplex Wavelets
(Adding link to page about Selesnick's filter design) |
m (→Implementation) |
||
(56 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
+ | [[Image:Steerablefilters.jpg|thumb|320px|right|Conference article [http://digitalcommons.shu.ac.uk/mmvl_papers/1/ Steerable filters generated with the hypercomplex dual-tree wavelet transform]]] | ||
=Introduction= | =Introduction= | ||
− | Complex wavelets are superior to real-valued wavelets because they are nearly shift-invariant. Complex wavelets yield amplitude-phase | + | Complex wavelets are superior to real-valued wavelets because they are nearly shift-invariant. [[Complex Wavelet Filters|Complex wavelets]] yield amplitude-phase |
information in a similar way as the Fourier transform does. In contrast to the Fourier transform, wavelets allow to analyse the | information in a similar way as the Fourier transform does. In contrast to the Fourier transform, wavelets allow to analyse the | ||
signal locally and thus can be applied to signals with a non-stationary statistic (such as images of a natural scene). In the same | signal locally and thus can be applied to signals with a non-stationary statistic (such as images of a natural scene). In the same | ||
way as a one-dimensional signal requires complex numbers to represent the local structure of the signal, two-dimensional signals | way as a one-dimensional signal requires complex numbers to represent the local structure of the signal, two-dimensional signals | ||
− | require hypercomplex numbers. | + | require hypercomplex numbers. [http://www-sigproc.eng.cam.ac.uk/~ngk/ Kingsbury] has developed the '''Dual-Tree Complex Wavelet Transform''' which allows to recursively compute complex wavelet transforms. Analogous to one-dimensional analysis requiring complex values, two-dimensional analysis requires 4-valued complex numbers (hypercomplex values). Bülow, Kingsbury, and others already have successfully used hypercomplex numbers for analysing two-dimensional signals. |
=Implementation= | =Implementation= | ||
− | The implementation makes use of | + | [[Image:Dhwt circle.png|thumb|right|400px|High- and low-frequency decomposition using the dual-tree complex wavelet transform. The approximate shift-invariance leads to reduced aliasing]] |
− | + | [[HornetsEye]] now contains an implementation of the Dual-Tree Complex Wavelet Transform. The implementation makes use of [[Complex Wavelet Filters|Hilbert transform pairs of wavelet bases]]. The wavelet transform was implemented with [[HornetsEye]]'s **MultiArray** class. | |
− | [[ | + | |
+ | =Wavelet Editor= | ||
+ | [[Image:Waveletedit2.png|thumb|320px|right|Wavelet editor]] | ||
+ | An editor for visualising linear combinations of wavelets was implemented. | ||
+ | The code requires [http://rubyforge.org/projects/korundum/ qt4-qtruby], and [[HornetsEye]]. The source code is part of the [[HornetsEye]] source package. You may need to compile the user interface design file using ''rbuic4'' like this: | ||
<pre> | <pre> | ||
− | + | rbuic4 waveletEdit.ui > ui_waveletEdit.rb | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
− | [ | + | You can view the source files in their current state at [http://bazaar.launchpad.net/%7Ewedesoft/hornetseye/trunk/files http://bazaar.launchpad.net/~wedesoft/hornetseye/trunk/files] in the subdirectory ''samples/hypercomplex''. |
=See Also= | =See Also= | ||
* [[Image:Hornetseye.png|40px]] [[HornetsEye]] | * [[Image:Hornetseye.png|40px]] [[HornetsEye]] | ||
+ | * [[Complex Wavelet Filters]] | ||
+ | |||
=External Links= | =External Links= | ||
+ | <html><div class="floatright"><span><a href="/mmvlwiki/index.php/Image:Wavelet_Transforms.gif" class="image" title=""><img src="/mmvlwiki/images/1/1b/Wavelet_Transforms.gif" alt="" width="120" longdesc="/mmvlwiki/index.php/Image:Wavelet_Transforms.gif" /></a></span></div></html> | ||
* [http://taco.poly.edu/selesi/ Ivan Selesnick's homepage] | * [http://taco.poly.edu/selesi/ Ivan Selesnick's homepage] | ||
* [http://www-sigproc.eng.cam.ac.uk/~ngk/ Nick Kingsbury's homepage] | * [http://www-sigproc.eng.cam.ac.uk/~ngk/ Nick Kingsbury's homepage] | ||
+ | ** N G Kingsbury: [http://www-sigproc.eng.cam.ac.uk/~ngk/publications/ngk_ACHApap.pdf Complex wavelets for shift invariant analysis and filtering of signals], Journal of Applied and Computational Harmonic Analysis, vol 10, no 3, May 2001 | ||
+ | ** J Fauqueur, N Kingsbury and R Anderson: [http://www-sigproc.eng.cam.ac.uk/~ngk/publications/fauqueur_icip06.pdf Multiscale keypoint detection using the dual-tree complex wavelet transform], Proc. IEEE Conference on Image Processing, Atlanta, GA, 8-11 Oct 2006 | ||
+ | * Thomas Bülow: [http://www.ks.informatik.uni-kiel.de/~vision/doc/Dissertationen/Thomas_Buelow/diss.ps.gz Hypercomplex Spectral Signal Representations for Image Processing and Analysis], PhD thesis, 1999 | ||
+ | * J. Wedekind, B. Amavasai, K. Dutton: [http://shura.shu.ac.uk/953/ Steerable Filters Generated With The Hypercomplex Dual-Tree Wavelet Transform], ICSPC07 proceedings (also see [http://vision.eng.shu.ac.uk/jan/icspc07-foils.pdf foils (PDF)]) (I think there's a bug in the paper. I need to use <math>H_1(z)=(-z)^{-M}\,H_0(z^{-1})</math> (see Selesnicks paper) where <math>M</math> is odd. Maybe this explains the trouble I have with choosing the sampling offsets in some cases) | ||
+ | * [http://www.wedesoft.demon.co.uk/hornetseye-api/files/hypercomplex-txt.html Hypercomplex wavelet example] | ||
+ | * [http://www.walterpfeifer.ch/liealgebra/ The Lie Algebras su(N), an Introduction] by Walter Pfeifer | ||
+ | * [http://arxiv.org/abs/0907.5356v1 Clifford algebra, geometric algebra, and applications], lecture notes by Douglas Lundholm, Lars Svensson | ||
+ | * Related work | ||
+ | ** [http://home.comcast.net/~cmdaven/hyprcplx.htm Clyde Davenport's page on commutative hypercomplex mathematics] | ||
+ | ** K. Krajsek, R. Mester: [http://www.vsi.cs.uni-frankfurt.de/download/KrajsekVisapp06.pdf A Unified theory For Steerable And Quadrature Filters], International Conferences VISAPP and GRAPP 2006 | ||
+ | |||
+ | {{Addthis}} | ||
[[Category:Projects]] | [[Category:Projects]] | ||
[[Category:Nanorobotics]] | [[Category:Nanorobotics]] |
Latest revision as of 12:08, 16 March 2011
Contents |
[edit] Introduction
Complex wavelets are superior to real-valued wavelets because they are nearly shift-invariant. Complex wavelets yield amplitude-phase information in a similar way as the Fourier transform does. In contrast to the Fourier transform, wavelets allow to analyse the signal locally and thus can be applied to signals with a non-stationary statistic (such as images of a natural scene). In the same way as a one-dimensional signal requires complex numbers to represent the local structure of the signal, two-dimensional signals require hypercomplex numbers. Kingsbury has developed the Dual-Tree Complex Wavelet Transform which allows to recursively compute complex wavelet transforms. Analogous to one-dimensional analysis requiring complex values, two-dimensional analysis requires 4-valued complex numbers (hypercomplex values). Bülow, Kingsbury, and others already have successfully used hypercomplex numbers for analysing two-dimensional signals.
[edit] Implementation
HornetsEye now contains an implementation of the Dual-Tree Complex Wavelet Transform. The implementation makes use of Hilbert transform pairs of wavelet bases. The wavelet transform was implemented with HornetsEye's **MultiArray** class.
[edit] Wavelet Editor
An editor for visualising linear combinations of wavelets was implemented. The code requires qt4-qtruby, and HornetsEye. The source code is part of the HornetsEye source package. You may need to compile the user interface design file using rbuic4 like this:
rbuic4 waveletEdit.ui > ui_waveletEdit.rb
You can view the source files in their current state at http://bazaar.launchpad.net/~wedesoft/hornetseye/trunk/files in the subdirectory samples/hypercomplex.
[edit] See Also
[edit] External Links
- Ivan Selesnick's homepage
- Nick Kingsbury's homepage
- N G Kingsbury: Complex wavelets for shift invariant analysis and filtering of signals, Journal of Applied and Computational Harmonic Analysis, vol 10, no 3, May 2001
- J Fauqueur, N Kingsbury and R Anderson: Multiscale keypoint detection using the dual-tree complex wavelet transform, Proc. IEEE Conference on Image Processing, Atlanta, GA, 8-11 Oct 2006
- Thomas Bülow: Hypercomplex Spectral Signal Representations for Image Processing and Analysis, PhD thesis, 1999
- J. Wedekind, B. Amavasai, K. Dutton: Steerable Filters Generated With The Hypercomplex Dual-Tree Wavelet Transform, ICSPC07 proceedings (also see foils (PDF)) (I think there's a bug in the paper. I need to use <math>H_1(z)=(-z)^{-M}\,H_0(z^{-1})</math> (see Selesnicks paper) where <math>M</math> is odd. Maybe this explains the trouble I have with choosing the sampling offsets in some cases)
- Hypercomplex wavelet example
- The Lie Algebras su(N), an Introduction by Walter Pfeifer
- Clifford algebra, geometric algebra, and applications, lecture notes by Douglas Lundholm, Lars Svensson
- Related work
- Clyde Davenport's page on commutative hypercomplex mathematics
- K. Krajsek, R. Mester: A Unified theory For Steerable And Quadrature Filters, International Conferences VISAPP and GRAPP 2006