3.1 Extraction des données
3.1.1 Des données brutes aux données extraites
Nous allons ici tirer parti du fait que le filtrage de Fourier permet de diminuer grande- ment le volume des données. La figure 50, montre cela. Avant la transformée de Fourier, le signal est réparti sur les 800 points de l’échelle des délais. Après la transformée de Fourier, nous allons procéder à un filtrage et le signal utile ne sera réparti que sur environ 50 points de l’échelle des fréquences. On pourra donc ne conserver que ces points et ainsi grandement diminuer le volume des données à traiter par la suite. Cette opération de fenêtrage revient à une démodulation dans le domaine temporel.
Les données extraites prendront donc la forme d’un tableau 3d représentant le terme s(r, ω) issu du filtrage de Fourier. Nous allons nommer cette matrice s0[x, y, ω]. La figure 51
Chapitre 3. Mise en oeuvre du traitement des données TERMITES
Délai (fs)
Intens ité normalis éeIntens
ité
(unité ar
bitr
aire
)
Fréquence (rad/fs)
50 points
800 points
a
b
Figure 50 – Cadre a : Signal TERMITES en un point spatial, réparti sur 800 points de l’échelle des délais. Cadre b : Transformée de Fourier des données du cadre a, le signal utile n’est réparti dans ce domaine que sur 50 points.
Chapitre 3. Mise en oeuvre du traitement des données TERMITES
x100
2.
TF
1. Chargement
3.
Filtrage
4.
Fenêtrage
Données brutes
Données extraites
4000
4000
40
50
50
4000
4000
x y x x x y y x y yFigure 51 – Schéma récapitulatif de l’extraction de s[x, y, ω]. On part des données brutes qui consistent en une série de 800 images. L’extraction des données se fait sous-partie spatiale par sous-partie spatiale comme indiqué dans les parenthèses. A la fin de l’extrac- tion on dispose des données extraites sous la forme d’un tableau 3d qui contient toute l’information pertinente.
Chapitre 3. Mise en oeuvre du traitement des données TERMITES
On ne peut pas charger massivement toutes les images dans 12 Go de RAM pour effec- tuer le filtrage de Fourier. Néanmoins, l’ensemble de ces images peut se concevoir comme un volume 3d (x, y, τ ) de données. Le traitement de Fourier que nous allons effectuer, peut être fait position spatiale par position spatiale.
L’algorithme découpe le volume des données en sous-régions spatiales et il effectue le filtrage de Fourier successivement sur chacune d’elles. Ainsi on économise des accès au disque dur. Pour procéder de cette manière les données brutes sont enregistrées sous un format binaire. Cela permet d’accéder directement à des sous-zones d’une image enregistrée sur un fichier sur le disque, sans avoir à la charger en entier. Le format propriétaire .mat de Matlab convient à cet usage.
Dans le format .mat, une matrice est enregistrée sous la forme d’un vecteur qui est formé par la concaténation des colonnes successives de cette matrice. L’accès aux données sur le disque est rapide lorsqu’on cherche à lire des éléments contigus. En d’autres termes, lorsqu’on procède à un accès mémoire, il faut éviter de sauter des cases. Lorsqu’on cherche à accéder à des sous-zones d’une matrice, on a donc interêt à lire une ou plusieurs colonnes successives car elles vont correspondre à un ensemble de cases mémoires contiguës.
On a donc choisi de charger les données par zones spatiales successives ayant la forme de bandes verticales de 40 pixels de large. La cellule CCD a la forme d’un rectangle de rapport d’aspect 3/2, le faisceau étant rond, il n’occupe pas toute la cellule selon la dimension horizontale. Pour optimiser le volume des données et le temps de calcul, on ne traite pas les zones spatiales où il n’y a pas de signal. La zone à traiter est donc un carré de côté la largeur de la cellule, soit environ 4000 pixels.
Dans l’algorithme de traitement, le chargement en RAM et le filtrage de Fourier sous- zone spatiale par sous-zone spatiale se fait à l’aide d’une boucle "for" qui balaie les données. Sur la figure 51 cette boucle est schématisé entre les deux parenthèses.
Chaque itération de la boucle "for" traite une sous-zone donnée. L’itération commence par le chargement de cette sous-zone sur chaque image de la mesure. Ces données sont concaténées dans un tableau 3d M1[x, y, τ ]. On effectue une transformée de Fourier rapide
sur M1[x, y, τ ] selon la dimension représentant le délai τ (étape 2. sur la figure 51) pour calculer le tableau M2[x, y, ω]. Une coupe 2d (x, ω) de l’amplitude de M2[x, y, ω] à une
position y0 est tracée sur la figure 52. On distingue le pic central et les deux pics latéraux
décrits dans la section 1.3.
L’échelle de délai τ est issue du déplacement physique de la platine et donc ne peut pas stricto sensu être considéré comme linéaire. Pour corriger cela, on pourrait utiliser une méthode d’interpolation après zero-padding comme décrit dans [58]. Cependant cela nécessiterait beaucoup de temps de calcul et les défauts de linéarité de l’échelle τ sont très faibles (cf. 2.3).
L’étape suivante consiste à multiplier point à point le tableau M2[x, y, ω] par un filtre
gaussien centré sur la fréquence centrale du laser ω0 (étape 3. sur la figure 51) pour obtenir le tableau M3[x, y, ω]. Une coupe 2d (x, ω) de l’amplitude de M3[x, y, ω] à une position y0
est tracée sur la figure 52. Un pic latéral a été filtré.
Une fois le filtrage effectué, en dehors du pic latéral filtré le tableau M3[x, y, ω] est
composée uniquement de zéros, comme on peut le voir sur la figure 53. Sans perdre d’infor- mation, on peut donc fenêtrer cette matrice autour du pic latéral sur une certaine gamme de fréquence plus réduite et calculer le tableau M4[x, y, ω] (étape 4.). De cette manière, on
Chapitre 3. Mise en oeuvre du traitement des données TERMITES
Figure 52 – Coupe (x, ω) du tableau M2 en échelle logarithmique issue d’une mesure sur
le laser UHI-100.
Figure 53 – Coupe (x, ω) du tableau M3 issue d’une mesure sur le laser UHI-100. Les
Chapitre 3. Mise en oeuvre du traitement des données TERMITES
passe de 800 points à environ 50 dans la dimension fréquentielle. Les tableaux M4[x, y, ω]
calculés à chaque itération de la boucle sont ensuite concaténés dans un tableau s0[x, y, ω]
qui représente le terme s(x, y, ω).
Le tableau s0 représente un volume 3d de 4000×4000×50 points. En codant ses valeurs
avec des nombres complexes à virgule flottante en simple précision (8 octets), on obtient une matrice de 4000×4000×50×810243 = 6.9 Go, contenant autant d’information pertinente pour
le traitement que les données brutes qui occupaient 42.3 Go d’espace disque. Sous la forme du tableau s0, le volume des données extraites est donc inférieur à 12 Go. Elles peuvent
donc être stockées en RAM.
On peut maintenant enregistrer s0 sur le disque dur pour être en mesure de recom- mencer le traitement sans avoir à retraiter les données brutes. La durée de cette étape du traitement est d’environ 20 min.