Projet FOGRIMMI Image Management Spécifications
Transcription
Projet FOGRIMMI Image Management Spécifications
Image management 04/04/07 page 1/22 Projet FOGRIMMI Image Management Spécifications Version 1.2 Auteur: Thibaut Aubrun - Ingénieur de recherche Chargé de projet: Olivier Lezoray - LUSAC Image management 04/04/07 page 2/22 Table des matières I.Disposition générale...............................................................................................3 A.Contexte de travail..................................................................................................................3 B.But du projet Image management..........................................................................................3 II.Analyse de l'existant.............................................................................................4 A.Zoomify..................................................................................................................................4 i.Présentation.........................................................................................................................4 ii.Conclusion..........................................................................................................................5 B.Aperio.....................................................................................................................................6 i.Format de fichier Apério SVS ............................................................................................6 ii.Outils et applications disponible........................................................................................7 iii.Conclusion......................................................................................................................10 C.Librairie LibTIFF, BigTIFF..................................................................................................11 i.Qu'est-ce que LibTIFF?.....................................................................................................11 ii.Que permet de faire LibTIFF?.........................................................................................11 iii.Les ajouts de BigTIFF.....................................................................................................11 iv.Comparaison des formats TIFF et BigTIFF....................................................................12 III.Spécifications de la librairie..............................................................................15 A.Description des besoins........................................................................................................15 B.Fonctionnalités nécessaires..................................................................................................15 C.Gestion des erreurs...............................................................................................................16 D.Performances requises et contraintes...................................................................................16 E.Passerelle vers les librairies de traitement d'images existantes............................................16 F.Choix des outils de développement.......................................................................................16 IV.Spécifications du visualisateur...........................................................................17 A.Description des besoins........................................................................................................17 B.Fonctionnalités nécessaires..................................................................................................17 C.Gestion des erreurs...............................................................................................................17 D.Performances requises et contraintes...................................................................................17 E.Définition des interfaces externes.........................................................................................18 i.Définition des menus:........................................................................................................18 F.Choix des outils de développement.......................................................................................19 Annexe:....................................................................................................................20 Image management 04/04/07 page 3/22 I. Disposition générale But du document: Ce document a pour but de décrire le champ d'action du sous projet Image Management du projet FOGRIMMI. L'analyse de l'existant, des formats de fichiers mis en jeu et les spécifications logicielles y sont décrits afin de cadrer ce sous projet. A.Contexte de travail FOGRIMMI est un projet de fouille de grandes images microscopiques. Ce projet est réalisé dans le cadre de l'Action de Recherche Amont Masses de Données Connaissances Ambiantes. Les images traitées sont issues d'une numérisation par microscope piloté via une station de travail de la compagnie Aperio. Ces images peuvent être d'une taille supérieure à plusieurs Go et sont sauvegardées dans un format de fichier lisible par peu de visualisateurs classiques, le TIFF tuilé multi-page. Le format de fichier SVS propriétaire d'Apério, totalement compatible au format TIFF standard, permet de sauvegarder une image en plusieurs résolutions (pages) dans le même fichier. B.But du projet Image management Sur une période de six mois nous devons réaliser une librairie permettant de manipuler les images multi-page produites par la station de travail Scanscope d'Aperio. Cette librairie devra fournir aux partenaires du projet des fonctionnalités permettant d'effectuer des travaux de traitements d'image exploitant les spécificités des images multi-résolution de grandes tailles. Il faut qu'elle soit cross-platform et open source. En outre, cette librairie permettra d'extraire des régions complexes à différents niveaux de résolution afin d'affiner progressivement les traitements d'images et ainsi minimiser les temps de calcul tout en ayant un résultat très fin et précis. De plus, un visualisateur sera fourni pour une utilisation scientifique de la librairie. Pour plus de détails sur le projet dans sa globalité voir le document d'appel à projets de recherche 2006 correspondant. Image management 04/04/07 page 4/22 II.Analyse de l'existant Plusieurs solutions sur le marché utilisent des images de grande taille pour diverses applications telles que l'imagerie médicale ou les images satellites. Le domaine nous intéressant étant celui de l'imagerie médicale nous nous attacherons à analyser l'existant dans cette voie. A.Zoomify i. Présentation Zoomify dispose de plusieurs offres dont une est gratuite et libre d'utilisation et le code source est fournit. Cette offre permet de disposer gratuitement d'un visualisateur manipulant des images de grandes tailles. Ce visualisateur offre les possibilités suivantes: drag and drop, move, zoom support jpeg, gif, bmp, tif converti en jpeg en différentes tuiles de différentes résolutions Cette application s'utilise via un langage de script tel php, python, perl permettant de l'intégrer. La partie visualisateur est écrite en ActionScript 1.0 pour la version 3. Pour la version 4 ActionScript 3.0 est utilisé. Le support des images de grandes tailles n'implique pas la gestion multi-page. En effet il faut convertir une image tiff tuilé, par exemple, grâce au convertisseur qui la découpe en petits morceaux d'image jpeg à différentes résolutions. Le tout est sauvegardé dans un dossier avec un fichier XML comportant les propriétés de l'image originale et des nouvelles tuiles. De plus, le système d'annotation de l'image n'est fournit qu'avec la version Enterprise au prix de 795$. Dans cette version les annotations sont supportées et sont organisées au format XML. Plateformes supportées: Windows Mac Possibilité d'évolution de l'outil: Ajout format TIFF multi-page Compatibilité Linux Ajout des annotations utilisateurs Renseignements sur l'entreprise Zoomify: site Internet:http://www.zoomify.com/ Zoomify,Inc. POBox 8008 Santa Cruz, CA 95061 831.420.0400 tel 831.420.0401 fax Image management 04/04/07 page 5/22 ii. Conclusion Cette outil permet de partager l'information facilement grâce à son visualisateur intégrable à des pages web et son système d'annotation pour la version Entreprise. Mais dans un but médical et de recherche en traitement d'images, elle n'est pas tout à fait adaptée car elle ne permet que d'effectuer une analyse visuelle. Pour lancer un traitement sur une partie de l'image il faut tout d'abord la recomposer, puis pour superposer une segmentation il faut modifier l'image et la reconvertir au format zoomify. Image management 04/04/07 page 6/22 B.Aperio Apério est la société qui fournit la station de travail permettant l'acquisition d'images de lames entières (ILE). Elle fournit plusieurs outils avec les codes sources et le SDK permettant de développer des fonctionnalités supplémentaires à la manipulation des images de grande taille. Platformes supportées: Windows Limitations: La taille des images sauvegardées au format propriétaires SVS est de 4Go maximum Possibilité de sauvegarder en format composites afin de dépasser la limite de 4Go. Renseignements sur l'entreprise Aperio: site Internet: http://www.aperio.com/ Aperio Technologies, Inc. 1430 Vantage Court, Suite 106 Vista, CA 92081-8545 Tel: 760.539.1100 Fax: 760.539.1116 i. Format de fichier Apério SVS SVS est le format propriétaire d'Apério sous lequel ScanScope enregistre les ILE. SVS est du TIFF et est complètement compatible avec le format TIFF standard. On peut compresser les images en JPEG ou JEPG2000 avec pertes ou en LZW sans pertes. Ce dernier format demande de prendre des précautions car le TIFF ne supporte pas les fichiers de plus de 4Go. En JPEG2000 une image de 100Go prendra 4Go avec une compression raisonnable et une bonne qualité. Possibilités du format SVS: Multirésolution via le multi-page Organisation en tuile Compression sans perte LZW, ou avec perte JPEG, JPEG2000. SVS est stocké avec une organisation pyramidale de la façon suivante. Les tuiles sont de 240x240 pixels. L'organisation en lignes peut comporter plusieurs lignes de l'image pour un même numéro de ligne. Image Ratio Base, tuiles 1:1 Miniature, lignes Largeur: 1024 1st Level, tuiles 4:1 2nd Level, tuiles 16:1 rd 3 Level, tuiles 64:1 [Label image(réf)], lignes [low] [Macro image(vue ILE)], ligne [low] Image management 04/04/07 page 7/22 Tous les niveau ne sont pas obligatoirement créés, cela dépends de la taille de l'image originale. Le label correspond à une prise de vue de la référence d'une lame. La macro image est une image de la lame vue en entière et en basse résolution. Il n'y a pas de profil ICC stocker dans ce format. Nous pouvons envisager d'inclure le profil dans une nouvelle page ou dans un fichier annexe portant le même nom. N.b.: Les outils d'Aperio font une segmentation à partir de l'image de plus haute résolution. Nous verrons plus tard comment est organisé le format TIFF. ii. Outils et applications disponible • ImageScope Ce logiciel permet la visualisation des images produites par l'Aperio. Plusieurs fonctionnalités de manipulation d'images y sont intégrées. Fonctionnalités: Drag and drop, zoom Support de la multi-résolution et organisation en tuiles, Sélection région complexe, snapshot, extraction de régions simples sous plusieurs formats Annotations sur l'image, sauvegardées en XML, import, export Lancement de traitement d'images à partir de DLL développées avec le SDK (traitement effectué sur l'image de plus haute résolution sur toute ou partie de l'image) • ImageServer ImageServer permet de lancer des routines côtés serveur propriétaire Apério via son interface. ImageServer utilise viewport, un contrôle activeX Apério, pour visualiser les images via une application. Pour un accès par navigateur web ImageServer retourne les informations en JPEG. En ce qui concerne l'accès web, Apério fournit un WebViewer basé sur Zoomify configuré pour travailler avec les données fournit par ImageServer. Fonctionnalités: Interface avec activeX Apério Accès à une région de l'image selon une résolution Annotations supportées, format XML Permet de créer un serveur web Pour plus de détails voir: http://www.aperio.com/documents/api/Aperio_ImageServer.pdf Sur la page suivante un extrait d'un exemple d'annotations exporté dans un fichier XML. La description des balises se trouve dans le document pdf cité au dessus. Il n'y a pas de DTD ou de schéma XML fournit. Image management 04/04/07 page 8/22 <Annotations> - <Annotation Id="1" Text="" ReadOnly="0" Type="4" LineColor="65280" Visible="1" Selected="0" MarkupImagePath=""> <InputAnnotationId>-1</InputAnnotationId> - <Attributes> <Attribute Name="Description" Value="nez du chien" /> <Attribute Name="Couleur" Value="noir" /> </Attributes> - <Regions> <RegionAttributeHeaders> <AttributeHeader Id="1" Name="Description" ColumnWidth="-1" /> </RegionAttributeHeaders> <Region Id="1" Type="0" Zoom="0.780000" Selected="0" ImageLocation="" ImageFocus="0.000000" Text="nez" NegativeROA="0"> <Attributes> <Attribute Name="1" Value="le nez" /> </Attributes> <Vertices> <Vertex X="1007.794909" Y="343.948735" /> <Vertex X="986.000037" Y="342.666684" /> <Vertex X="977.025677" Y="343.948735" /> ...... <Vertex X="1007.794909" Y="343.948735" /> </Vertices> </Region> - <Region Id="2" Type="0" Zoom="0.780000" Selected="1" ImageLocation="" ImageFocus="0.000000" Text="narine" NegativeROA="0"> - <Attributes> <Attribute Name="1" Value="une narine" /> </Attributes> - <Vertices> <Vertex X="1014.589769" Y="385.820533" /> ... <Vertex X="1014.589769" Y="384.538482" /> </Vertices> </Region> </Regions> </Annotation> <Annotation Id="2" Text="" ReadOnly="0" Type="4" LineColor="65535" Visible="1" Selected="1" MarkupImagePath=""> ... </Annotations> Image management • 04/04/07 page 9/22 Viewport Viewport est un contrôle activeX qui peut être inclus dans une application. Ce contrôle permet de visualiser des images. Fonctionnalités: Support du TIFF(raw, LZW, JPEG, JPEG200), organisé en ligne, tuile. Support des fichiers composites grande taille: 250 000 pixels en hauteur et en largeur Pan et zoom, pré chargement en cache Ajustement d'image Gestion multi-résolution Affichage des annotations Pour plus de détails voir: http://www.aperio.com/documents/api/Aperio_Viewport_OCX_description.pdf • Webviewer Le webViewer peut être associé à des pages web grâce à son interface HTML afin de visualiser par Internet les images issues de ScanScope. WebViewer utilise ImageServer pour accéder et générer les images visualisées. Il est basé sur Zoomify configuré pour travailler avec les données fournit par ImageServer. Il est intégré à ImageServer et utilise le langage propriétaire APML. Pour plus de détails voir: http://www.aperio.com/documents/api/Aperio_WebViewer.pdf • TIIFComp Contrôle ActiveX permettant de manipuler des images en lecture et écriture. Les fonctions offertes sont le redimenssionnement, la sélection de région, la rotation et la compression dans plusieurs formats. Fonctionnalités: Support et génération du TIFF(raw, LZW, JPEG, JPEG200), organisé en ligne, tuile. Support et génération des fichiers composites Support et génération de JPEG Grande taille: 250 000 pixels en hauteur et en largeur Transformation orthogonale, redimensionnement asymétrique. Zoom sur sous région Ajustement d'image Plusieurs fonctions optionnelles: import label, macro; application de filtres 5*5. Pour plus de détails voir: http://www.aperio.com/documents/api/Aperio_TIFFComp_OCX_description.pdf http://www.aperio.com/documents/api/Aperio_APML_Language.pdf Image management • 04/04/07 page 10/22 Dataserver DataServer est un server HTTP standard avec des méthodes d'accès à une base de données Microsoft SQL Server. La philosophie de communication est basé sur SOAP. Pour plus de détails voir: http://www.aperio.com/documents/api/Aperio_DataServer.pdf • ImageClient Image Client est une DLL qui permet d'accéder directement aux images numérisées par ScanScope. L'inconvénient est qu'il faut faire évoluer le code de l'application utilisant Image Client avec l'évolution du format SVS. Cette DLL est de plus bas niveau. • Image Pro-Plus C'est un environnement de développement permettant d'intégrer des algorithmes de traitement d'image sur des images SVS. Cependant on ne peut appliquer les traitements que sur de petits blocs. On peut dans ce cas prendre plusieurs captures d'une même image et les sauvegarder pour une analyse de toutes ces images. Néanmoins, il existe une interface graphique permettant d'appliquer les algorithmes à toute l'image et d'en voir le résultat. Pour plus de détails sur la société MédiaCybernetics et Image Pro-Plus: http://www.mediacy.com/ • SDK Grâce à ce SDK, il est possible de développer ses propres algorithmes de traitement d'image et de les intégrer dans l'Aperio Algorithm Framework. L'application appelant le nouvel algorithme se charge d'envoyer les données et de récupérer le résultat pour effectuer un affichage. C'est ce que fait ImageScope. • MatLab Il est possible d'utiliser matlab en important les images scannées ou une partie par ScanScope dans la mémoire de matlab. iii.Conclusion Apério permet de développer ses propres outils de traitement d'image, d'organiser un flux de travail et de diffuser facilement ses résultats à partir de leurs APIs. Mais toutes ces APIs ne sont disponibles que sous Windows et ne permettent une analyse d'image qu'à un seul niveau de résolution. De plus, l'automatisation de certaines tâches semble impossible. Image management 04/04/07 page 11/22 C.Librairie LibTIFF, BigTIFF i. Qu'est-ce que LibTIFF? LibTIFF est un peu plus qu'une librairie permettant de manipuler en lecture et écriture des images TIFF (Tag Image File Format). Quelques outils sont fournis avec cette libraire permettant de manipuler des images TIFF, tel la conversion vers d'autres formats. Une documentation de la librairie et des outils associés est fournit également. Cette librairie est écrite en C++ et est compatible avec les systèmes Unix (Linux, BSD, Solaris, MacOS X), Windows, OpenVMS. Elle supporte également les machines en 32 et 64 bits. Site Internet: http://www.libtiff.org/ ii. Que permet de faire LibTIFF? Les fonctionnalités principales de cette librairie sont de lire et d'écrire des images en TIFF standard sans se préoccuper de l'organisation interne de l'image. C'est donc à l'application utilisant cette librairie d'identifier et organiser les données hiérarchiques de l'image. LibTIFF permet de s'affranchir de l'encodage, de la gestion d'erreur et réponds aux normes TIFFV6.0. iii.Les ajouts de BigTIFF Une image TIFF est codé sur 32 bits et est donc limitée à 4Go. Cependant, les images produites par la station Aperio peuvent, s'ils sont stockées sans compression, dépasser largement cette taille. Le format BigTIFF propose donc un encodage sur 64 bits permettant de s'affranchir de cette limite. L'équipe de développement de la librairie LibTIFF est à l'heure actuelle en train de développer une librairie supportant ce format. Elle se voudra très proche de libTIFF afin de ne pas bouleverser entièrement l'implémentation d'applications existantes voulant migrer vers bigTIFF. Une première release devrait voir le jour le 15 juin 2007 et une release officielle le 30 Juillet 2007. Image management 04/04/07 page 12/22 iv.Comparaison des formats TIFF et BigTIFF Description du format TIFF et de sa structure: Value Offset Value Offset +-----------------------+ | Header |------------+ +-----------------------+ | | IFD (page 0) |<-----------+ +---| |------------+ | +-----------------------+ | +-->| Long Values |--+ | +-----------------------| | Strip | | Image Data |<-+ Offset | | strip 1 page 0 | | | +-----------------------+ | | | : | : | | +-----------------------+ | | IFD (page 1) |<-----------+ +---| |------------+ | +-----------------------+ | +-->| Long Values |--+ | +-----------------------| | Strip | | Image Data |<-+ Offset | | strip 1 page 1 | | | +-----------------------+ | | | strip 2 page 1 |<-+ | +-----------------------+ | | | : | : | | +-----------------------+ | | IFD (page 2) |<-----------+ | : | First IFD Offset Next IFD Offset Next IFD Offset source: RFC 2301 Ce schéma illustre la structure d'une image tiff multi-page organisée en ligne. Nous voyons qu'un IFD (entête des données d'une page) référence l'IFD suivant et qu'une page peut avoir plusieurs lignes. Une analogie peut être faite pour une organisation en tuile. Voici le fichier d'entête du TIFF de façon plus détaillée: Offset Datatype Value 0 Word Byte order indication 2 Word Version number (always 42) 4 Unsigned Long Offset to first IFD Image management 04/04/07 page 13/22 L'entête du bigTIFF Offset Datatype Value 0 Word Byte order indication 2 Word Version number (always 43) 4 Word Bytesize of offsets Always 8 in BigTIFF, it provides a nice way to move to 16byte pointers some day. If there is some other value here, a reader should give up. 6 Word Always 0 If there is some other value here, a reader should give up. 8 Unsigned 8Byte Offset to first IFD Le dernier membre des deux structures indique l'emplacement du premier IFD (Image File Directory). Chaque image ou page d'un fichier TIFF ou bigTIFF multi-résolution à un unique IFD. Voici le détail d'un IFD TIFF: Offset Datatype Value 0 Word Number of tags in IFD 2+x*12 Tag structure Tag data 2+(number of tags in IFD)*12 Unsigned Long Offset to next IFD, if there is a next IFD 0 otherwise Et celui du bigTIFF: Offset Datatype Value 0 Unsigned 8Byte Number of tags in IFD 8+x*20 Tag structure Tag data 8+(number of tags in IFD)*20 Unsigned 8Byte Offset to next IFD, if there is a next IFD 0 otherwise Les tags dans l'IFD doivent être triés par leur code. Chaque tag fait exactement 12 bytes dans le TIFF classic. Offset Datatype Value 0 Word Tag identifying code 2 Word Datatype of tag data 4 Unsigned Long Number of values 8 x * Tag data datatype Tag data or Unsigned Long offset or offset to tag data Image management 04/04/07 page 14/22 En BigTIFF nous avons la même structures mais sur 20 Bytes. Offset Datatype Value 0 Word Tag identifying code 2 Word Datatype of tag data 4 Unsigned 8Byte Discussion of this member's datatype is now closed. Number of values 12 x * Tag data datatype or Unsigned 8Byte offset Tag data or offset to tag data Seul la taille des tags diffèrent entre les deux formats. Dans le TIFF classique les données du tag sont écrites dans la structure, dans l'IFD, si sa taille est égale ou inférieur à 4 bytes. Sinon elles sont écrites n'importe où et on pointe dessus. En bigTIFF les données du tag sont écrites dans le tag structure, dans l'IFD, si la taille est égale ou inférieur à 8 bytes. Il y a trois types de données en plus dans BigTIFF: TIFF_LONG8 = 16, unsigned 8byte integer TIFF_SLONG8 = 17, signed 8byte integer TIFF_IFD8 = 18, new unsigned 8byte IFD offset. Pour plus de détails sur le format TIFF: http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf Image management 04/04/07 page 15/22 III.Spécifications de la librairie A.Description des besoins Au vue de l'étude de l'existant, il n'y pas à l'heure actuelle de possibilité d'interfacer la manipulation d'images TIFF multi-page de grandes tailles autrement que sous windows. Dans le cadre du projet FOGRIMMI, le besoin principal est de pouvoir lancer des traitements d'image facilement et utiliser au mieux les propriétés multi résolution de l'image et d'encapsulation de données. De plus, la librairie doit être cross-platform, open source et doit aussi garantir une bonne évolutivité. B.Fonctionnalités nécessaires 1.0 Lecture d'image au format TIFF tuilé avec multi-page, TIFF, SVS 1.1 Écriture de ces mêmes images 1.2 Sauvegarde vers différents formats d'image d'une région ou de l'image 1.3 Reconstruction d'image TIFF à partir de page, d'image... 2.0 Projection sur image direction Z ou -Z d'une sélection 2.1 Zoom (choix de l'algorithme), rotation, ajustement image, filtre 2.2 Extraction de sous régions par boite avec nombre de côtés non définis 2,3 Recomposition d'une image à partir d'un ensemble de régions 3.0 Sauvegarde des points d'une sélection de région 3.1 Importation des points d'une sélection 4.0 Ajout d'annotation simple ou à une sélection de région 4.1 Sauvegarde annotations XML 4.2 Importation annotations XML 4.3 Sauvegarde image segmentée SVS et propriétés en XML 4.4 Importer image segmentée 5.0 Détection des IFD et des tags TIFF Image management 04/04/07 page 16/22 C.Gestion des erreurs En cas d'erreur lors de l'utilisation de la librairie il faut avoir une information sur l'erreur. En cas de mauvais paramètres données lors de l'appel d'une fonction, on stockera dans un log un message expliquant l'erreur et les arguments d'appel et les données de retour de la fonction appelée. Chaque ouverture de fichier sera contrôlé afin d'éviter un arrêt brusque. De même les données en entrées et en sorties doivent être contrôlées et validées. Dans tous les cas d'erreurs possibles, un code de retour pourra être donné et accessible via un appel à une fonction. LibTIFF gère les erreurs de cette manière et l'on pourra s'en servir. D.Performances requises et contraintes Ce projet a pour but de traiter des images de très grandes tailles. Dans un premier temps inférieures à 4Go mais en finalité de plus de 100Go. Il faut donc que des optimisations s'appuyant sur l'organisation des fichiers TIFF en multi page et en tuile soient utilisées. Le choix des algorithmes de zoom, d'extraction et de projection seront déterminants et paramétrables selon les besoins des utilisateurs. Une contrainte intéressante est d'inclure au fichier TIFF, ou dans un fichier séparé, un profil ICC. Il existe une application utilisant libtiff qui permet via un profil ICC d'effectuer des conversions d'un espace de couleur provenant d'un scanner vers un espace de couleur RGB d'un moniteur. Le code source est disponible et nous pourrons nous en inspirer pour nos besoins. Lien: http://www.littlecms.com/newutils.htm#tifficc E.Passerelle vers les librairies de traitement d'images existantes La librairie permettra de manipuler des images avec son format de stockage de données. Il faut alors réaliser des outils permettant d'encoder ces données vers d'autres formats de librairies existantes tels Pandore, GIRL ou Aphélion. F. Choix des outils de développement Afin de rendre portable cette librairie et afin d'utiliser d'autres déjà existantes permettant de lire des données TIFF stockées selon tel ou tel encodage (JPEG, LZW,...) le langage utilisé sera le C++. La librairie utilisée vu au chapitre précédent est LibTIFF. Il faut donc compiler en ANSI C et pour cela j'utiliserai l'IDE Code::Blocks qui est cross-platform et le compilateur GCC fournit dans MinGW pour la version windows. Afin de faciliter le développement des futures applications je testerai qu'elle soit compilable avec visual C++. Pour l'interpolation, on utilisera des librairies existantes telles que la GNU Scientific Library (http://www.gnu.org/software/gsl/). Image management 04/04/07 page 17/22 IV.Spécifications du visualisateur A.Description des besoins Suite au travaux de réalisation de la librairie graphique, il faut développer un outil graphique permettant de visualiser les images et de les manipuler. B.Fonctionnalités nécessaires Les chercheurs du projet FOGRIMMI ont besoin d'un outil leur permettant de visualiser les images tiff produites par ScanScope d'Apério et de les manipuler. De plus, un système de lancement de traitement sur l'image affichée peut être intégré et ainsi afficher le résultat. 1.0 Ouverture d'image SVS, TIFF 1.1 Enregistrement d'image, avec annotation, sélection (choix options) 1.2 Enregistrement zone sélectionnée dans image(sélection des tuiles) 2.0 Drag n drop 2.1 Zoom, choix de l'algorithme de zoom 2.2 Rotation 2.3 Application filtre, choix du filtre 2.4 Ajustement image 3.0 Annotation XML, module permettant la saisie et l'effacement d'annotation 4.0 Sélection de région pour zoom, extraction sous autre format 4.1 Sélection de région de n côté avec l'interface 4.2 Sélection de région de n côté par import de point 4.3 Sélection de région multiple 4.4 Sauvegarde XML des sélections de région 5.0 Lancement de traitement sur l'image ou la région sélectionnée 5.1 Enregistrement segmentation dans le tiff 5.2 Import segmentation 5.3 Export segmentation 6.0 Mise en cache des manipulations utilisateur probable (activer / désactiver) C.Gestion des erreurs Le visualisateur doit, dans la mesure du possible, éviter tout crash et gérer au mieux les messages d'erreurs fournis par la librairie graphique. A chaque erreur une boite de dialogue affichera l'erreur obtenue. D.Performances requises et contraintes Au vu des données traitées, le visualisateur peut vite demander beaucoup de ressources mémoires et processeurs. Afin de garantir une utilisation rapide de l'outil, il est envisageable de gérer un pré-cache stockant les données des futures actions possibles de l'utilisateur (zoom, déplacement). De plus, cet outil doit être portable sur Linux, Windows, Mac et il sera open source. Image management E.Définition des interfaces externes i. Définition des menus: Fichier: ○ Ouvrir image ○ Sauvegarder ○ Sauvegarder sous... ○ Import points sélection ○ Export points sélection ○ Import annotations ○ Export annotations Affichage: ○ Zoom avant ○ Zoom arrière ○ Zoom sur la sélection active ○ Taille originale ○ Gestionnaire d'annotations (on/off) ○ Gestionnaire Zoom (on/off) Images: ○ Rotations ○ Rogner sur la sélection active ○ Filtres Outils: ○ Sélection ○ Annotation ○ Lancer analyse d'image 04/04/07 page 18/22 Image management 04/04/07 page 19/22 F. Choix des outils de développement La portabilité de l'application fait partie des contraintes énoncées et la librairie utilisée le sera. Afin d'interfacer facilement cette librairie le langage C/C++ est tout indiqué. L'API GUI doit être cross-platform, libre et facile d'utilisation, fluide et avoir une communauté active afin d'assurer la pérennité de l'application. En annexe un tableau à double entrées présentant les principales API libre et cross-platform permet d'avoir un aperçu des choix possibles. Les WxWidgets ont toutes les qualités requises et sont disponibles avec l'IDE Code::Blocks qui est cross-platform et le compilateur GCC, fournit dans MinGW pour la version Windows. De plus wxWidgets permet la lecture d'images tiff tuilé mais ne supporte pas l'organisation en page. Cette API est libre et gratuite (LGPL). QT semble aussi une très bonne API mais ne supporte pas le tiff. Cette librairie est développée par Trolltech ce qui est un gage de stabilité. Une licence open source et research existe rendant gratuite l'utilisation de QT. Le choix final est Qt correspondant tout à fait à l'esprit du projet. Une des fonctionnalités de l'application est de pouvoir gérer un système d'annotation. Celui d'Apério est convainquant et le format XML est bien adapté aux méthodes d'export et d'import. On reprendra alors les balises XML d'Apério. Afin d'afficher une segmentation, on définira également une structure de données correspondant au concept des lignels ainsi que de quoi les manipuler. Image management 04/04/07 page 20/22 Annexe: Free Toolkits (including both Free (in the GNU sense) and no-cost ones) Source: http://www.atai.org/guitool/ C/C++ oriented (unless explicit stated with "C API", all toolkits in this table provide APIs in C++) Name aedGUI Comments license Unix Unix X11+ MS Win 95/98 X11+ Motif MS Win OS/2 PM MacOS NT/2000 NextStep OpenStep MacOS X a cross-plataform, easy-to-use, (via non-intrusive C++ GUI library LGPL SDL) that runs on top of SDL (via SDL) (via SDL) (via SDL) (via SDL) (via SDL) (via SDL) a high-level graphical C application framework aimed primarly at 2D/3D games and simulations. support for SDL 2D and OpenGL rendering. Thread safe BSD y (via SDL) (via SDL) GUI toolkit of the Arachne project BSD y (via SDL) y (via SDL) y y y y y y BSD y y y gtk+ The GIMP Toolkit.developed as part of the GIMP project. Now at version 2.8. C API. IS the leading toolkit in the free LGPL software community in conjuction with Qt. variable look and feel (default:Motif). y y y in progress JUCE an all-encompassing C++ class library for developing crossGPL platform applications y y y y note y note Agar CG(link broken?) Fltk The Fast Light Tool Kit. API LGPL with modeled after Xform,but in additio C++. SGI Motif look and feel. nal good documentation.( Fluid, permis an UI builder) sions Advanced research toolkit formly supported by theX Fresco (old) Consortium but now independently developed. also see Successor to Interviews.( alt. Berlin as page)( Java version) the new Fresco ( another info page) development stopped, succeeded by Berlin NGL, NUI NGL is an application LGPL y note framework intended to work with SGI's OpenGL* API. NUI is a cross-platform C++ GUI programming framework for OpenGL applications built note (via SDL) y (via SDL) y (via SDL) y y y y y note y note y note Image management 04/04/07 page 21/22 on top of the NGL ParaGUI Qt a high-level crossplatform application framework and GUI library. It is completely based on the SDL. a high-quality framework. full 2d graphics API (with rotations, scaling, shearing, etc.), metafile support, same code for screen and printer output. variable look and feel LGPL y (via SDL) QT4 libre pour tout projet libre, payant sinon y SUIT Simple User Interface Toolkit. C API. ? y Tk good widget set but not frequently used as a pure C library. Widely used in combination with high-level script languages (Tcl, Scheme, Python, Perl,etc.). C API. Native look and feel. BSD y wGui a simple, platform independent (via dialog manager library using LGPL SDL) SDL y y (via SDL) y (via SDL) y (via SDL) y y y y y y y y (via SDL) (via SDL) (via SDL) (via SDL) (via SDL) (via SDL) general purpose Mac/Win32 C++ application framework. successor to the Mac framework Raven. is a modern framework that Whisper2 takes advantage of templates, multiple inheritance, STL, and exceptions. is designed around the notion of Design by Contract and includes numerous debugging tools BSD y y y an IDE with an original windowing library and visual WideStudio BSD window editor and a rich set of development facilities y y y (formerly wxWindows) Common C++ wrapper for many platforms. Version 2.8,3 WxWidgets just released. native look and LGPL feel. good cross-platform support.(Wxxt, X Toolkit port) ( WxGTK, gtk+ port) y y y y y y y ? y y y y y XPToolkit cross-platform, toolkit for MPL/ y (Xt, Mozilla."An open source SDK GPL/L gtk) (Xpfe) for building common crossGPL platform user interfaces usingexisting cross-platform standards (e.g., XML, RDF, HTML, CSS, DOM, JavaScript) and technologies (e.g., Gecko, XPConnect) to y y y Image management 04/04/07 page 22/22 minimize platform-specific code." May built on top of gtk+ and Xt for X11 YAAF Yet Another Application Framwork, with fairly complete GUI classes and good cross-platform support BSD y y y y Zoolib Zoolib provides a GUI toolkit with a uniquely flexible layout system. It also provides a single-file database format, TCP networking, and extensive debugging support. ZooLib applications are BSD multithreaded. ZooLib requires only minimal support from the underlying OS and platform GUI layer, and thus could be ported to a completely new platform without too much difficulty y y y y Name Comments license Unix Unix X11 + MS Win 95/98 X11 + Motif MS Win OS/2 PM MacOS NT/2000 (+X11 has been ported to OS/2 so theoretically X-based toolkits work in OS/2 X11 as well. see Xfree86/OS2) Lien Internet: Zoomify: http://www.zoomify.com/ Aperio: http://www.aperio.com/ Documentation: http://www.aperio.com/documents/ LibTIFF: http://www.libtiff.org/ TIFF spec: http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf WxWidgets: http://www.wxwidgets.org/ QT: http://www.trolltech.com/products/qt Code::blocks: http://www.codeblocks.org/ Free GUI API table source: http://www.atai.org/guitool/ TIFF ICC: http://www.littlecms.com/newutils.htm#tifficc y NextStepO penStep MacOS X