Le 21 septembre 2004 : Bonjour et bienvenue sur cette page qui traitera de mon stage de deuxième année ENSEIRB, réalisé au CETP.
Au cours de mon cursus en école d'ingénieur à l'ENSEIRB en informatique, j'ai été amené à effectuer plusieurs stages.
Au cours de ma seconde année, j'avais un stage de 4 mois que j'ai effectué au CETP, un laboratoire parisien situé à Vélizy. Ce stage portait principalement sur le remaniement du code réalisé par Etienne Huot pour sa thèse à l'INRIA.
Au CETP, dans l'équipe EMA, quelques personnes cherchent à étudier l'altération des surfaces de sols agricoles nus par la pluie. Des mesures ont été réalisées, permettant d'obtenir l'état d'une surface à un instant t donné, et après avoir fait pleuvoir pendant un certain temps, pour donner la surface à l'instant t+1. On cherche à interpoler l'état de la surface à un temps t+1/2. Différentes méthodes permettent de calculer l'evolution d'une surface vers une autre, en utilisant diverses techniques comme le morphing, le warping, etc...
Etienne Huot, lors de sa thèse à l'INRIA, présente une technique d'interpolation par l'utilisation de distances géodésiques. Cette technique permet une approximation plus réaliste de l'état de la surface à un temps t+1/2. Pour ses calculs, il a réalisé une chaîne de traitements composée de plusieurs petits programmes basés sur la bibliothèque de traitement d'image Inrimage, de l'INRIA. Ces programmes présentent le désavantage d'être hétérogènes, et les calculs sont plutôt longs. Dans ce cadre on a besoin d'homogénéiser le code, et aussi de l'optimiser si possible.
Second problème : Etienne, pour visualiser le résultat de ses calculs, utilise un logiciel complexe mais puissant et coûteux, pour mettre en forme ses résultats en 3D. De plus, il doit bien être le seul à encore s'en servir à l'INRIA. Du coup, on aimerait bien avoir un petit programme de visualisation de surfaces en 3D, facile à utiliser.
Dans un premier temps je me suis familiarisé avec la bibliothèque Inrimage et avec le sujet, avant de me lancer dans le remaniement de code à proprement parler. Dans un premier temps j'ai réécrit pas mal de code, et j'ai conçu le programme GLvis, permettant la visualisation de surfaces au format Inrimage. Le remaniement et la lecture du code ont permis d'homogénéiser le tout, mais aussi de déceler quelques erreurs dans les programmes originaux. En plus de l'homogénéisation du code et de la mise au point de GLvis, j'ai aussi mis en place la structure inricache, une structure permettant la manipulation d'images au format inrimage de manière plus aisée, et proposant une optimisation de l'utilisation mémoire par le biais de caches, dont la taille est spécifiée par l'utilisateur.
L'ENSEIRB demande un certain nombre de documents à rédiger au long du stage. Certains sont à fournir au fur et à mesure, pour donner au tuteur ENSEIRB (Georges Eyrolles, ce très cher Georgy, pour l'occasion) des nouvelles de l'avancement du stage, et d'autres à fournir à la fin du stage :
Le code ayant été réalisé au format doxygen, Une API-doc a été
générée
et est disponible ici.
Quelques screenshots
de GLvis ont aussi été réalisés pour montrer un peu le résultat de
mon labeur.
Vous pouvez trouver les sources des fichiers utilisés pour la
documentation ici.
J'ai aussi placé les codes sources dans une archive ici.
Vous pouvez naviguer dans l'arborescence du projet à cette adresse.
Quelques fichiers de données se trouvent là.