JMMC-OpenDev / oimaging

This module contains the OImaging java application developed by the JMMC technical team.
GNU General Public License v3.0
4 stars 3 forks source link

mise à jour de la bibliothèque d'image #84

Open buthanoid opened 2 years ago

buthanoid commented 2 years ago

début de discussion sur une mise à jour de la bibliothèque d'images

La Bibliothèque actuelle et ses problèmes

La bibliothèque d'images actuelle rassemble une copie de toutes les images dans OImaging (résultats de Run, chargements de fichiers Fits...). \ Elle respecte la propriété de non duplicat, ce qui signifie qu'on ne peut pas ajouter une image à la librairie s'il en existe déjà une équivalente. \ Enfin, elle se matérialise dans le formulaire d'entrée, sous la forme d'une liste de sélection d'image initiale (aussi pour l'image rgl). \ Notons que la bibliothèque possède aussi un mécanisme d'unicité des HDU_NAME.

La bibliothèque actuelle pose les problèmes suivants :

Images nécessaires

Rappelons quelles images nous avons besoin de pouvoir sélectionner en image initiale dans le formulaire d'entrée :

  1. l'image finale du dernier résultat, afin de lancer la suite du Run
  2. une image venant d'un fichier Fits chargé depuis le disque ou depuis SAMP
  3. une gaussienne créée par l'utilisateur avec des paramètres
  4. une image contenue dans un résultat (pas forcément le dernier résultat)
  5. une image parmi celles existantes, mais modifiée par l'utilisateur avec des paramètres

Zones de stockage

Actuellement OImaging comporte trois zones de stockage d'images :

  1. La bibliothèque d'images (avec la propriété de non duplicat)
  2. Les résultats qui contiennent leurs images
  3. Le formulaire d'entrée qui contient une image initiale et une image rgl

La bibliothèque contient les images suivantes :

L'utilisateur peut manuellement supprimer des images de la bibliothèque. \ Le formulaire d'entrée contient obligatoirement des images qui sont présentes dans la bibliothèque.

Proposition de nouvelle bibliothèque

Je propose de séparer la bibliothèque en zones, en fonction de l'origine des images : venant d'un résultat, chargée du disque', chargée par samp, créée, modifiée.

Je ne crois pas qu'il faille supprimer la liste de sélection d'image initiale. Demander à l'utilisateur d'aller se déplacer au résultat voulu, sélectionner l'image voulue, et cliquer sur un bouton pour la sélectionner en tant qu'image initiale, est trop fastidieux pour lui je trouve. \ A mon avis il faut remplacer la liste par une fenêtre de dialogue plus informative, qui affiche les images sélectionnables, avec quelques informations sur chacune, permettant de les idenfifier mieux que le HDU_NAME.

Je propose d'arrêter de stocker des copies des images de résultats dans la bibliothèque et de se contenter de les référencer. Je propose de ne plus assurer la propriété de non duplicat et de laisser l'utilisateur faire ses choix. Le problème qui pourrait arriver ici est la multiplication des images sélectionnables. Je pense qu'on pourrait avoir une option cochable pour n'afficher que les LAST_IMG, étant donné que généralement les images d'input sont déjà accessibles ailleurs dans la liste (dans les images créées, chargées etc).

Je propose de ne plus obliger à avoir en formulaire d'entrée une image de la bibliothèque. Quand on sélectionne une image, une copie est faite et placée dans le formulaire. Ainsi on peut par exemple renommer le HDU_NAME de cette copie sans avoir peur de modifier des images utilisées ailleurs.

buthanoid commented 2 years ago

plus de détails que j'avais écrit :

Détails de chaque action concernée

Load OIFitsFile

Toutes les images du document sont placées dans la bibliothèque en temps qu'images chargées du disque. Les images identifiées comme initiales et rgl du fichier sont placées en temps qu'image initiale et rgl du formulaire d'entrée. Pas besoin de chercher à les faire correspondre à des images dans la bibliothèque. \ On peut penser à ajouter un mécanisme de détection de duplicat, c'est à dire s'apercevoir que ce fichier a déjà été chargé, vérifier si les images sont différentes, et si oui demander à l'utilisateur s'il souhaite garder les deux, ou bien l'ancien, ou le plus récent.

Load FitsImageFile

Voir Load OIFitsFile. On pourrait ajouter un dialogue listant les images et permettant d'en sélectionner directement comme images initiale et rgl.

Load Result

Les images sont contenues dans le résultat. A voir si on maintient une liste de référence à synchroniser dans la bibliothèque, ou bien si à chaque fois qu'on demande à voir ce qu'il y a dans la bibliothèque on parcourt les résultats pour obtenir les références.

Receive OIFitsFile

Voir LOad OIFitsFile. Est-ce qu'une information est disponible pour distinguer une réception SAMP comparé à une autre ?

Receive FitsImageFile

Voir Load FitsImageFile et Receive OIFitsFile.

Add Image

Cette action reste interne et non accessible directement dans le GUI. Elle place désormais l'image selon l'origine et enregistre des informations supplémentaires :

L'action ne vérifie plus la propriété de non duplicat et se contente d'ajouter à la bibliothèque. Y a-t-il besoin de définir un ensemble de clé primaire permettant d'identifier une image dans la bibliothèque ? Autrement dit, y a-t-il besoin de retrouver une image dans la bibliothèque à partir d'une image que l'on dispose ou bien d'un ensemble d'informations que l'ont dispose (par exemple: origine disk, chemin src/image2.fits, etc) ?

L'action ne renvoie plus d'image équivalente appartenant à la bibliothèque. Le formulaire d'entrée contient des copies d'images, et est dispensé de se synchroniser avec la bibliothèque.

Remove Image

Bien que les images des résultats soient répertoriés dans la bibliothèque il n'est pas possible de supprimer une image d'un résultat depuis la bibliothèque. Il faut supprimer le résultat lui-même. \ Donc seules les autres images seront suppressibles.

Le bouton Remove Image doit sans doute être déplacé dans un endroit où on peut voir la bibliothèque. Ce n'est pas bien qu'il soit intégré au formulaire d'entrée, car le formulaire d'entrée est indépendant de la bibliothèque.

Create Image

Dans le dialogue, on ajoute deux boutons à cocher qui permettent de choisir si en plus de créer une image, on souhaite la sélectionner immédiatement comme initiale et rgl. Par défaut, le bouton initiale est coché, et le bouton rgl est non coché.

Le bouton Create image est déplacé dans l'action panel.

Modify Image

Voir Create Image.

Select Init Img

On enlève la liste de sélection. A la place, on place un champ texte donnant des informations sur l'image sélectionnées, qui permettent (imparfaitement) d'identifier celle-ci. On ajoute un bouton qui ouvre un dialogue listant les images sélectionnables comme image initiale.

Select Regul Img

Voir Select Init Img.

Delete Result

Cette action fait que les images de ce résultat ne sont plus accessible depuis la bibliothèque. A décider si cela a un effet immédiat (synchronizé) sur la bibliothèque ou bien si la bibliothèque se contente de mettre à jour ses références au moment où elles sont demandées.

Run More Iterations

Les image sont directement copiées du résultat vers le formulaire d'entrée. La bibliothèque n'intervient pas dans ce processus.

Load as input

Voir Run More Iterations.

Load as input with last img

Voir Run More Iterations.

Display Image

Devrait-il y avoir un moyen de montrer la bibliothèque et potentiellement d'afficher une image dans la bibliothèque sans que celle-ci fasse partie d'un résultat ou du formulaire d'entrée ?

Aussi il serait intéressant d'étudier la faisabilité d'un système de miniature, et d'un système d'aperçu d'images.

Set as init img

Voir Run More Iterations.

End Run

Voir Run More Iterations. En vérité il est plus ou moins prévu que cette action arrête de modifier automatiquement le formulaire d'entrée, à présent qu'il y a des nouveaux boutons prévus à cet effet.