Prima Homepage
ImaLab
Generating C++ Modules
User Manual
The Command Shell
Running Imalab
Plugin Process
Pixels and Images
Interactive selection
Graphics: plots, profiles
Image file I/O
Image display
Connectivity Analysis
Image Processing(1)
Gaussian operators
Technical Documentation
Creating New Modules
Tutorial
Tutorial Download

[PREV][SUIV]

Initialisations

Qu'on veuille étudier une séquence d'images ou une seule image avec ImaLab, il faut savoir que de nombreuses initialisations doivent se faire dans un certain ordre. Grosso modo, il faut d'abord lire une image, ou une séquence; puis créer la fenêtre d'affichage, calculer les images filtrées, et ensuite on pourra tracer des courbes, afficher des graphiques. Il faut aussi lancer gnuplot, geomview, etc. De plus en plus, les initialisations sont faites automatiquement, selon les besoins, mais il est toujours utile de savoir ce qui doit se passer. Par exemple, les programmes ne peuvent pas deviner combien on veut avoir de places sur l'écran - par défaut, l'écran sera ridiculement petit, avec 1 seule place.

On reprend dans ce paragraphe l'ordre usuel des opérations au démarrage de ImaLab.

Lire une séquence

ls-seq "olea" liste les séquences existants dans un répertoire (sous-repertoire de asthma-images), et initialise la variable image-dir. La variable dirlist indique les répertoires qu'on peut lister ainsi. (Alain: en cas de modif, mettre à jour la valeur de dirlist dans le code).

load-sequence "olea001"charge la séquence indiqué, dans le vecteur ima-sequence; le nom est toujours relatif a image-dir. On peut afficher les images pendant le chargement: load-sequence(name,true)

Ensuite, on peut visualiser la séquence avec les fonctions defile et view-pages.

Lors d'une même session avec ImaLab, on peut charger d'autres séquences ultérieurement, avec des dimensions différentes: toutes les structures de données s'adapteront.

Lecture d'une sous-sequence

load-subsequence(nom,i1,i2,visu)Le booléen visu indique si on veut visualiser la séquence pendant le chargement (cela évite d'attendre). La variable globale sequence-step permet de réduire la densité de la séquence, et de ne lire qu'une image sur n; cette variable vaut 1 initialement.

Lecture des images de Nicolas

nd-load-subsequence(nom,i1,i2,visu)Les paramètres sont les mêmes que pour la fonction load-subsequence ci-dessus, mais les images sont prises chez Nicolas, selon ses conventions: le nom - WORK1 par ex. - est le nom d'un repertoire dans nd-ima-path, les images ont pour nom sequence-testiii. La séquence est chargée dans ima-sequence, et peut ensuite être affichée, donnée aux opérateurs, etc. comme toute séquence.

nd-show-subsequence(nom,i1,i2,visu)affiche seulement les images d'une séquence chez Nicolas, selon le gamma et le delai en vigueur. (Si le numéros des images sont difficiles à lire, penser à changer la couleur des graphiques - SetColor).

Initialiser l'image courante

La fonction image-setup effectue "les" calculs standard pour l'image courante, et initialise un certain nombre de variables globales. soit pour une image de la séquence: image-setup(i)
soit pour une image quelconque (ABGR ou Float) image-setup(ima)
Dans ce cas, on aura d'abord chargé l'image:
current-image = load-tif("olea010/olea010_014");
Le nom de l'image est toujours relatif à la variable image-dir, que l'on peut positionner, par exemple, en appelant ls-seq.
puis on appèle image-setup()

La fonction image-setup initialise les variables suivantes:

  • current-image
  • i-current indice dans la séquence courante
  • ii image courante, format TBitmapFloat
  • aux-bmp1 aux-bmp2 auxiliaires TBitmapFloat, même taille
  • mfxx mfyy TBitmapFloatVector, dérivées secondes
  • mfdx mfdy TBitmapFloatVector, dérivées premières
  • mflap TBitmapFloatVector, laplaciens
  • vsigma TFloatVector, les sigmas utilisés
  • voptsig TBitmapByteVector, niveau sigma optimal
  • imaf TBitmapABGR image de manoeuvre

Les calculs de filtres multi-échelles se font avec les paramètres

  • nb-levels nombre de niveaux
  • sigma-init sigma-factor sigma initial, facteur multiplicatif

et la fonction MultiFilter dans libFilter (module modFilter, fichier Filter2.cc)