Développement

 

Introduction | Installation | Généralités | Interface | Outils | Langage | Développement

 

Avant-propos

Le prérequis à tout développement avec OpenIsaac est la connaissance du langage MATLAB. Le langage ISAAC, orienté objet, peut être vu comme une toolbox spécialisée de MATLAB et est utilisable comme telle. L'application OpenIsaac doit être lancée pour que l'environnement soit actif. 

L'architecture d'OpenIsaac est conçue pour rendre l'environnement le plus transparent possible lors de la phase de développement d'une routine et immédiatement opérationnel quand il s'agit de la faire fonctionner. Trois types de développements sont possibles :

      Le développement de scripts ou de fonctions MATLAB utilisant le langage ISAAC. 

      Le développement de modules ou d'algorithmes gérés par IsaacModBox de manière automatisée.

      Le développement d'outils graphiques pour OpenIsaac.

Les modules, algorithmes et outils n'ont pas à être déclarés dans le path MATLAB. 

 

Développement de scripts ou de fonctions MATLAB

Voir langage.

 

Développement de modules

Les modules sont des fonctions MATLAB particulières de type « plug-in » destinées aux dossiers Modules et « MesModules » (défini en préférences). Les modules apparaissent dans la barre de menu OpenIsaac et sont exécutés par IsaacModBox. Un module peut aussi être appelé dans un script par la fonction du langage IsaacModule. 

 

Pour être reconnus comme tels, les modules doivent correspondre à l'architecture suivante :

      Dossier container Mod_xxx ou sous-dossier M_xxx.

      [ Dossier <nom de module> pouvant contenir un sous-répertoire private ]. 

      Fichier <nom de module> (.m ou .p) : fonction principale du module. Un module peut être codé en langage C compilé (fichier .mex). Dans ce cas, le fichier .m ne contiendra que des commentaires. L'entête du fichier doit faire figurer un commentaire d'information qui sera affiché lors de la sélection du mode Pointeur Info dans la barre de menu ou par le bouton info module ... d'IsaacModBox.

      Un module possède un nombre quelconque de paramètres en entrée et en sortie. Tous les paramètres sont des objets du langage ISAAC.

      Appelé avec l'argument '-f,' un module doit retourner la liste de ses paramètres d'entrée et de sortie.

      En cas d'erreur, un module doit sortir avec la fonction MATLAB error.

Un exemple de module est donné ci-dessous :

 

 

function varargout = CorrGamma(varargin)

% Correction Gamma vectorielle

%

% INPUT:

% - image PxQ

% - valeur numÈrique : gamma (> 0)

%

% OUTPUT:

% - image PxQ

%

% Plugin for OpenIsaac

% © 2018 Alain Clément - Université d'Angers

 

%------------------------------------------------

 

% PLUGIN PARAMETERS

if (nargin == 1) && strcmp(varargin{1},'-f')

    % input

   varargout{1} = {'IMG','image', ...

               'DATA','gamma'};

    % output

   varargout{2} = {'IMG','image'};

   return

end

 

% INPUT

ObjIMG = varargin{1};

gamma = IsaacDATA_get(varargin{2},'Val');

 

%------------------------------------------------

 

if (IsaacIMG_get(ObjIMG,'BitClass') ~= 1)

   ObjIMG = IsaacIMG_changegamma(ObjIMG,gamma);

end  

% sinon ObjIMG inchangé

 

%------------------------------------------------

 

% OUTPUT

varargout{1} = ObjIMG;

 

 

      Un module peut appeler un autre module avec la fonction IsaacModule.

      Un module peut appeler un algorithme avec la fonction IsaacModule.

Un algorithme est une fonction MATLAB qui possède un nombre quelconque de paramètres qui ne sont pas nécessairement des objets du langage ISAAC. Un algorithme a vocation à être utilisé dans les modules ou le langage ; il doit donc être de portée assez générale. 

      Pour être pris en charge par la plateforme, un algorithme doit être placé dans un dossier Algorithmes [sous-dossier A_xxx ] à l'intérieur du répertoire Modules ou « MesModules ».

      Un algorithme peut appeler un autre algorithme avec la fonction IsaacModule.

 

