This is the mail archive of the gsl-discuss@sources.redhat.com mailing list for the GSL project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
hi
(finally) here is the new version of the discrete wavelet transform.
i incorporated (most) of your comments. here are the details:
(1) i got rid of all gsl_vector and gsl_matrix stuff internally. the
routines now use strided arrays.
(2) workspace is now allocated outside by separate calls and passed
on to the dwt routines.
gsl_wavelet_workspace_allocate()
gsl_workspace_free()
(3) the api now now makes use of strided arrays.
(4) coefficients for the wavelet are now from the original
publications. i give the same number of digits as in the
constants defined in gsl_math.h. calculations have been performed
in mathematica. (note: i have not yet found time to check
beylkins and coiflets, i removed them for now).
(5) i changed the gsl_wavelet structure. now only pointer are
assigned during initialization (is this the way you had in
mind?).
additions / further changes
(1) i changed the gsl_wavelet structure in a way that biorthogonal
wavelets can be implemented. these need two sets of filter
coefficients (see bspline.c). for the orthogonal case (haar.c and
daubechies.c) the second set just duplicates the first one.
(2) i clarified the problem i had with Th and Tv. according to an
email exchange with paul addison it is due to a different
convention of horizontal / vertical. this means that we both get
identical results.
(3) test_1D and test_2D do some more extensive tests. still i do not
know what errors / differences between original data and data
that has been transformed forward and backward i should expect.
the differences look ok to me.
(4) there are two different ways to perform the 2D transformation.
naming conventions seem to differ. i found standart versus
non-standart and rectangular versus square. in the standard case
you do a complete 1D transformation on each row and then on each
column. in the non-standart case you only do one step of the
transform on both, rows and columns. you then continue on the
submatrix that contains the "smoothing" in both directions (size
N/2 by N/2). maybe you will have to look at the code to see what
i mean. anyway i implemented both (_2D and _2Dns).
i did not change:
(1) i still include a api using gsl_vector for the 1D case. this is a
duplication like in gsl_sort which provides both interfaces,
array and vector.
(2) i kept the 2D case. i think it is essential because a major use
of wavelets is denoising, especially images and the 2D transform
is really simple.
(3) i also duplicated the api in the 2D case. it now includes both,
strided arrays and gsl_matrix respectively. (i used size1, size2,
tda in the 2D case to explicitly check for square matrices.
remaining question:
dwt.c line 238 ff (standart dwt)
you will realize that the if-then-else part strictly speaking is not
necessary. it is only here the do the "exact" backtransform, i.e.
columns and then rows. from a point of numerics, is there a rule / is
it known if this is better?
i hope this now betters suits gsl standarts. if you still feel unhappy about
the vector and matrix api, do not hesit to remove them. the 2D case, however,
looks essential to me (did you have something particular in mind, when you
first rejected it?).
- --
Dr. Ivo Alxneit
Laboratory for Solar Technology phone: +41 56 310 4092
CH-5232 Villigen fax: +41 56 310 2624
Paul Scherrer Institute http://solar.web.psi.ch
Switzerland gnupg key: 0x515E30C7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQFAeZdOAd7CE1FeMMcRAmUlAJ4tKIBumPiQz1SAeMm6sVgzKLi2UgCfWSUO
OqSYF7+HoW0h8BPhK+P/1O8=
=hpvC
-----END PGP SIGNATURE-----
Attachment:
gsl_wavelet.tar.gz
Description: application/tgz
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |