Tags:
create new tag
, view all tags

Présents : Mireille, André, François, Brice, Cyril, Grégory

Objet : Contraintes, caractérisation des sorties et analyse d'un workflow dans Aida, suite de la réunion du 29/10

Points abordés:


Constitution d'un outil

schemaOutil.jpg


Contraintes

Comme les contraintes peuvent s'exprimer sur plusieurs entrees a la fois, il n'y aura qu'un seul fichier de contraintes par bloc. Ce fichier regroupera toutes les contraintes relatives a toutes les entrees de l'outil concerne. Le fichier de contraintes porte, pour le moment, l'extension '.cots'.

Jusqu'a maintenant les contraintes suivaient la syntaxe suivante:

Contrainte: {propriete} {comparateur} ({propriete} | {valeur_numerique} | {chaine} | {operation})

propriete: {numero_de_l'entree}:{ucd}.{tag} (.{tag})*

comparateur: =, !=, < , < =, >, >=

operation: ( ({propriete} | {valeur_numerique} | {chaine}) {operateur} ({propriete} | {valeur_numerique} | {chaine} | {operation}) )

operateur: +, -, *, /

Exemples:

2:em.accuracy.statError.flavor = statistical

1:pos.numBins2.I1 > (2:pos.numBins2.I1*(2/3)) ou 1:pos.numBins2.I2 <= 16

2:em.accuracy.statError.errorRefval.error < 0.0009


Sortie Charac d'un outil

La sortie d'un bloc est associee a un modele Characterisation (c'est a dire un fichier Characterisation generique): ceci permet de pouvoir verifier certaines contraintes avant execution du Workflow.

Pendant l'execution du workflow, les images produites par un bloc doivent obligatoirement etre liees a un fichier Characterisation pour que la verification de contraintes puisse fonctionner. Il y a deux solutions: soit ce fichier est genere a partir de l'image produite, soit l'outil le genere en meme temps que l'image resultant du traitement effectue.

La premiere possibilite implique que l'image produite soit de type FITS et ensuite que son en-tete soit en partie rempli: ce qui est vrai dans la majorite des cas. Comme les en-tetes FITS fournissent toutes les informations necessaires pour remplir l'axe spatial d'un fichier Characterisation, cet axe ne devrait poser aucun probleme. L'axe susceptible de poser le plus de probleme serait l'axe des flux (exemple dans l'enchainement de Marsiaa et de DetectLSB). Pour le remplir il est indispensable d'effectuer une analyse statistique de l'image.

Quoiqu'il en soit, lorsqu'il existe un doute sur la valeur d'un champs, on prefera lui donner la valeur 'unknown'. Ainsi, il sera possible lors de l'analyse des contraintes, de soit ignorer la contrainte portant sur ce champs, soit de la rejeter, soit d'effectuer un traitement particulier a l'aide d'une condition.

La deuxieme possibilite presente l'inconvenient d'exiger un travail plus consequent au concepteur de l'outil mais aussi de demander au concepteur d'anciens outils de les modifier afin de rajouter la generation du fichier Characterisation. Neanmoins, contrairement a la generation automatique depuis un FITS, on est certains que le fichier Characterisation fourni sera le plus complet et precis possible.

Dans l'ideal, Aida devra etre capable de gerer ces deux cas de figure !


A faire

Contraintes

  • ajouter une syntaxe pour des conditions sur une ou plusieurs contraintes (exemple: existance du fichier correspondant au masque a fournir a Marsiaa)
  • operateur logique 'OU' a introduire
  • prevoir l'identification de champs possedant la valeur 'unknown', ainsi qu'un traitement particulier a leur associer

Characterisation

  • exemples de contraintes (aucune obligation de respecter la syntaxe presentee ci-dessus)
  • exemples de fichier Characterisation
  • cas d'utilisation de Characterisation dans un Workflow (par exemple avec Marsiaa et DetectLSB): contraintes, images utilisees, fichier Characterisation associe a ces images, modeles characterisation des sorties de blocs et fichiers Characterisation des images sorties des blocs (faute de pouvoir les generer pour le moment !). *(voir egalement la possibilite de generer un fichier Characterisation depuis une image FITS)


Exemples de contraintes avec Characterisation -- MireilleLOUYS - 12 Nov 2007

