Cohen-Daubechies-Feauveau wavelet
2634678
225605583
2008-07-14T14:56:55Z
79.181.101.53
/* Construction */ minor <math> enviroment error
{{otherusesof|CDF}}
[[Image:Jpeg2000 2-level wavelet transform-lichtenstein.png|thumb|256px|An example of the 2D wavelet transform that is used in [[JPEG2000]]]]
'''Cohen-Daubechies-Feauveau wavelet''' are the historically first family of [[biorthogonal wavelet]]s, which was made popular by [[Ingrid Daubechies]]. These are not the same as the orthogonal [[Daubechies wavelet]]s, and also not very similar in shape and properties. However their construction idea is the same.
The [[JPEG 2000]] [[Image compression|compression]] standard uses the biorthogonal CDF 5/3 wavelet (also called the [[LeGall 5/3 wavelet]]) for lossless compression and a CDF 9/7 wavelet for lossy compression.
==Properties==
* The [[primal generator]] is a [[B-spline]] if the simple factorization <math>q_{\mathrm{prim}}(X)=1</math> (see below) is chosen
* The [[dual generator]] has the maximum number of smoothness factors which is possible for its length.
* All generators and wavelets in this family are symmetric.
==Construction==
For every positive integer ''A'' there exists a unique polynomial <math>Q_A(X)</math> of degree ''A-1'' satisfying the identity
:<math>(1-X/2)^A\,Q_A(X)+(X/2)^A\,Q_A(2-X)=1</math>.
This is the same polynomial as used in the construction of the
[[Daubechies wavelet]]s. But, instead of a spectral factorization,
here we try to factor
:<math>Q_A(X)=q_{\mathrm{prim}}(X)\,q_{\mathrm{dual}}(X)</math>,
where the factors are polynomials with real coefficients and
constant coefficient 1. Then,
:<math>a_{\mathrm{prim}}(Z)=2Z^d\,\left(\frac{1+Z}2\right)^A\,q_{\mathrm{prim}}(1-(Z+Z^{-1})/2)</math>
and
:<math>a_{\mathrm{dual}}(Z)=2Z^d\,\left(\frac{1+Z}2\right)^A\,q_{\mathrm{dual}}(1-(Z+Z^{-1})/2)</math>
form a biorthogonal pair of scaling sequences. ''d'' is some integer used to
center the symmetric sequences at zero or to make the corresponding discrete filters
causal.
Depending on the roots of <math>Q_A(X)</math>, there may be up to
<math>2^{A-1}</math> different factorizations. A simple factorization is
<math>q_{\mathrm{prim}}(X)=1</math> and <math>q_{\mathrm{dual}}(X)=Q_A(X)</math>, then
the <math>\mathrm{primary}</math> scaling function is the [[B-spline]] of order
''A-1''. For ''A=1'' one obtains the orthogonal '''[[Haar wavelet]]'''.
==Tables of coefficients==
For ''A=2'' one obtains in this way the '''LeGall 5/3-wavelet''':
{|class="wikitable"
!A
!Q<sub>A</sub>(X)
!q<sub>prim</sub>(X)
!q<sub>dual</sub>(X)
!a<sub>prim</sub>(Z)
!a<sub>dual</sub>(Z)
|-
|2
|<math>1 + \frac12\,X</math>
|1
|<math>1 + \frac12\,X</math>
|<math>\frac12(1+Z)^2\,Z</math>
|<math>\frac12(1+Z)^2\,\left(-\frac14 + \frac32\,Z - \frac14\,Z^2\right)</math>
|}
----
For ''A=4'' one obtains the '''9/7-CDF-wavelet'''. One gets <math>Q_4(X)=1 + 2\,X + 5/2\,X^2 + 5/2\,X^3</math>, this polynomial has exactly one real root, thus it is the product of a linear factor <math>1-c\,X</math> and a quadratic factor. The coefficient ''c'', which is the inverse of the root, has an approximate value of -1.4603482098.
{|class="wikitable"
!A
!Q<sub>A</sub>(X)
!q<sub>prim</sub>(X)
!q<sub>dual</sub>(X)
|-
|4
|<math>1 + 2\,X + 5/2\,X^2 + 5/2\,X^3</math>
|<math>1-c\,X</math>
|<math>1 + (c + 2)*\,X + (c^2 + 2*c + 5/2)\,X^2</math>
|}
For the coefficients of the centered scaling and wavelet sequences one gets numerical values in an implementation–friendly form
{|class="wikitable"
!''k''
!Analysis lowpass filter
''(1/2 a<sub>dual</sub>)''
!Analysis highpass filter
''(b<sub>dual</sub>)''
!'''Synthesis lowpass filter'''
''(a<sub>prim</sub>)''
!'''Synthesis highpass filter'''
''(1/2 b<sub>prim</sub>)''
|----
| -4
| 0.026748757411
| 0
| 0
| 0.026748757411
|----
| -3
| -0.016864118443
| 0.091271763114
| -0.091271763114
| 0.016864118443
|----
| -2
| -0.078223266529
| -0.057543526229
| -0.057543526229
| -0.078223266529
|----
| -1
| 0.266864118443
| -0.591271763114
| 0.591271763114
| -0.266864118443
|----
| 0
| 0.602949018236
| 1.11508705
| 1.11508705
| 0.602949018236
|----
| 1
| 0.266864118443
| -0.591271763114
| 0.591271763114
| -0.266864118443
|----
| 2
| -0.078223266529
| -0.057543526229
| -0.057543526229
| -0.078223266529
|----
| 3
| -0.016864118443
| 0.091271763114
| -0.091271763114
| 0.016864118443
|----
| 4
| 0.026748757411
| 0
| 0
| 0.026748757411
|----
|}
==Numbering==
There are two concurring numbering schemes for wavelets of the CDF family.
* the number of smoothness factors of the lowpass filters, or equivalently the number of [[Moment_(mathematics)|vanishing moments]] of the highpass filters, e.g. 2,2
* the sizes of the lowpass filters, or equivalently the sizes of the highpass filters, e.g. 5,3
The first numbering was used in Daubechies' book ''Ten lectures on wavelets''.
Neither of this numbering is unique. The number of vanishing moments does not tell about the chosen factorization. A filterbank with filter sizes 7 and 9 can have 6 and 2 vanishing moments when using the trivial factorization, or 4 and 4 vanishing moments as it is the case for the JPEG 2000 wavelet.
==Lifting decomposition==
For the trivially factorized filterbanks a [[Lifting scheme|lifting decomposition]] can be explicitly given.
(See Section 3.2.4 of this [http://nbn-resolving.de/urn:nbn:de:gbv:46-diss000103131 thesis])
===Even number of smoothness factors===
Let <math>n</math> be the number of smoothness factors in the B-spline lowpass filter,
which shall be even.
Then define recursively
: <math>a_0 = \frac{1}{n}</math>
: <math>a_m = \frac{1}{(n^2-4\cdot m^2)\cdot a_{m-1}}</math>
The lifting filters are
: <math>s_{m}(z) = a_m\cdot(2\cdot m + 1)\cdot(1 + z^{(-1)^m})</math>
Conclusively the interim results of the lifting are
: <math>x_{-1}(z) = z</math>
: <math>x_{0}(z) = 1</math>
: <math>x_{m+1}(z) = x_{m-1}(z) + a_m\cdot(2\cdot m+1)\cdot(z+z^{-1}) \cdot z^{(-1)^m} \cdot x_{m}(z)</math>
which leads to
: <math>x_{n/2}(z) = 2^{-n/2} \cdot (1+z)^n \cdot z^{n/2 \bmod 2 - n/2}</math>
The filters <math>x_{n/2}</math> and <math>x_{n/2-1}</math> constitute the CDF-n,0 filterbank.
===Odd number of smoothness factors===
Now, let <math>n</math> be odd.
Then define recursively
: <math>a_0 = \frac{1}{n}</math>
: <math>a_m = \frac{1}{(n^2-(2\cdot m-1)^2)\cdot a_{m-1}}</math>
The lifting filters are
: <math>s_{m}(z) = a_m\cdot((2\cdot m + 1) + (2\cdot m - 1)\cdot z) / z^{m \bmod 2}</math>
Conclusively the interim results of the lifting are
: <math>x_{-1}(z) = z</math>
: <math>x_{0}(z) = 1</math>
: <math>x_{1}(z) = x_{-1}(z)+a_0\cdot x_0(z)</math>
: <math>x_{m+1}(z) = x_{m-1}(z) + a_m\cdot((2\cdot m+1)\cdot z + (2\cdot m-1)\cdot z^{-1}) \cdot z^{(-1)^m} \cdot x_{m}(z)</math>
which leads to
: <math>x_{(n+1)/2}(z) \sim (1+z)^n</math>
where we neglect the translation and the constant factor.
The filters <math>x_{(n+1)/2}</math> and <math>x_{(n-1)/2}</math> constitute the CDF-n,1 filterbank.
==Literature==
* I. Daubechies: ''Ten Lectures on wavelets'', SIAM 1992
* [http://www.gvsu.edu/math/wavelets/student_work/EF/how-works.html JPEG 2000: How does it work?]
* [http://www.ebi.ac.uk/~gpau/misc/dwt97.c Fast discrete CDF 9/7 wavelet transform source code in C language (lifting implementation)]
[[Category:Biorthogonal wavelets]]