[letterhead] | |
AT&T Bell Laboratories | |
600 Mountain Avenue | |
Murray Hill, NJ 07974-2070 | |
201 582-3000 | |
Dear Yves,
You asked me what I’m up to, and what Caroline is doing…
Caroline is almost walking: she can stand up, without support, for 10 or 15 seconds, and when she has a support (our hands, or a piece of furniture) she takes little steps. She’s always happy and is a real joy… except at night, when she still wakes up very often and asks for mommy.
As to the mommy, she has been considering the curious setup I’m going to describe to you.
Jim Johnston (who Albert knows well) told us long ago (a year) that he’d like to have a setup to produce wavelet packets, but where he’d be able to change midstream the base being used. When we obtained bases on the interval with an equal number of scale functions and wavelets for each resolution, we told him that we had devised something that did exactly what he wanted: you could chop it into pieces, and create optimal packets for each piece.
(In parentheses: When I learned the construction of “localized sine” bases — in connection with which, so the engineering folks tell me, I should cite not only Malvar, but also Prinsen and Bradley, who were cited in Malvar’s article and had already come up with some of the ideas — I pointed it out to Johnston right away as a solution. But he prefers wavelet packets, because they allow the use of different resolutions at once. That is, if you have a low-frequency signal from \( t_0 \) to \( t_1 \), but also little kebab bites of high frequency from \( t_2 \) to \( t_3 \) and from \( t_4 \) to \( t_5 \), where \( t_0 < t_2 < t_3 < t_4 < t_5 < t_1 \), then with wavelets you can model the low frequencies throughout the whole window \( t_0 \rightarrow t_1 \), while using the little windows for the high frequencies. With a setup such as Malvar’s, you’d have to cut everything into pieces, even for the low frequencies. Apparently, that’s a real problem for chunks of music with multiple instruments, according to Johnston (who tried to implement Prinsen and Bradley).)
But he didn’t like that reply! Even though we were cutting things in a way that did not ruin the regularity! Using an argument of Albert’s, I explained to him that it’s as if we were extending the function smoothly and then decomposing that extension. The reason he rejected it is this: suppose that you reconstruct the signal after round-off, or quantization, or some other process that adds noise to the coefficients. Then, from the very fact that the wavelets on the interval have an abrupt edge at the end of the interval, the reconstruction after noise will have discontinuities. Worse yet: errors in the coefficients corresponding to very low frequencies can lead to such discontinuities, which is to say, to high-frequency errors. Veeerry bad, says J.J.
So, I’ve thought up the following hybrid scheme:
• Suppose we want blocks of size \( T \), with a different basis of wavelet packets on each block.
• We start by decomposing, and applying all possible filters to, all the data between 0 and \( T+\Delta T \), where \( \Delta T \) is chosen so that, even at the coarsest resolution, no function has support greater than \( \Delta T \).
(I’m assuming that we have decided a priori not to go beyond a fixed number of consecutive filters.) It doesn’t much matter what we do at the edge \( T+\Delta T \). (In practice, I think it’s best to use your wavelets on the interval for this edge, for the time being.)
• We now decide which, among all possible bases, is the optimal one. (That is, we decide about the optimal tiling for this chunk of signal. Since we are using the interval \( 0 \rightarrow T + \Delta T \) for that decision, whereas later on we will restrict to \( 0\rightarrow T \), the decision might not in fact be optimal, but I don’t know how to fix this.)
• This decision taken, we take a step back. The goal, for this chunk \( 0\rightarrow T \), is to use only functions whose support have nontrivial intersection with \( [0,T] \). In fact, the answer is given by your construction, but I’m going to choose not to orthonormalize at the end (for reasons I’ll explain below). I want the chosen superposition to reproduce exactly the signal on \( [0,T] \), and I will use only wavelet packets that are not modified at the end. Some of them will have a tail going beyond \( T \) — and those tails will be very important, but I don’t want to distinguish them except for the part contained in \( [0,T] \). This means I should eliminate certain packets: every time I use a splitting with \( m_0 \) and \( m_1 \), the filters at the very end using \( m_1 \) only yield linear combinations of what’s given by having \( m_0 \) at the end. (It was you who observed that the \( \psi_{j,k}|_{[0,T]} \) that have less than half their support in the interior of \( [0,1] \) are in fact linear combinations of the \( \phi_{j,k}|_{[0,1]} \).) More concretely: \[ \eqalign{ \psi& (x) = \sum^{N-2}_{n=0} a_n \phi(x-n) &+ &Q(x)\cr &\uparrow &&\downarrow\cr &\text{ support }&&\text{tail,} \cr &[0, 2N-1] &&\text{having support }\cr &&&[N-1,2N-1]\cr } \] where \[ \eqalign{ a_0 &= \frac{h_{2N-1}}{h_0},\cr a_n &= \frac{h_{2N-1-2n} - h_{2n} a_{n-1}}{h_0}. } \] A completely analogous formula holds for \( m_1 (\xi), m_0(\xi) \). So, each time that I do a splitting at endpoint \( T \), I transfer the \( N-1 \) coefficients from the end of the \( m_1 \) band to the \( m_0 \) band (using the formula above), and I drop the \( N-1 \) corresponding taps in the \( m_1 \) band.
The result is indeed a representation of \( f \) by wavelet packets, which reproduces \( f \) exactly in \( [0,T] \) and where each edge packet has a tail extending beyond \( T \) of a size matching its resolution.
(Those tails are the reason why I haven’t used your setup directly: if I use the coefficients resulting from orthonormalization, I’m able to write down a nice tail for \( \psi \), but for wavelet packets incorporating several \( m_1 \)’s, my tails become ever shorter, which is not the desired effect. Moreover, the procedure here is simpler down the line.)
• Now we move on to the next block. I start by taking the difference between \( f|_{[T, \infty]} \) and the “tails” of the previous block. That is, \[ \eqalign{ f|_{[0,T]}(x) &= \sum_{\alpha}c^0_{\alpha} \phi_{\alpha} (x)|_{[0,T]} \quad(\phi_\alpha\text{ being wavelet packets)} \cr &=\sum_{\text{inner }\alpha} c^0_{\alpha} \phi_{\alpha}(x) + \sum_{\text{edge }\alpha } c^0_{\alpha}\phi_{\alpha}(x)|_{[0,T]} }\] \[ \Rightarrow f^{\operatorname{diff}}|_{[T,\infty)}(x) = f|_{[T,\infty)} (x) - \sum_{\text{edge }\alpha} c^0_{\alpha} \phi_{\alpha}(x) |_{[T,\infty)} . \] This difference \( f^{\operatorname{diff}}(x) \) equals zero at \( T \), together with all its derivatives up to order \( n \), if \( \psi \in C^{n+\epsilon} \). Therefore, at edge \( T \), it can be decomposed perfectly via the interval construction that you and S. Jaffard introduced some years ago, using only \( \phi_{j,k} \)’s with support contained in the interval (or the half-line, since I’m only considering one edge), and some supplementary \( \psi_{j,k} \)’s (\( N-1 \) of them to be exact).
• At the other edge, \( 2T \), I do the same thing as before. (For simplicity, let’s suppose that \( T > \Delta T \), so the tails of \( [0,T] \) don’t go beyond \( 2T \).) That is, I first look at \( [T,2T{+}\Delta T] \) to decide what tiling to choose in the time-frequency domain, and I perform the decomposition suitable to the edge \( 2T \), redistributing the numbers for the last \( N-1 \) taps of each \( m_1 \) over the corresponding \( m_0 \).
The whole amounts to a variation on a construction where one uses “too few” scale functions at left edges and “too many” scale functions at right edges; the resulting construction, too, has as many scale functions as wavelets at each resolution. Moreover, this construction has the advantage that if noise is introduced near the edges, it won’t lead to discontinuities. So long as one uses only a fixed number \( J \) of resolution levels, the functions used in the decomposition always form a Riesz basis. If I denote the coefficients obtained by \( c_{n,\alpha} \), where \( n \) is for the block \( [nT, (n{+}1) T] \) and \( \alpha \) is the wave packet index, I find \[ \|f\|^2 \leq 2 \sum_{n,\alpha}|c_{n,\alpha}|^2 \] (because the \( \phi_{n,\alpha} \) are orthogonal for fixed \( n \), and the \( \phi_{n,\alpha} \) and \( \phi_{n+k,\beta} \) have disjoint supports if \( k\geq 2 \)).
What’s more, the effect described above of “redistributing” the coefficients at the edges leads to a bound of the type \[ \eqalign{ \sum_{\sigma} |c_{n,\alpha}|^2 \leq\ & C \,2^{J} \sum_{\alpha} |\langle f|_{[nT,(n+2)T]}, \phi_{n,\alpha} \rangle |^2\cr &\uparrow\cr &\text{depends on the}\cr &\text{choice of }m_0, m_1 } \] \[ \Rightarrow \sum_{n,\alpha} |c_{n,\alpha}|^2 \leq 2\, C\, 2^J \|f\|^2. \] If \( J \) is large, the conditioning constant given by those bounds is really small…
J. Johnston is very enthusiastic about this construction because he loves this idea of blocks that interpenetrate over a distance prescribed by the resolution at each level. We shall see what that gives in practice.
And that’s what I’ve been up to! (Apart from teaching, and writing the article with Albert and Pierre Vial about wavelets on the interval.)
Hearty greetings to Thierry and Albert! Hugs and kisses,
Ingrid
\[ \star\qquad\star\qquad\star \]
Cher Yves,
Tu me demandes ce que je fais, et ce que fait Caroline…
Caroline marche presque: elle se tient debout, sans appui, pendant 10 à 15 secondes, et quand elle a un appui (nos mains, ou un meuble), elle fait des petits pas. Elle est toujours gaie et une vraie joie… sauf la nuit, où elle se réveille encore très souvent et demande sa maman.
Quant à sa maman, elle a regardé la drôle de schéma que je vais te décrire ici.
Jim Johnston (qu’Albert connaît bien) nous avait dit depuis longtemps (un an) qu’il aimerait bien un schéma où il pourrait faire des paquets d’ondelettes, mais où il pourrait changer le choix de la base à utiliser en cours de route. Quand nous avons obtenu les bases sur l’intervalle avec nombre égal de fonctions échelle et ondelettes à chaque résolution, nous lui avons annoncé que nous avions une réponse que faisait exactement ce qu’il faisait: on pourrait découper en morceaux, et faire des paquets optimaux sur chaque morceau.
(Entre parenthèses: quand j’avais appris la construction des bases “sinus localisés” — pour lesquelles, me disent les ingénieurs, il faudrait citer non seulement Malvar, mais aussi Prinsen and Bradley, cités dans l’article de Malvar, et qui avaient déjà eu une partie des idées — je l’ai aussitôt indiquée à Johnson comme une solution. Mais il aime mieux les paquets d’ondelettes, parce qu’ils permettent d’avoir des résolutions différents en même temps. C.à.d., si tu as un signal de basse fréquence de \( t_0 \) à \( t_1 \), mais aussi des petits chouïas de haute fréq. de \( t_2 \) à \( t_3 \), et de \( t_4 \) à \( t_5 \), où \( t_0 < t_2 < t_3 < t_4 < t_5 < t_1 \), alors tu peux, avec les ondelettes, utliliser toute la fenêtre \( t_0 \rightarrow t_1 \) pour la basse fréq., et en même temps de petites fenêtres pour les hautes fréq. Avec un schéma à la Malvar, tu découperais en morceaux, même pour les basses fréq. Apparemment, c’est un réel problème pour les morceaux de musique avec plusieurs instruments, me dit Johnston (qui a essayé d’implémenter Prinsen et Bradley.)
Mail il n’aimait pas cette réponse! Malgré le fait que nous coupions de façon à ne pas déranger la regularité! En utilisant un argument d’Albert, je lui expliquais que c’était comme si on prolongeait la fonction de manière douce et qu’on décomposait alors cette extension. La raison pour laquelle il n’en voulait pas est la suivante: supposons qu’on reconstruise apès arrondi, ou quantification, ou un autre procédé qui a superposé un bruit aux coefficients. Alors, par le fait même que les ondelettes sur l’intervalle ont un bord abrupt à la fin de l’intervalle, la reconstruction, après erreurs, aura des discontinuités…Pire: des erreurs sur des coefficients correspondant à de très basses fréquences peuvent mener à ces discontinuités, c.à.d. des erreurs de haute fréquence. Trrrrès mauvais, d’après J.J.
Alors j’ai pensé au schéma hybride suivant:
• Supposons qu’on veuille des blocs de taille \( T \), avec une base différente de paquets d’ondelettes sur chaque block.
• Commençons par décomposer, en faisant tous les filtrages possibles, toutes les données entre 0 et \( T+\Delta T \), où \( \Delta T \) est choisi de façon telle que, même à la résolution la plus grossière, aucune fonction n’a un support plus grand que \( \Delta T \).
(Je suppose qu’on a a priori décidé de ne pas aller au-delà d’un nombre fixe de filtrages successifs). Peu importe ce qu’on fait au bord \( T+\Delta T \). (En pratique, je crois que le mieux est d’utiliser tes ondelettes sur l’intervalle pour ce bord-ci, provisoire.)
• Décidons alors quelle est, parmi toutes les bases possibles, la base optimale. (C.à.d., on décide du pavage optimal, pour ce bout de signal. Comme on utilise \( 0 \rightarrow T + \Delta T \) pour cette décision, alors qu’on va se restreindre à \( 0\rightarrow T \) plus loin, la décision pourrait bien ne pas être tout à fait optimale, mais je ne sais pas comment y remédier.)
• Cette décision prise, retournons en arrière. Le but est de n’utiliser, pour ce morceau \( 0\rightarrow T \), que des fonctions dont le support a une intersection non triviale avec \( [0,T] \). En fait, la réponse est donnée par ta construction, mais je vais choisir de ne pas orthonormaliser au bout (pour des raisons que j’explique plus loin). Je veux que la superposition choisie reproduise exactement le signal sur \( [0,T] \), et je n’utiliserai que des paquets d’ondelettes non modifiés au bout. Certains d’entre eux auront une queue que dépasse \( T \) — et ces queues seront très importantes mais je ne veux les distinguer que par la partie contenue dans \( [0,T] \). Ceci veut dire que je devrai éliminer certains paquets: chaque fois que j’utilise un “splitting” avec \( m_0 \) et \( m_1 \), les filtres tout au bout utilisant \( m_1 \) ne donnent que des combinaisons linéaires de ce que les \( m_0 \) au bout donnent. (C’est ton observation que les \( \psi_{j,k}|_{[0,T]} \) qui ont moins de la moitié de leur support à l’intérieur de \( [0,1] \) sont en fait des combinaisons linéaires des \( \phi_{j,k}|_{[0,1]} \).) Concrètement: \[ \eqalign{ \psi& (x) = \sum^{N-2}_{n=0} a_n \phi(x-n) &+ &Q(x)\cr &\uparrow &&\downarrow\cr &\text{ support }&&\text{queue} \cr &[0, 2N-1] &&\text{qui a support }\cr &&&[N-1,2N-1]\cr } \] où \[ \eqalign{ a_0 &= \frac{h_{2N-1}}{h_0},\cr a_n &= \frac{h_{2N-1-2n} - h_{2n} a_{n-1}}{h_0}. } \] Une formule tout à fait analogue tient pour \( m_1 (\xi), m_0(\xi) \). Alors à chaque fois que je fais un “splitting” au bout \( T \), je reporte les \( N-1 \) coeff. du bout de la bande \( m_1 \) dans la bande \( m_0 \) (utilisant la formule ci-dessus), et je laisse tomber les \( N-1 \) taps correspondants dans la bande \( m_1 \).
Le résultat est bien une représentation de \( f \) par des paquets d’ondelettes, qui reproduit \( f \) exactement dans \( [0,T] \) et où tous les paquets du bord ont des queues de la taille correspondant à leur résolution, dépassant \( T \).
(Ces queues ont la raison pour laquelle je n’ai pas utilisé ton schéma directement: si j’utilise les coeffs. résultant d’une orthonormalisation, j’arrive à écrire une jolie queue pour \( \psi \), mais pour des paquets d’ondelettes incorporant plusieurs \( m_1 \), mes queues deviennent de plus en plus courtes, ce qui n’est pas l’effet désiré. En plus, ce schéma-ci est plus simple pour la suite).
• Procédons maintenant au bloc suivant. Je commence par faire la différence entre \( f|_{[T, \infty]} \) et les “queues” du bloc précédent. C.à.d. \[ \eqalign{ f|_{[0,T]}(x) &= \sum_{\alpha}c^0_{\alpha} \phi_{\alpha} (x)|_{[0,T]}\quad\phi_\alpha\text{ paquets d’odelettes} \cr &=\sum_{\alpha\text{ intérieures}} c^0_{\alpha} \phi_{\alpha}(x) + \sum_{\alpha \text{ bord}} c^0_{\alpha}\phi_{\alpha}(x)|_{[0,T]} }\] \[ \Rightarrow f^{\operatorname{diff}}|_{[T,\infty)}(x) = f|_{[T,\infty)} (x) - \sum_{\alpha\text{ bord}} c^0_{\alpha} \phi_{\alpha}(x) |_{[T,\infty)}. \] Cette différence \( f^{\operatorname{diff}}(x) \) est égale à zéro en \( T \), ainsi que toutes des dérivées jusqu’à l’ordre \( n \), si \( \psi \in C^{n+\epsilon} \).
Au bord \( T \), elle peut donc être décomposée à merveille avec le schéma sur l’intervalle que S. Jaffard et toi avaient construit il y a quelques années, n’utilisant que les \( \phi_{j,k} \) avec supports contenus dans l’intervalle (ou la demi-droite, puisque je ne regarde qu’un seul bord), et quelques \( \psi_{j,k} \) supplémentaires (exactement \( N-1 \)).
• A l’autre bout, \( 2T \), je fais la même chose qu’avant. (Pour plus de simplicité, supposons \( T > \Delta T \), de façon à ce que les queues de \( [0,T] \) ne dépassent pas \( 2T \).) C.à.d. je regarde d’abord \( [T,2T+\Delta T] \) pour décider quel dallage choisir en temps-fréquence, et je fais la décomposition adaptée au bord \( 2T \), en redistribuant les nombres pour les derniers \( N-1 \) taps de chaque \( m_1 \) sur le \( m_0 \) correspondant.
Le tout correspond à une variation sur un schéma où on utiliserait “trop peu” de fonctions échelle aux bords gauches et “trop” de fonctions échelle aux bords droits; le résultat est aussi un schéma avec autant de fonctions échelle que d’ondelettes à chaque résolution; en plus, ce schéma a l’avantage que si on injecte du bruit près des bords, il ne donnera pas lieu à des discontinuités. Aussi longtemps qu’on n’utilise qu’un nombre fixe \( J \) de niveaux de résolution, les fonctions utilisées dans la décomposition constituent toujours une base de Riesz. Si je dénote les coeffs obtenus par \( c_{n,\alpha} \), \( \,n \) pour le bloc \( [nT, (n+1) T] \), \( \alpha \) pour l’indice du paquet d’onde, alors je trouve \[ \|f\|^2 \leq 2 \sum_{n,\alpha}|c_{n,\alpha}|^2 \] (parce que les \( \phi_{n,\alpha} \) sont orthogonaux pour \( n \) fixe, et les \( \phi_{n,\alpha} \) et \( \phi_{n+k,\beta} \) ont des supports disjoints si \( k\geq 2 \)).
D’autre part, l’effet de “redistribution” des coeffs aux bords, décrit plus haut, mène à une borne du type \[ \eqalign{ \sum_{\sigma} |c_{n,\alpha}|^2 \leq\ & C 2^{J} \sum_{\alpha} |\langle f|_{[nT,(n+2)T]}, \phi_{n,\alpha} \rangle |^2\cr &\uparrow\cr &\text{dépendant}\cr &\text{des }m_0, m_1 \text{ choisis} } \] \[ \Rightarrow \sum_{n,\alpha} |c_{n,\alpha}|^2 \leq 2\, C\, 2^J \|f\|^2. \] Si \( J \) est grand, la constante de conditionnement donnée par ces bornes est fort petite…
J. Johnston est très enthousiaste pour ce schéma parce qu’il aime bien cette idée d’interpénétration des blocs sur une distance dictée par la résolution de chaque niveau. Nous allons voir maintenant ce que cela donne en pratique.
Et voilà ce que je fais! (A part enseigner, et rédiger l’article avec Albert et Pierre Vial, sur les ondelettes sur l’intervalle).
Un grand bonjour à Thierry et Albert! Je t’embrasse,
Ingrid