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