Développement d'outils graphiques

Les outils sont des objets graphiques de type « plug-in » destinés aux dossiers Outils et « MesOutils » (défini en préférences). Ils apparaissent dans la barre de menu d’OpenIsaac. Pour s'intégrer dans l'environnement ISAAC, les outils doivent posséder une architecture particulière et respecter la chartre graphique ISAAC :

      Dossier <nom de l'outil> pouvant contenir un sous-répertoire private.

      Fichier <nom de l'outil> (.m ou .p) : interface graphique de l'outil et initialisation. L'entête du fichier doit faire figurer un commentaire d'information qui sera affiché lors de la sélection du mode Pointeur Info dans la barre de menu.

      Fichier <nom de l'outil>_cb (.m ou .p) : fonctions réflexes de l'interface graphique.

      Fichier <nom de l'outil>_upd (.m ou .p) : fonctions de réaction aux événements émis par les objets @IsaacImage. L'abonnement aux événements (IsaacEventUpdListe) doit être fait lors de l'initialisation de l'outil.

Liste des codes événements :

 

 

 1   : plus d'image cible

 

 2   : changement de cible

 

 11  : avertissement AVANT fermeture image cible

       (=> événement 1 ou 2)

 12  : avertissement AVANT fermeture image non cible

 

 20  : nouvelle image

       (peut => événement 2 si 1ère image ouverte)

 

 31  : réinitialisation ou modif dimXY|nbbits|nbplans|(ROI & ECOL)) image cible

 32  : idem non cible

 

 41  : modif ROI et contenu réel image cible 

 42  : idem non cible

 

 51  : modif ECOL et contenu réel image cible

 52  : idem non cible

 

 61  : modif contenu réel image cible

 62  : idem non cible

 

 71  : modif ROI image cible 

 72  : idem non cible

 

 81  : modif ECOL image cible

 82  : idem non cible

 

 91  : modif params d'affichage

 92  : idem non cible

 

 101 : modif échelle ou zoom image cible

 102 : idem non cible

 

 111 : changement de nom image cible

 112 : idem non cible

 

 PRINCIPE GENERAL : sauf 11 et 12, les événements sont envoyés APRES l'action

 

 

 

      Les noms de variables et fonctions commençant par 'Isaac' sont réservés au développement de la plate-forme et ne doivent pas être utilisés pour des développements tiers.

      En complément des fonctions du langage, la variable globale ISAACINFO (lecture seule) regroupe les informations utiles pour l'intégration d'un outil graphique dans l'environnement ISAAC :

 

 

ISAACINFO.DefPos

ISAACINFO.FontName

ISAACINFO.FontSize

ISAACINFO.ImMaxPlans

ISAACINFO.IsaacColor1

ISAACINFO.IsaacColor2

ISAACINFO.IsaacColor3

ISAACINFO.IsEnd

ISAACINFO.PalStr

ISAACINFO.PrefDir

ISAACINFO.ProfilsDir

ISAACINFO.ROIColor1

ISAACINFO.ROIColor2           

ISAACINFO.ROIColor3

ISAACINFO.ROIColor4            

ISAACINFO.TextColor1

ISAACINFO.TextColor2

ISAACINFO.TextColor3

 

 

position par défaut des fenêtres (coin sup gauche / Screen.defpos).

police de caractère.

taille de fonte.

nombre maximal de plans colorimétriques des images (1 à 99).

couleur d'interface 1 (double).

couleur d'interface 2 (double).

couleur d'interface 3 (double).

terminaison OpenIsaac en cours (false | true).

cell array des noms de palettes de couleur gérées par OpenIsaac (palettes MATLAB).

chemin du dossier Preferences.

chemin du dossier Profils colorimétriques ICC.

couleur de ROI 1 (uint8). 

couleur de ROI 2 (uint8).

couleur de ROI 3 (uint8).

couleur de ROI 4 (uint8).

couleur de texte 1 (double).

couleur de texte 2 (double).

couleur de texte 3 (double). 

 

 

Introduction | Installation | Généralités | Interface | Outils | Langage | Développement

OpenIsaac © 2007-2018 A. Clément - Université d'Angers