Version 3.1.2
Version 3.1.1
Version 3.1.0
Version 3.0.3
Version 3.0.2
Version 3.0.1
Version 3.0.0
Version 1.30
Version 1.29
Version 1.28
Version 1.27
Version 1.26
Version 1.25
Version 1.24
Version 1.23
Version 1.22
Version 1.21
Version 1.20
Version 1.19
Version 1.18
Version 1.17
Version 1.16
Versions 3.1 et suivantes
Les listes de changements ne sont plus écrites qu'en anglais, ici.
20/06/2006 - Version 3.0.3
Corrections de bugs:
Changements dans les routines internes de lecture des flux de commandes, qui étaient
assez instables en particulier sous windows. Bon, je ne sais pas si c'est mieux maintenant.
Améliorations mineures:
ajout de paramètres (optionnels) request_id dans les commandes qui demandent une
réponse à Anatomist: GetInfo,
NewId et
ObjectInfo
27/04/2006 - Version 3.0.2
Corrections de bugs:
Il restait des problèmes dans la gestion des référentiels, en particulier
quand on joue avec les contrôles de transformation manuelle. Un nouveau
système de mise à jour des référentiels a été mis en place.
Correction: à la création des Fusions 2D, l'ordre des objets spécifié par l'utilisateur
n'était pas pris en compte
Correction: le paramètre linkedcursor_on_slider_change de la commande
WindowConfig ne fonctionnait pas
Corrections dans des accès concurrents multithreadés qui causaient des plantages
uniquement sur les systèmes multi-CPU sous windows (curieusement), mais qui pouvaient
être dangeraux sous tout autre système également. D'ailleurs il doit rester des bugs
parce qu'il arrive encore à Anatomist de planter, mais rarement maintenant...
Les extrêma de texture des Fusions 3D étaient incorrects et, en particulier, faux
quand ces textures étaient exportées
Correction: la dégradation de la résolution des textures (coupes, volumes...) pouvait
entrer dans une boucle infinie quand les textures ne peuvent pas être affichées du tout
(sur des OpenGL/cartes 3D buggés)
Correction de l'interpolation des volumes qui était fausse et discontinue sur
certaines coupes
Correction d'un certain nombre d'autre bugs mineurs
Améliorations mineures:
La sortie des événements SliceEvent a été un peu enrichie
Nouvelle commande: NewId pour générer un ID d'objet disponible. Cette commande est utilisée en particulier par BrainVisa pour éviter de réattribuer des IDs déjà assignés du côté anatomist.
Un manuel en français commence à voir le jour, tout beau tout neuf, écrit par Isabelle Denghien.
11/10/2005 - Version 3.0.1
Corrections de bugs:
Sauvegarde des graphes: les noeuds n'étaient pas toujours estampillés comme modifiés
quand des changements avaient lieu dans le module ROI. Il pouvait arriver que les
listes de voxels ne soient pas sauvées.
Corrections dans les "levelsets" (qui n'en sont pas) du module ROI, le mode 2D
fonctionne de nouveau.
Corrections / modifications dans le comportement des graphes quand on change la
couleur (matériau) de certains noeuds
Correction d'un plantage quand on ouvrait les propriétés de génération de texture
lorsque l'objet n'était pas en mode "texture générée"
Les palettes sont lues avant la config utilisateur parce qu'elles peuvent servir dès
cette étape
Anatomist peut maintenant être entièrement compilé en utilisant la librairie Qt 4.
Ceci dit, le portage est loin d'être fini et il y a de nombreux problèmes d'affichage avec
Qt 4. C'est une première étape...
Améliorations dans les configurations et directives de compilation
Correction dans l'inversion des transformations, qui ne donnait pas des résultats faux
mais faisait des choses pas propres, peut-être à l'origine de certains plantages lors de
la manipulation des référentiels et transformations
Correction d'un problème de précision/échelle de palette de textures avec une très
faible dynamique dans l'intervalle [0-1]
Correction des captures d'écran: les objets "fantômes" (qui ne sont pas dessinés dans le
Z-buffer) n'apparaissaient pas dans les snapshots. De plus c'était parfois le buffer OpenGL
arrière qui était sauvé à la place du buffer avant.
ROI: correction de plantage dans le nommage de labels
Correction d'un bug important dans un système interne et central (observeurs) qui
pouvait conduire à des plantages aléatoires, en particulier lors de la manipulation
de référentiels (mais pas uniquement). En contrepartie il est possible que le chargement
et la construction d'objets complexes (graphes) soit encore un peu plus lourde qu'avant...
Optimisations dans la destruction de multiples objets (graphes), l'interface graphique
n'est remise à jour qu'à la fin, ça semblait être un goulot d'étranglement sur certains
systèmes (mon vieux Mac...)
Correction d'un problème qui, sous Windows, saturait le gestionnaire de fenêtres et
faisait tout planter avec des affichages bizarres sur tout l'écran quand on chargeait
2 graphes de sillons. Le problème venait d'une duplication des icônes de référentiels
(donc leur création est normalement plus rapide maintenant, en plus)
Optimisations dans la gestion (création/destruction) des listes d'affichage: en particulier
le rendu de nombreux petits objets qui changent (graphes de sillons en mode 2D) était vraiment
très très lent. C'est toujours lent par rapport à ce que c'était dans anatomist 1.30, mais on
regagne un ordre de grandeur par rapport à 3.0.0. Peux mieux faire...
Améliorations mineures:
Les propriétés de palette, matériau et texture sont maintenant sauvées dans le .minf
des objets écrits par Anatomist (maillages, volumes, textures)
Les propriétés de textures indiquées dans les .minf sont lues et utilisées sur les
objets chargés par Anatomist
Des événements "Slice" peuvent être émis quand le plan de coupe change dans une vue
une nouvelle commande SliceParams
permet de régler le plan des objets contenant un plan de coupe
Le mode de fusion "maillage coupé" (CutMesh) est désormais accessible en mode normal
(il était réservé au mode "instable"), mais sans le plan découpé car c'est cette partie qui
est instable (et toujours pas débuggée). En mode instable, on a accès à tout, comme avant.
Petites améliorations dans les réglages par défaut des maillages de segments (par
d'éclairage, pas de faces cachées)
21/06/2005 - Version 3.0.0
Pourquoi version 3 alors qu'il n'y a jamais eu de version 2 ? Et bien tout simplement
pour harminiser les numéros de version de tous nos logiciels. AIMS était déjà en
version 2.x, le "gros numéro" suivant était 3.
"Changements "visibles" (utilisateurs):
Objets coupe: on peut maintenant extraire une coupe d'un volume (ou de n'importe
quel objet 2D comme une fusion 2D) en le fusionnant seul, et afficher plusieurs
coupes avec des orientations différentes dans la même fenêtre. L'orientation des
coupes peut être changée à l'aide d'un contrôle spécifique.
Textures et transparence: leur rendu a un peu changé. Les textures transparentes
sont maintenant prises en compte et peuvent rendre l'objet lui-même transparent.
Ce système fonctionne aussi pour les volumes (images RGBA, ou images avec des palettes
transparentes).
Nouveaux modes et options de plaquage de texture, nouvelle commande pour les régler:
TexturingParams
Le "multi-texturing" est maintenant possible (en fusionnant plusieurs textures)
blocs de vues: on peut maintenant lier plusieurs vues Anatomist dans une même
fenêtre. Les vues sont aussi indépendentes qu'avant. La commande externe
CreateWindow
a un nouveau paramètre pour permettre l'utilisation ce cette
fonctionnalité.
Améliorations de l'interface utilisateur
Le curseur 3D est maintenant un objet anatomist quelconque et peut donc prendre
n'importe quelle forme: on peut le sélectionner dans une list extensible.
Le dessin de ROI peut maintenant s'appuyer sur des clicks sur des maillages ou
d'autres objets 3D.
Diverses fenêtres de paramètre des objets (matériau, palette, paramètres des
fusions 2D et 3D) ne sont plus définitivement liées aux objets sur lesquels on les
a ouvertes, mais permettent maintenant de changer à la volée les objets auxquels
ces paramètres s'appliquent. Concrètement cela permet d'éviter d'ouvrir 25 fenêtres
de palettes en même temps si on a beaucoup d'objets.
Les fusions 2D impliquant plus de 2 volumes sont réparées et améliorées: tous
les paramètres peuvent maintenant être réglés.
Anatomist sait maintenant lire et afficher des maillages de segments (filaires)
et de quadrilatères.
Nouveau mode de rendu de textures, avec une interpolation des couleurs dans
l'espace RGB (plutôt que dans celui de la palette). Il est peut-être plus adapté
pour afficher des textures "de labels".
Nouvelle option de configuration: windowSizeFactor
Les propriétés de matériau et de palette des objets peuvent maintenant être sauvées dans les
fichiers en-têtes .minf (méta-info) des objets et sont appliquées automatiquement au
chargement des objets. C'est donc maintenant facile de donner toujours la même couleur à un objet.
Les propriétés de palette peuvent être stockées sous forme de dictionnaire dans l'attribut
palette (mêmes paramètres que la commande du processeur
SetObjectPalette) et
les propriétés de matériaux dans l'attribut material (mêmes options que la commande
SetMaterial).
Nouvelle option de commande-ligne: -u <userprofile> pour utiliser
des configurations différentes en cas d'utilisation sur un compte partagé
Possibilité de donner un référentiel par défaut aux objets et/ou fenêtres créés (chargés)
depuis l'interface utilisateur (réglable dans les préférences)
Un manuel utilisateur a commencé à être écrit par Isabelle Denghien (en français...)
Le contrôle "transformation" a maintenant deux modes d'interaction supplémentaires:
changement d'échelle et rotation dans le plan de coupe, utile pour recaler manuellement
des volumes fusionnés.
L'ouverture de session ROI peut maintenant lire un volume (d'entiers 16 bits) et le
convertir en graphe de ROI à la lecture.
Le contrôle de défilement de coupes a plus de modes (défilement continu, en aller-retour
etc), et on peut aussi régler la vitesse de défilement
Le trackball a un mode "apesanteur": les objets continuent à tourner quand l'utilisateur
relâche la souris.
Mode où le curseur lié suit les actions des sliders (coupe/temps) des fenêtres 2D/3D
(la position se propage dans les autres vues)
Divers raccourcis clavier dans les fenêtres et leurs contrôles
Mode plein écran sur les fenêtres anatomist
On peut maintenant donner manuellement une position pour le curseur lié depuis une
fenêtre 3D (par ex. pour reporter des coordonnées depuis un logiciel externe comme SPM)
Les propriétés de rendu peuvent maintenant être réglées objet par objet (parmi les
propriétés de matériau).
Changements internes (programmeurs):
Le moteur d'affichage (la couche utilisant OpenGL) a été entièrement réécrit. Il
est en principe plus souple, plus facile à utiliser et plus puissant, bref: mieux
foutu.
L'API des objets a changé aussi: toutes les fonctions d'affichage OpenGL sont
déportées dans des classes d'API spécifiques.
Nouvelle commande:
TexturingParams
Nouvelle commande:
ExtractTexture
Nouvelle commande:
GenerateTexture
Nouvelle options dans la commande
LoadObject:
as_cursor, options
Des fenêtres 3D sans décorations (menus/boutons) peuvent maintenant être créées
(via le système de commandes) pour être incrustées dans des applications spécialisées
Nouvelles options dans la commande
CreateWindow: block,
options
Nouvelles options dans la commande
WindowConfig: snapshot,
linkedcursor_on_slider_change
Nouvelle commande:
ObjectSlice
Nouvelles options dans la commande
GeteInfo: name_referentials,
name_transformations
La commande ObjectInfo donne plus d'infos sur certains objets (référentiels)
Nouvelles options dans la commande
SetMaterial:
lighting, smooth_shading, polygon_filtering, depth_buffer,
face_culling, polygon_mode
En fait il y a eu beaucoup de changements (internes et visibles) dans cette version...
30/11/2004 - Version 1.30.3 (corrections de bugs)
Changements "visibles" (utilisateurs):
Correction d'un bug d'affichage dans les coupes coronales des fusions 2D (volumes)
lorsqu'une transformation était impliquée
Correction de la couleur de fond dans les coupes de volumes ne contenant aucune
donnée (coupes hors du volume)
L'affichage (dans le terminal) des coordonnées SPM (pour les volumes SPM) ne se dit
plus "coordonnées Talairach" quand le volume n'est pas normalisé. Autrement les valeurs
étaient correctes.
Changements internes (programmeurs):
Aucun (corrections seulement!)
26/08/2004 - Version 1.30.2 (corrections de bugs)
Changements "visibles" (utilisateurs):
Correction de l'ordre des octets (donc des couleurs fausses) dans les snapshots
des fenêtres 3D sous Windows
Correction du chemin des palettes sous Windows
Correction de l'affichage de très grosses images (en 2D) qui ne tiennent pas
dans la mémoire de texture des cartes 3D et qui nécessitent un sous-échantillonnage
Correction d'un plantage possible dans les fenêtres Profil sur certaines images
Changements internes (programmeurs):
Aucun (corrections seulement!)
07/07/2004 - Version 1.30b (corrections de bugs et
améliorations mineures)
Changements "visibles" (utilisateurs):
Correction: la commande GraphParameters ne fonctionnait pas correctement
tant que la fenêtre de paramètre des graphes n'était pas ouverte.
Commande SelectByHierarchy: l'attribut modifiers peut prendre
une nouvelle valeur: remove, pour cacher les noeuds sélectionnés
Meilleur affichage des valeurs des volumes fusionnés (click en curseur lié)
Corrections de bugs dans la sauvegarde des graphes de ROI sous Windows
Activation de l'éclairage double-face sur les maillages lorsque les polygônes vus de dos sont
dessinés. En d'autres termes, les maillages ouverts peuvent être visibles depuis les 2 faces.
Corrections d'un décalage de l'affichage des fusions 2D en mode
non-interpolé, affichage des préférences pour l'interpolation
Correction d'un bug sur l'approximation du positionnement des coupes, qui pouvait être gênant
pour la manipulation de coupes très fines (<0.1mm) comme par ex. des coupes histologiques de
cerveau de souris (exemple au hasard)
Correction d'un bug dans le calcul du plan de coupe pour l'affichage 2D des buckets avec
transformatoin de coordonnées
... (je ne sais plus)
Changements internes (programmeurs):
Aucun (corrections seulement!)
18/02/2004 - Version 1.30, initiale
Changements "visibles" (utilisateurs):
Portage à Windows !
Améliorations mineures de l'interface graphique, comme l'accès aux options
des objets par un click droit sur la fenêtre de contrôle
Le module ROI a été séparé en deux: un module de base et un contenant des
algorithmes
Améliorations de l'interface du panneau de ROI: éradication de ce curieux
bouton "refresh" dont je pense que tout le monde se demandait ce qu'il faisait là.
La mise à jour du panneau est maintenant automatique, comme cela aurait du être le
cas depuis le début.
L'option pour la convention d'affichage a enfin été activée (après des années et
des années). Vous pouvez choisir la convention d'affichage radiologique ou
neurologique dans les préférences.
Réglages pour les choses instables dans les préférences
Fusions 3D: nouveaux modes de calcul (point-à-point avec décalage de profondeur)
Volumes SPM: par défaut, les volumes SPM n'ont plus de repère associé
automatiquement. Ce comportement perturbait trop de gens et était gênant dans beaucoup
de cas. On peut maintenant recréer ce repère par une option "objet-spécifique" des
volumes, ou bien on peut aussi activer l'ancien comportement (création du repère
automatiquement au chargement du volume) par une option des préférences.
Note: la création de ce repère est aussi un peu plus intelligent qu'avant: s'il en
existait déjà un identique, il est réutilisé au lieu d'être dupiqué. Cela permet d'avoir
le même repère sur tous les volumes d'origine identique.
Le marqueur de couleur de référentiel est maintenant dans les colonnes de gauche
sur la fenêtre de contrôle (objets / fenêtres) de manière à être toujours visible
au premier coup d'oeil.
La boîte à outils des contrôles (ROI...) peut être ouverte depuis un menu
des fenêtres (plus seulement la touche F1 non-documentée), et s'ouvre automatiquement
lorsqu'on enclenche le mode de dessin
Correction du bug (précédemment appelé "fonctionnalité") qui empêchait de
sauvegarder les buckets des relations dans les graphes de sillons lorsque ceux-ci
étaient sauvegardés sous un nouveau nom. C'était du au fait que ces buckets de relations
n'étaient pas chargés du tout par Anatomist puisqu'ils ne sont pas affichés. Les
graphes sont maintenant complets, et prennent quelques Moctets de plus en mémoire (et
un peu plus longtemps à se charger)
Fenêtres 3D: on peut maintenant changer de coupe / temps avec des touches du
clavier (PgUp/PgDown)
Changements internes (programmeurs):
La lecture de commandes (scripts / pipes de commandes / réseau) peut maintenant
être compilée en utilisant des threads. Cela évite de bloquer le thread de l'interface
graphique pendant la lecture des commandes, et ça devrait être moins sensible à des
différences de comportement entre OS (Windows...).
01/04/03 - Version 1.29
Changements "visibles" (utilisateurs):
L'origine des images SPM est correctement gérée
maintenant (il y avait un bug dans la version 1.28)
Premier essai pour faire des maillages coupés par un plan:
fusion maillage + volume, C'est encore très sensible aux maillages
contenant des triangles qui se croisent (qui font souvent planter), et il
se trouve que la plupart de nos maillages contiennent des triangles croisés.
C'est donc une "fonctionnalité instable", qui est activée seulement
en mode --enable-unstable. Sinon on pourrait enfin afficher correctement
une coupe de volume limitée à l'intersection avec le maillage
(par ex. maillage du cerveau ou de la tête). Mais il y a toujours ce
bug, qui est un peu difficile à corriger...
Anatomist sait maintenant lire et afficher des images et volumes RGB
(et RGBA), comme par ex. des images Jpeg couleur
Menu pour sauvegarder les préférences
Un double-click sur la représentation d'une fenêtre (dans
la fenêtre de contrôle) fait passer la fenêtre en question
au premier plan
Nouvelle option de la commande en ligne: --enable-unstable, elle sert
à activer des fonctionnalités dangereuses et buggées
qui ne sont pas complètement finies (parfois même, pas opérationnelles)
et qui sont normalement désactivées. Je n'ai pas fait de menu
pour l'activer/désactiver en cours d'utilisation. J'aurais peut-être
du.
Changements internes (programmeurs):
Communications: Anatomist peut maintenant être lancé
en mode "serveur" et communiquer dans les 2 sens à travers un réseau
TCP. Le pilotage par BrainVisa en est facilité (toute l'interface
de communication a été refaite aussi du côté BrainVisa:
stage de Julien Barbot). De plus Anatomist peut maintenant prévenir
en envoyant des "événements" quand son état change
ou que l'utilisateur effectue certaines actions (par ex. un chargement d'objet
ou un click de la souris).
Plusieurs nouvelles commandes et nouveaux paramètres de commandes
existantes pour le pilotage par BrainVisa (je n'ai pas noté la liste
complète)
Commande d'exportation de texture (ExportTexture): sauve
sur disque la texture d'un objet OpenGL texturé quelconque (par ex.
une fusion 3D)
Encore des changements dans Aims et les couches de librairies en
dessous d'Anatomist
Commande WindowConfig: nouveaux paramètres raise
et iconify
31/10/02 - Version 1.28
Changements "visibles" (utilisateurs):
ROI: corrections de bugs, et nouvelle interface pour segmenter
par LevelSets (Renaud)
Les transformations gauches (qui changent le sens du repère)
sont correctement prises en compte: elles inversent le sens (intérieur/extérieur)
des maillages et la visualisation en tient compte
L'origine des images SPM (ou qui ont été en format
SPM) est ENFIN prise en compte: une transformation est automatiquement
créée entre l'image et le repère central. ATTENTION,
effet de bord: les objets segmentés à partir de ces
images n'auront pas automatiquement le même repère, il faut
le mettre à lma main, ça peut surprendre...
Encore un bon nombe d'améliorations des commandes pour
le pilotage par BrainVISA
Diverses corrections de bugs que je n'ai pas notées à
mesure
Changements internes (programmeurs):
Encore des changements dans Aims
Le système de chargement de modules utilise maintenant
celui d'Aims (qui est une réécriture plus propre de ce qu'il
y avait avant dans la commande en ligne anatomist). En conséquence
le format des listes de modules a changé: la liste est dans un
fichier (format python-like) au lieu de fichiers
09/07/02 - Version 1.27
Changements "visibles" (utilisateurs):
ROI: interface plus complète (Renaud)
Contrôle de transformation: permet de bouger un objet
par rapport aux autres
... (je n'ai pas tenu la liste à jour)
Changements internes (programmeurs):
La plupart des changements internes sur cette version concernent
les librairies de plus bas niveau qu'anatomist: aims en particulier, dont
tout le système d'entrées-sorties a été refait
pour être complètement générique (formats complètement
transparents et modulaires, mécanisme pour choisir le type de données).
Tous les codes de toutes les librairies ont aussi remises aux
normes pour pouvoir éventuellement compiler avec d'autres compilateurs:
gcc-2.95, gcc-3.0, gcc-3.1. Pour l'instant l'essai d'autres compilateurs
(SGI, sous windows etc) ont toujours été des échecs:
tous sont buggés et aucun n'arrive à compiler libshfj
et aimsdata.
Nouvelles commandes pour l'interaction avec BrainVisa:
Camera (réglage du point de vue), SaveTransformation
(écrit une transformation, éventuellement après modif
par le contrôle correspondant), WindowConfig (fixe les
params de géométrie des fenêtres anatomist)
Commandes complétées: ObjectInfo donne
des indications plus complètes
... (je n'ai pas tenu la liste à jour)
24/10/01 - Version 1.26
Changements "visibles" (utilisateurs):
Drag & drop entre objets et boutons des fenêtres:
on peut tirer un objet sur l'icône de la fenêtre de contrôle
du type de fenêtre voulu, cela permet d'ouvrir une fenêtre et
d'y mettre l'objet d'un seul coup.
Affichage des buckets refait, il devrait en principe être
beaucoup plus rapide, donc rendre le dessin de ROI plus utilisable
ROI: affichages optimisés à différents
niveaux, c'est plus rapide. Il reste encore des choses à faire
de ce côté-la.
Comportement des affichages des fenêtres 3D modifié:
l'affichage n'est plus différé quand de multiples affichages
sont demandés
Mode "film": pour faire défiler les curseurs des coupes
des fenêtres 2D/3D automatiquement
On peut maintenant fusionner deux textures 1D pour en faire
une texture 2D
Référentiels & transformations: les transformations
se propagent de repère en repère et se mettent à
jour. Un repère "central" est utilisé par défaut
sur toutes les fenêtres et tous les objets
Anatomist lit maintenant les textures d'entiers (16 bits signés
et 32 bits non-signés)
Corrections de petits et gros bugs: affichage des volumes selon
les axes avec changement de repère en particulier
Changements internes (programmeurs):
Nouvelle commande "ClosePipe" pour fermer la télécommande
- par ex. pour que BrainVisa puisse se fermer sans tuer Anatomist
Nouvelle commande "SaveObject"
Nouvelle commande "CreateGraph" (module roi)
Nouvelle commande "AddNode" (module roi)
Modifs des sources d'Anatomist et toutes les librairies dont
il dépend (Aims, graph, ...) pour pouvoir compiler avec d'autres
compilateurs que gcc, ça devrait rendre nettement plus simple un éventuel
portage à windows
Entrées / sorties des graphes entièrement refaites
(au niveau Aims principalement), de façon plus générique
- c'est encore un tout petit peu instable mais ça devrit être
bien mieux à terme: en particulier les graphes contenant n'importe
quel objet Aims pourront être chargés dans Aims, anatomist,
SiGraph, Voi, etc. de la même manière.
Nouvelle commande "PopupPalette"
Nouvelle commande "GetInfo" - donne des informations sur ce
qui est dans l'application (objets, fenêtres, référentiels,
...)
Nouvelle commande "ObjectInfo" - donne des informations plus
précises sur certains éléments donnés par leur
ID
Nouvelle commande "SetControl"
19/06/01 - Version 1.25
Changements "visibles" (utilisateurs):
Commandes du "simulateur de vol" corrigées
Le rechargement des objets devrait être mieux fait, ert
pas seulement sur les volumes: on devrait pouvoir recharger aussi des
maillages, des "buckets", des textures, etc.
Correction du bug très gênant qui montrait parfois
la mauvaise coupe d'un volume (problème d'arrondi sur le no de
coupe)
Le module de régions d'intérêt commence
à fonctionner (Renaud Maroy): on peut dessiner dans un bucket.
C'est primaire pour l'instant, mais ça existe.
Nouveau mode pour les fusions 2D: "linear on defined"
Changements internes (programmeurs):
Pas mal de modifs dans la couche AIMS (entrées - sorties
entièrement refaites, librairie coupée en deux, ...)
Entrées - sorties: système de chargement / rechargement
refait pour utiliser les nouveaux Finder/Reader d'Aims
Nouvelle commande DeleteElement, plus générique
que DeleteObject ou CloseWindow.
Nouvelle commande SelectByHierarchy pour faire des
sélections dans les graphes
Le tracking des faisceaux de fibres a été sorti
de la librairie de base et "modularisé"
09/05/01 - Version 1.24
Une version qui a mis un peu de temps à sortir (6 mois!), mais
avec vraiment beaucoup de choses refaites et des foules de nouvelles possibilités...
Changements "visibles" (utilisateurs):
Corrections de bugs (et ajout de nouveaux...), entre autre j'espère
avoir tordu le cou à celui qui faisait parfois planter quand on
détruit un objet et qui faisait durer 1/2 heure la destruction d'un
gros objet composé (graphe par ex.) - à vérifier...
bon en fait c'est pas encore complètement propre...
Les scénarios effectuant une fusion nécessitant
un choix (plusieurs fusions possibles) ne posent plus la question lorsqu'on
les rejoue (attribut "method" de la commande de fusion)
L'historique précédent est gardé (backup)
dans ~/.anatomist/history.ana~, ce qui permet de rejouer le scénario
de l'exécution précédente d'Anatomist sans avoir à
le copier préalablement
Nouveau look pour les fenêtres 2D et 3D, qui sont
maintenant les mêmes, la plupart des fonctions d'avant remarchent,
mais avec un comportement éventuellement un peu différent,
en 2D il reste encore un peu de boulot (tracking des fibres non refait)...
On peut basculer une vue d'un mode 2D à l'autre (axial, coronal, sagittal)
et au mode 3D comme on veut, et mélanger des objets 2D et 3D.
Sauvegardes d'images des vues 2D et 3D en plein de formats possibles
Enregistrements de films sur les fenêtres 2D et 3D mieux
gérés (sauvegardes lorsque l'image a réellement changé,
pas lorsqu'elle est masquée et réaffichée)
Landmarks: toutes les actions qui impliquaient un click sur
une image pour créer un point de repère (surface matching,
landmarks de surfaces ou de graphe) ont changé de comportement:
on ne clique plus sur "choisir un point" puis sur l'image, mais au contraire,
on fait d'abord jouer le curseur lié, puis on clique sur "choisir
un point": le landmark est crée à ce moment-là à
la position du curseur lié du groupe de fenêtres non-groupées.
C'est un peu imparfait mais ça sera amélioré plus tard
Correction du bug qui inversait l'orientation des normales des
maillages en format .mesh binaire sur des machines nécessitant
un byte-swapping du fichier (conversion intel-sparc par ex.)
Des palettes "utilisateur" peuvent être ajoutées,
il suffit de les placer (images au format JPEG) dans le répertoire
~/.anatomist/rgb (répertoire à créer préalablement
s'il n'existe pas): elles seront chargées au prochain lancement
d'Anatomist
Option "recharger les palettes" dans le menu "réglages"
de la fenêtre de contrôle
Drag & Drop: on peut maintenant "tirer" des objets
depuis la fenêtre de contrôle, directement vers les fenêtres,
ou vers le panneau droit de la fenêtre de contrôle.
Pour ceux qui bricolent les graphes (et les hiérarchies
de noms), on peut aussi stocker des fichiers de syntaxe perso dans ~/.anatomist/syntax
et ~/.anatomist/syntax/internal pour les attributs internes (non
exportés dans les entrées-sorties mais utilisés en
interne dans Anatomist ou les modules spécifiques) (non testé...)
La boîte de sélection de fichiers (pour charger
des objets par ex.) peut avoir un certain nombre de répertoires
pré-enregistrés pour retrouver du premier coup vos données
préférées. Pour le moment l'ajout de directories n'est
pas très convivial: il faut éditer le fichier ~/.anatomist/config/settings.cfg
et ajouter l'attribut path_list avec comme valeur une liste de
repertoires séparés par des ':' (comme les PATH
Unix)
Option de lancement (sur la ligne de commande) pour ne pas ouvrir
la fenêtre de contrôle: option -b ("batch"). Cette
option sera utile pour une "visualisation simple", par exemple depuis la
plateforme de traitements BrainVisa de Yann Cointepas.
Liste des modules chargés visible depuis la fenêtre
de contrôle (menu aide/modules)
Rechargement de transformations sans avoir besoin de les effacer
préalablement
Coupes obliques: on peut changer l'orientation du plan
de coupe des volumes en utilisant le nouveau contrôle "vues obliques",
2 modes pour cela: soit en bougeant le plan de coupe avec le trackball,
soit en bougeant les objets avec le trackball tout en laissant le plan de
coupe fixe.
Début de module de régions d'intérêt
par Renaud - c'est le tout début.
Les fichiers "scripts" .ana (ou "scénario")
peuvent maintenant être chargés comme les objets, depuis
le même menu "ouvrir" et la même boîte de sélection
de fichiers, et au démarrage d'anatomist comme arguments sur la
ligne de commande, le flag -f n'est plus obligatoire pour les
.ana
On peut mettre des belles images en fond des listes (fenêtre
de contrôle, browsers), si on l'indique dans sa config: éditer
le fichier ~/.anatomist/config/settings.cfg et ajouter le champ
listview_background en lui donnant le fichier image à
utiliser (à un des formats supportés par Qt) - OK c'est juste
un gadget, mais moi j'aime bien les gadgets.
Doc: j'ai un peu retouché son look (mais pas son contenu........)
Possibilité de mettre des plans de clipping dans les
nouvelles fenêtres 2D/3D: ça peut être utile par ex.
quand on mélange un volume anatomique et des objets 3D segmentés
qu'on veut voir coupés
Les images SPM qui contiennent des valeurs infinies (NaN) sont
filtrées et ne font plus planter Anatomist.
Pas mal d'options d'affichage des rendus OpenGL peuvent être
choisies dans les fenêtres 2D/3D (panneau "outils" des fenêtres)
Changements internes (programmeurs):
Nouvelle commande Exit pour fermer un Anatomist télécommandé
Nouvelle commande LinkWindows pour grouper des fenêtres
Nouvelle commande Select pour la sélection (les
sauvegardes / rechargements ne marchent pour l'instant pas pour les sous-objets
d'un graphe)
Nouvelle commande Fusion2DParams, pour régler
les paramètres des fusions 2D.
PASSAGE A Qt: plus de Motif ! Les fenêtres (3D,
2D) ont été entièrement refaites, l'appli changée
etc etc etc. Anatomist n'est plus linké avec: Motif, Colc++, MPP,
GLPP, GLw, QXt
les classes liées à Motif ont été
enlevées
Système de contrôles de Renaud intégré
et utilisé dans les nouvelles fenêtres
Classes de base intermédiaires pour les fenêtres
Qt avec contrôleurs: QAWindow, ControlledWindow
(gère la barre de boutons des contrôleurs)
Contrôles et actions de base pour fenêtres 3D: curseur
lié, sélection, zoom, translation
Ajout du namespace anatomist pour diverses classes,
presque toutes en fait
le package wincontrol a été enlevé
(classes AViewControl, APointCollector, APointsCollectorTrigger)
Le système d'affichage a été revu, en particlier
les fenêtres 2D affichent maintenant comme en 3D en utilisant OpenGL.
Il y a encore pas mal de problèmes à régler et de
bugs, mais bon... - attention, ça va être plus lent sur une
machine sans carte 3D accélérée...
etc etc etc... en fait il y a eu beaucoup beaucoup de changements
sur cette version...
03/11/00 - Version 1.23
Changements "visibles" (utilisateurs):
Outil pour tracer des plans passant par 3 points: dans le module
anasurfmatch. On fait une fusion de 3 landmarks.
Surfaces texturées: on ne règle plus la
palette depuis l'objet fusion (surface texturée ou interpolée)
mais depuis la texture elle-même. Du coup on obtient des valeurs non-normalisées
sur les réglages de palette, ce qui permet d'utiliser une échelle
quantitative.
Fenêtre de news qui apparaît la première
fois qu'on lance une nouvelle version d'Anatomist
Possibilité d'enlever le gros logo rouge "Anatomist"
de la fenêtre de contrôle depuis les réglages de préférences
(sauvable dans la config)
Cylindres: faits comme les plans, à partir de 2 surfaces
landmark
Correction du bug qui faisait planter Anatomist à la
lecture de fichiers compressés - on peut maintenant lire des .tri.gz
ou des .tex.Z, etc.
Début de graphes de landmarks: création d'un graphe
à partir d'un volume (sur la même géométrie),
ajout de noeuds et de buckets en cliquant sur des points.
Chargement des graphes de ROI au format VOI, enfin dès
que VOI aura un tout petit peu changé son format.....
Sauvegarde des graphes avec sous-objets (buckets, maillages)
-> sauvegarde de graphes de ROI
Début de fenêtre de processing pour la perfusion
(pas encore opérationnel), par Fabrice. On y accède depuis
les opérations spécifiques sur un volume.
Lecture DICOM
Changements de repères étendus aux multi-objets:
en particulier on peut mettre un repère sur un graphe et lui
affecter une transformation
La sélection tient aussi compte des changements de repère
Changements internes (programmeurs):
Petites modifs de l'interface des AObjects (flags hasChanged
ajoutés pour la texture et la géométrie), dans ATexSurface
et AInterpoler.
Boîte de dialogue FusionChooser pour les cas
où plusieurs fusions peuvent être faites à partir
des mêmes objets
No de version d'Anatomist sauvé dans la config
Buckets refaits pour la partie 3D, en utilisant l'interface
commune AGLObject
Modifs et améliorations dans plusieurs objets, les graphes
en particulier
Nouvelle interface vues / contrôles de Renaud Maroy, à
utiliser pour refaire les fenêtres 2D et 3D dans les prochaines
versions
03/10/00 - Version 1.22
Changements "visibles" (utilisateurs):
Sauvegarde et rechargement des paramètres et préférences
dans $HOME/.anatomist/config/settings.cfg. Pour l'instant cette sauvegarde
est partielle, il y a encore beaucoup de choses qui pourrait être
sauvé et qui ne n'est pas.
Le fichier de commandes "historique" sauvé automatiquement
par Anatomist a été déplacé de $HOME/.anatomist-history
à $HOME/.anatomist/history.ana, comme ça tous les fichiers
de configuration locale, lus ou écrits par Anatomist, se trouvent
dans $HOME/.anatomist/
Diverses modifs et corrections de bugs apparus avec Qt 2.2.0,
comme par ex. des pbs de la boîte de sélection de fichiers,
des plantages à la modification des noms de noeuds de graphes,
...
Fenêtre de référentiels & transformations
refaite (Qt)
Fenêtre de fusion 2D refaite (Qt)
Nouvelle fenêtre "Profil" qui trace des courbes 1D selon
l'axe voulu (par Fabrice): module perfusion
Changements internes (programmeurs):
Classe de configuration globale (AGlobalConfig) relisant
sous forme d'arbre la configuration, et classes de config "locales" qui
s'occupent d'aller chercher chacune pour un morceau de programme (un module
par ex.) la partie de la config qui les concerne et de l'appliquer.
Commande "LinkedCursor"
Un peu de ménage: les fonctions, obsolètes depuis
des années et des années, Anatomist::ReceiveEvent()
et AObject::Action() ont enfin été éradiquées,
ainsi que la structure AEvent qui allait avec, et une foule de
fonctions inutiles et inutilisées dans les différentes fenêtres
2D.
Boîtes de sélection de fichiers re-standardisées
en Qt, support Motif enlevé (Dimitri)
Headers SPM utilisant les nouvelles structures AttributedHeader
d'Aims (objets attribués, ouverts)
Nouveau module de perfusion et fenêtre "Profile"
par Fabrice Poupon... Bien joué ! (ce module nécessite la
librairie de tracé de courbes Qwt)
Amélioration de l'usine à fenêtres AWindowFactory
et extension en QAWindowFactory: ça permet de garder
des infos sur les types de fenêtres, comme les icônes et des
descriptifs et simplifie l'enregistrement de nouveaux types de fenêtres
(voir doc de programmation, mise à jour elle aussi)
Mise en commun des modules dans la même arborescence de
sources qu'Anatomist, mais en librairies séparées. Pour
l'instant il y a 2 modules "officiels", anasurfmatch et perfusion: anatomist/src/anasurfmatch
et anatomist/src/perfusion.
24/08/00 - Version 1.21
Changements "visibles" (utilisateurs):
Début "d'internationalisation": fichiers de traduction,
avec un début en français pour les textes de l'interface graphique
de diverses fenêtres (toutes celles refaites récemment, en
fait, y compris dans les modules)
Fenêtre de préférences globales refaite
Fenêtre "Tools 3D" refaite
Fenêtres des divers paramètres d'éclairage
en 3D refaites et regroupées en une seule
Amélioration des paramètres des graphes: prise
en compte au démarrage des couleurs de hiérarchie et des "tooltips",
changement de la couleur de sélection par défaut qui était
assez moche...
Raccourci clavier "s" pour synchroniser les vues 3D. En maintenant
la touche appuyée, on obtinent un genre de synchro temps réel
(bon, c'est assez primitif mais pour le moment ça ira bien)
Améliorations de la fenêtre de palettes: boutons
pour revenir aux réglages par défaut
Changements internes (programmeurs):
Fichiers de traduction .po et .qm (Qt) dans l'arborescence:
dependencies/po
Système de Makefile pour ces traductions (dans dependencies/po
aussi) pour regénérer les fichiers et les mélanger
avec ceux des modules
Petites modifs de l'interface des fenêtres 3D (pour l'éclairage)
07/08/00 - Version 1.20
Changements "visibles" (utilisateurs):
Tout nouveau look pour la fenêtre de contrôle --
vous êtes priés de le trouver plus joli...
Disparition de la petite fenêtre AnaQt, ses boutons sont
maintenant inclus dans les menus "normaux" de la fênetre de contrôle
Module de "landmarks" qui permet de repérer des points
sur une surface ou de point d'une surface le plus proche d'un point sélectionné,
accessible par les options des objets 3D
Correction du bug qui faisait planter sur l'affichage d'une
image vide
Nouvelles pages web sur les moulinettes et pour l'utilisation
d'Anatomist pour la TMS, par Jean-François Mangin
Corrections des changements de repère pour les changements
affines (pas rotation pure) -> utile pour certaines images SPM et la
normalisation de Talairach
Quelques petites fenêtres de paramètres refaites
(plus modernes, en Qt): params des fusions 3D, affectation des référentiels
Nouveau look pour la fenêtre de réglage des matériaux
des objets 3D: plus joli, en principe plus facile à utiliser, mieux
fait, et ça prend moins de place à l'écran
Changements internes (programmeurs):
Nouveaux Makefile qui marchent presque
Passage du projet à PRCS
Vérifications de types dans les IDs des commandes (->
évite des plantages suite à des bugs grossiers de scripts)
Harminisation des numéros de versions des modules avec
celui d'Anatomist: 1.20 pour tout le monde
Refonte complète de l'interface graphique de la fenêtre
de controle: passage de Motif/Mpp à 100% Qt - un grand pas en avant
vers l'élimination de Motif dans Anatomist...
Un certain nombre de petits changements d'interface des classes
"centrales": application, fenêtre de contrôle en particulier
Changements dans le module anasurfmatch: séparation d'une
petite fabrique de surfaces simples (landmarks), et nouvelle option de
choix de landmarks dans tous les types connus d'ojbets 3D (surfaces triangulées,
fusions 3D, surfaces texturées, interpoleur). On pourrait mettre
ça dans la base d'Anatomist, à terme
Transformations: meileure centralisation des transformations
et transformations inverses
13/07/00 - Version 1.19
Changements "visibles" (utilisateurs):
Début de doc de programmation, accessible depuis l'aide
HTML.
Page de doc sur les commandes (programmation script...)
Corrections de bugs dans la lecture des commandes
Modifications de la fenêtre de réglage des palettes:
changement des bornes possibles, liaison entre objets par valeurs (et
plus par proportion entre min et max)
Support du format SPM flottant
Changements internes (programmeurs):
Gros chantier: réorganisation de l'arborescence des sources
et des Makefile: Fusion des librairies Anatomist, AnaQt, AnaQtMod.
AnaSurfMatch reste en module.
Elimination de la librairie FWF qui posait pas mal de problèmes
(-> librairie MPP 0.8)
Qt est donc maintenant obligatoire
Remplacement des anciens Makefile (Cyril Poupon) par un nouveau
système utilisant Tmake (Dimitri Papadopoulos). Bon: il faut bien
dire que pour l'instant ça ne marche pas encore bien...
Petits changements dans les librairies et l'ordre des sources
dans les Makefile pour régler les conflits entre les librairies
Anatomist et AnaQt fusionnées. Ça reste encore un peu fragile
et sensible à l'ordre de linkage des .o... Pas vraiment moyen de
faire autrement tant qu'on n'aura pas séparé les librairies
en plusieurs couches.
Nouveau lecteur de transformations, un peu plus "objet", beaucoup
plus simple et un peu moins buggé
Nouvelles commandes (sur les couleurs, les fusions, les référentiels...)
fin 06/00 - Version 1.18
Elle n'existe pas vraiment - c'est juste un remplacement de la version
1.17 (jamais mise en service) pour préparer les changements de la
1.19. Elle comprend déjà la fusion des librairies anatomist,
anaqt, anaqtmod, mais je détaille tout dans 1.19. C'est encore les
anciens Makefile.
20/06/00 - Version 1.17
Changements "visibles" (utilisateurs):
Nouvelles pages web (dont celle-ci et celles sur la programmation)
Correction de bugs dans l'interpolation de surfaces et le matching
Ajout d'objets temporaires pour matérialiser les points
de repère du matching de surfaces
Curseur 3D
Support basique pour les changements de repère dans les
fenetres 3D: rotation, translation entre 2 surfaces.
Changements de repères pris en compte dans les fusions
3D
Chargement de scénarios et télécommande
possible à travers un "pipe". Reste à étoffer la liste
des commandes comprises par le processeur.
Sauveragrde / chargement de la config. des fenêtres (basique),
chargement en tant que scenarios classiques.
On peut maintenant plusionner plus de 2 volumes dans les fusions
2D, mais c'est encore très mal géré pour le mélange
des couleurs
On peut aussi faire une fusion 3D avec un nombre quelconque
de surfaces et de volumes, mais pour le moment seule la 1ère surface
et le 1er volume sont utilisés: à compléter... en
attendant, NE PAS S'EN SERVIR pour le moment......
Enregistrement en continu des images à chaque fois qu'elles
changent dans les fenêtres 2D et 3D pour faire des films (option
"record" dans le menu "window" des fenêtres)
La commande "anaqt" a disparu, suite aux changements de place
des librairies (c'est pas ma faute!). "ana" et "anadyn" ont aussi été
remplacées. Il faut maintenant lancer "anatomist". Le Dimitri
en a décidé ainsi, ça ne se discute pas. point.
Changements internes (programmeurs):
Processeur de commandes: lecture / écriture presque entièrement
refaits: ils utilisent maintenant le format "Tree" (la lecture n'avait
d'ailleurs jamais été faite, avant)
Petits changements dans les entrées / sorties des arbres
dans libgraph -> nouvelle version libgraph-1.9
90% des commandes inutiles ont disparu (et ne sont plus sauvées).
Par contre celles qui restent savent maintenant se recharger.
Changements internes dans les fenetres, un peu de ménage
(mais il y a encore du boulot)
Travaux préliminaires au nettoyage nécessaire
dans les changements de repère, au moins pour les faire marcher
dans les fenetres 3D (le plus gros reste à faire...) et pour ajouter
les offsets du format SPM.
Changements de repères changés dans le curseur
lié en particulier (ATTENTION: nouveaux bugs potentiels...)
début 05/00 - Version 1.16
Modifs internes, améliorations, bugfixes dans tous les
objets 3D et un peu ailleurs (et éventuellement ajout de bugs nouveaux
?...)
Possibilité de sauver des maillages en .mesh
[Interne] Moteur de gestion de modes de curseur de souris
(pattern "contrôle"), ouvert, par ex. pour pouvoir cliquer dans l'image
pour choisir des points au cours d'actions particulières (choix
de points de contrôle pour du matching de surfaces, plantage d'electrodes,
dessin de ROI, ...). Bon ça pourra être amelioré, c'est
un peu simpliste pour l'instant.
Nouveau module "surface matching" anasurfmatch-0.1 qui offre:
- Nouvelle fusion surface - surface et fenêtre de contrôle
associée pour effectuer le matching. Le process crée une
3e surface déformable sur laquelle il travaille. Le calcul s'effectue
en "temps réel" (threads) et on peut modifier les paramètres
en cours de route, ajouter / enlever des "points de contrôle", ...,
c'est donc un nouveau jeu très amusant. On peut aussi enregistrer
toute la déformation dans une surface "temporelle" et la sauver:
mieux qu'un mpeg (et plus gros en mémoire), c'est en 3D...
- Nouvelle fusion surface - TexSurface (surface texturée):
interpoleur. Ça permet d'interpoler la texture associée
à un maillage sur un autre maillage (qui doit avoir préalablement
été recalé par le matching précédent).
But: voir les potentiels d'EEG sur la surface de la tête. Pour l'instant:
interpolation linéaire.
- Lecture de mes formats de texture EEG/matlab et fenêtre
de contrôle qui offre des sliders sur les dimensions supplémentaires
qui n'existent pas de base dans anatomist (essai / sujet).
Toutes les commandes ana, anaqt, anadyn pointent maintenant
sur le même script (anadyn) de manière a ce que tout le monde
ait accès au(x) nouveau(x) module(s).