Sur les entréees/sorties du bloc Marsia, exprimées en terme de Utypes issus de Characterisation : le programme Marsia est accesssible à cette adresse http://alinda.u-strasbg.fr/marsiaa/ avec la documentation nécessaire.

Segmentation de deux images superposables en 2 bandes differentes: utilisation possible d'un masque en entrée en plus. production d'une carte de segmentation

A partir du fichier de configuration de marsiaa: marsiia.conf

INPUT: liste de fichiers images

paramètres = nomFichiers ss extensions (.fits , FITS attendus) I1, I2, In , n<= 10.

Verifier:

1. que tous les Ik ont une resolution spatiale proche et exprimée dans la même unité:

  • Characterisation.SpatialAxis.Resolution.resolutionRefVal
  • Characterisation.SpatialAxis.Resolution.unit = idem que pour les images d'entrées
(voir aussi si on peut tester à la place SamplingPrecision.Refval mais c'est moins couramment renseigné dans les archives)

Commentaire de FB: attention que l'unité peut etre globalisee plus haut dans caracterisation. Il faut un algo montant: est-ce que c'est dans Resolution, sinon est ce que c'est dans le SpatialAxis

2. que les tailles sont identiques: numbins ( nb de points sur l'axe, charac.SpatialAxis:

  • Characterisation.SpatialAxis.numbins (vecteurs) égaux pour toutes les images d'entrées.

3. que les images sont superposables (Location identiques et meme système de coordonnées):

  • Characterisation.SpatialAxis.Coverage.Location.unit
  • Characterisation.SpatialAxis.Coverage.Location.coordsystem

Commentaire de FB: a mon avis le Location ne suffit pas, il faudrait prendre le support, et s'il n est pas la au moins le Bounds .... Characterisation.SpatialAxis.Coverage.Support Characterisation.SpatialAxis.Coverage.Bounds.Limit

4. aucune contrainte sur l'axe spectral:

5. observables : min -max > 100 vérification du contraste sur chaque image : max-min >=100 (sinon il faut faire une normalisation en niveau de gris et dans ce cas on enverrait un warning):

  • Characterisation.FluxAxis.Coverage.Bounds.unit égaux pour toutes les images d'entrée
  • Characterisation.FluxAxis.Coverage.Bounds.Extent ne sont pas forcément égaux pour toutes les images d'entrée( comparaison) mais si la dynamique (LimitHi-LimitLo) < 100
alors Marsia fait une extension de contraste linéaire et envoie un warning à l'utilisateur.


  • Characterisation.CharacterisationAxis.unit ?
  • Characterisation.CharacterisationAxis.ucd = idem pour toutes les images en INPUT
  • Characterisation.CharacterisationAxis.independantAxis = false
  • Characterisation.CharacterisationAxis.Bounds.Extent < 100

Commentaire de FB: le point important c'est le independantAxis false qui veut dire qu'on a une observable. la contrainte d'avoir le meme ucd me parait fausse car si on a affaire a un jeu d'images montrant differents param physiques spatialement (Temperature, metallicité, etc...) ou meme des couleurs differentes l'ucd va changer ....et l'unit aussi ...OK par contre pour Extent ...

MASK: fournir un fichier image ss forme FITS avec 2 niv de gris seulement 0 et 1:

1. Observable Axis : min=0, max=1 cad:
  • Characterisation.CharacterisationAxis.ucd = meta.code.class ( a assigner en sortie de la classification )
  • Characterisation.CharacterisationAxis.independantAxis = false
  • Characterisation.CharacterisationAxis.Bounds.Extent = 1 (image binaire)
2. Spatial Axis: numbins= Numbins INPUT images (Meme taille):
  • Characterisation.SpatialAxis.numbins (vecteurs) égaux pour toutes les images d'entrées.

OUTPUT:

Produire des cartes de segmentation avec une characterisation correcte:
  • Characterisation.CharacterisationAxis.ucd = meta.code.class
  • Characterisation.CharacterisationAxis.unit = unitless
  • Characterisation.SpatialAxis.numbins (vecteurs) égaux aux paramètres d'entrée.

Commentaire de FB: le numbins sera en fait egal ou inferieur au nombre de classes en entree. S'il vaut 1, c'est que la segmentation n'a pas marché. (Je suppose qu'on a fait l'analyse reelle des valeurs du fichier pour faire la caracterisation.)

Topic revision: r7 - 2007-11-14 - GregoryMantelet
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback