Partenaires

CNRS
Logo PHIL
Logo lal



Rechercher

Sur ce site

Sur le Web du CNRS


Accueil du site > L’accélérateur PHIL > Description technique > Diagnostics faisceau > Mesure du profil transverse du faisceau (Stations YAG:Ce et YAG) > Code Matlab pour l’analyse des images "version 1.0" (11 avril 2011)

Code Matlab pour l’analyse des images "version 1.0" (11 avril 2011)

par BROSSARD Julien - 2 juin 2010

Cet article présente la version (au 11 avril 2011) du code MATLAB utilisé pour analyser les images afin d’extraire les dimensions transverses horizontale et vertical du faisceau de PHIL [1]. Le code - dans sa version actuelle - a été rédigé afin d’analyser les images prises à partir de la station YAG n°1 située (initialement) à 1925 mm de la photocathode. Cet article complète et prolonge la rubrique "Acquisition et traitement des images" située dans la partie "accès restreint" du site.

Remarque : des "mises à jour" et "améliorations" seront certainement réalisées dans les mois/années qui viennent. La mise à jour de ce code sera mentionnée dans cet article. Pour tout complément d’information ou remarque, contacter J. Brossard. Ce code est libre d’utilisation.

  1. Mise à jour
  2. Descriptif du code (11 avril 2011)
  3. Téléchargement du code (11 avril 2011)
  4. Annexes

Mises à jour

-  ATTENTION "nouvelle version" disponible à cette adresse : version du 27 juin 2011
- version du 11 avril 2011


Descriptif du code

Remarque : pour lancer l’exécution du code, il faut - depuis la fenêtre Matlab - saisir "analyse_mesures" au clavier (puis "return").

Afin d’extraire les dimensions transverses du faisceau, le programme nécessite quelques informations. Certaines informations sont écrites "en dur" (cf Annexe, d’autre sont définies par l’utilisateur, via un fichier d’entrée "input.txt" (dont un exemple se trouve ici), à savoir :

  • un dossier contenant N images (format "bitmap") réalisées avec le laser. Ce dossier ne doit pas contenir d’autres fichiers au format "bitmap".
  • un dossier contenant M images (au format bitmap) réalisées sans laser. Ce dossier ne doit pas contenir d’autres fichiers au format "bitmap".
  • nom du fichier de sortie dans lequel les informations seront enregistrées. doivent être transmises au programme via un fichier d’entrée "input.txt". (Un exemple de fichier input.txt se trouve dans la partie téléchargement de cette page).

Le programme utilise les M images afin d’extraire une cartographie du "courant d’obscurité moyen". Cette information est ensuite soustraite aux N images prises avec laser. Le code définie ensuite un "centre" du faisceau. Pour cela il utilise une petite partie [2] des points de plus grande intensité (de laquelle il extrait le barycentre, définissant ainsi "le cente du faisceau" [3]). Les N images sont ensuite projetées sur l’horizontale et la verticale. On dispose alors de 2*N courbes d’intensité projetées (voir image ci-dessous), à partir desquelles les largeurs de faisceau vont être estimées. Pour cela, une courbe gaussienne (dont le pic se situe à l’abscisse du "centre" du faisceau précédemment définit) passant "au plus près" [4] de la courbe est calculée. L’écart quadratique de cette gaussienne définit la largeur horizontale ou verticale du faisceau.

Cette opération est répétée sur les N images. La largeur du faisceau est ainsi la moyenne des N estimations et l’erreur statistique associé à cette estimation est obtenue par l’écart quadratique moyen de ces N mesures. Toutes ces informations sont stockées dans le fichier de sortie. De même, le code enregistre la position du centre pour chacune des images traitées.

L’image ci-dessous est un exemple de figure générée par le code. A gauche se trouve l’image transverse du faisceau (après soustraction du courant d’obscurité). Sur cette première image, l’ellipse noire indique les largeurs (sigma) du faisceau obtenues à partir des approximations gaussiennes. A gauche se trouve les 2 courbes projetées, ainsi que les gaussiennes (en vert). En bas des figure se trouve les valeurs des "écarts quadratiques moyens" des gaussiennes.

On peut trouver un exemple de "fichier de sortie" ici.


Téléchargement du code (version 1.0 du 11 avril 2011)

Le code en fichier "zip" est disponible ici.

Deux répertoires d’images peuvent être téléchargées ici afin d’utiliser le code sur de vrais images.

Remarques :

  • ce code a été rédigé sur un environnement Linux Ubuntu. Il est probable (pour les utilisateurs "windows") que quelques modifications mineures soient nécessaires (exemple, modifier les "/" par des "\").
  • ce code fonctionne aussi avec la version 7.10.0 de Matlab sous windows 2010.

Annexes

Paramètres écrits "en dur" dans le code :

  • les facteurs de grossissement horizontal ("GrV") et vertical ("GrV") du système optique situé entre l’écran phosphorescent et le capteur CCD.
  • l’angle ("angle_deg") d’orientation de l’écran phosphorescent par rapport à l’axe théorique du faisceau (pour la station YAG n°1, cet angle vaut 45°, pour les autres stations, cet angles vaut 0).
  • les dimensions (en mm) des pixels ("pixsize") du capteur CCD. Les pixels sont supposés carrés.

Dans la version actuelle, ces valeurs sont : GrV=0.12, GrH=0.16, angle_deg=45 pixsize=7.4e-3 (Voir la partie restreinte du site pour de plus amples informations).


[1] Une première version (datant de novembre 2009) de ce code est disponible dans la partie restreinte du site).

[2] Variable "nbpoucen" du code

[3] Voir la routine "find_max_v2.m"

[4] dans la version actuelle ce terme "au plus près" doit s’interpréter au regarde de la routine MATLAB "gaussfit.m". Un analyse plus fine doit éventuellement être envisagée