Home>Programmation>Java>Ondelettes

Projet : analyse par Ondelettes

Ce projet suit le précédent d'Extraction de Points caractéristiques
L'analyse dans ce projet faisant appel à des convolutions assez complexes l'opportunité d'une méthode d'analyse plus rapide est bienvenue.
D'autant que l'extraction de points caractéristique n'est pas tout, car un suivi de contour par exemple va prendre en compte pour chaque point détecté, de leur direction, pour ensuite les relier entre eux. La méthode de sélection des points sera différente par conséquent de la précédente.

Une analyse par ondelette très pratique, est celle de Haar. On peut lui reprocher de ne pas être invariante par translation (le même signal pris à un autre instant donne un résultat légèrement différent).

L'analyse par ondelette est à rapprocher à l'analyse de Fourrier ; les résultats sont ceux que l'on obtiendrait si l'on effectuait une transformée de Fourrier par fenêtre glissante, dont la taille de fenêtre serait adaptés à celle des détails recherchés. En ceci l'analyse reprend  la thématique de mon mémoire de DEA, l'analyse des dimensions fractales d'un signal, mais par une autre approche.

Principe de l'analyse :

Le principe mathématique est assez complexe, mais l'algorithme appliqué à un signal discret est redoutablement simple.
Il décompose le signal en deux parties, le signal filtré par un passe-bas, et la différence avec le signal d'origine, qui est donc celui-ci filtré par un passe-haut. On les appelle H et G (ou S et D selon les sources).

Entrée H G
a b c d -> (a+b)/2 (c+d)/2 b-H d-H

On remarque que G1=(b-a)/2 et G2=(d-c)/2.

Pour H on ne considère pas (b+c)/2 ; en effet le procédé de "décimation" applique aux deux résultats un sous-échantillonnage, ce qui a pour conséquence -et permet- d'obtenir en sortie autant d'informations qu'à l'entrée. En particulier on peut inverser le processus et retrouver mathématiquement un signal identique à l'original.

Inversion :

H G signal
(a+b)/2 (c+d)/2 (b-a)/2 (d-c)/2 -> H1-G1 H1+G1 H2-G2 H2+G2

on obtient bien (a, b, c, d)

Récurrence :

On peut à nouveau appliquer l'opération sur le signal H
(H11, H12) -> (H21, G21)

a b c d e f g h
H11   H12   H03   H04   G11 G12 G13 G14
H11   H12   H03   H04  
H21       H22         G21 G22 G11 G12 G13 G14

Composition :

Comme pour les dérivées il découle du principe d'orthogonalité, que pour traiter un signal bidimensionnel (image 2D), on peut indifféremment effectuer la transformer sur H (horizontale) puis V (verticale), ou sur V puis H.

F-> H / Gx / Gy / Gxy
11 12 13 14    (11+12)/2 (13+14)/2 (11-12)/2 (13-14)/2
21 22 23 24    (21+22)/2 (23+24)/2 (21-22)/2 (23-24)/2
31 32 33 34    (31+32)/2 (33+34)/2 (31-32)/2 (33-34)/2
41 42 43 44    (41+42)/2 (43+44)/2 (41-42)/2 (43-44)/2
(11+21)/2 (12+22)/2 (13+23)/2 (14+24)/2 (11+12+21+22)/4 (13+14+23+24)/4 (11-12+21-22)/4 (13-14+23-24)/4
(31+41)/2 (32+42)/2 (33+43)/2 (34+44)/2 (31+32+41+42)/4 (33+34+43+44)/4 (31-32+41-42)/4 (33-34+43-44)/4
(11-21)/2 (12-22)/2 (13-23)/2 (14-24)/2 (11+12-21-22)/4 (13+14-23-24)/4 (11-12-21+22)/4 (13-14-23+24)/4
(31-41)/2 (32-42)/2 (33-43)/2 (34-44)/2 (31+32-41-42)/4 (33+34-43-44)/4 (31-32-41+42)/4 (33-34-43+44)/4

Démo (applet) :

-> page suivante

Valid XHTML 1.0 Transitional