Si vous utilisez ces logiciels pour de la recherche scientifique,
prière de citer :
Deroulers et al., Analyzing huge pathology images
with open source software, Diagnostic
Pathology 8:92 (2013).
Et/ou si vous trouvez ce(s)
logiciel(s) utile(s), envoyez-nous un courriel ! Cela nous
aidera à obtenir le soutien de nos tutelles pour poursuivre le travail
de développement. Vous pouvez utiliser l'adresse suivante (enlever
l'anti-spam):
christophe.deroulers.nospam@u-paris.fr.
Pour Windows 64 bits : | ndpi2tiff.exe |
ndpisplit.exe ndpisplit-m.exe ndpisplit-mJ.exe ndpisplit-s.exe ndpisplit-s-m.exe ndpisplit-s-mJ.exe | |
Pour Windows 32 bits : | ndpi2tiff.exe |
ndpisplit.exe ndpisplit-m.exe ndpisplit-mJ.exe ndpisplit-s.exe ndpisplit-s-m.exe ndpisplit-s-mJ.exe | |
Mac OS 10.6 et supérieurs : | Pkg installer |
Pour Linux x86_64 : | ndpi2tiff ndpisplit |
Plugins pour ImageJ |
|
Code source |
En utilisant un numériseur de lames fourni par Hamamatsu tel que le NanoZoomer, vous pouvez vous retrouver avec des fichiers au format NDPI qui ne peuvent pas toujours être directement ouverts avec des logiciels d'analyse d'images courants tels qu'ImageJ. NDPITools est un ensemble de logiciels qui peuvent convertir des fichiers NDPI en fichiers TIFF standard, avec en option un découpage en morceaux plus petits (au format JPEG ou TIFF) qui tiendront plus facilement en mémoire vive. Ils sont accompagnés par un jeu de greffons (plugins) pour ImageJ, qui permettent d'utiliser les logiciels directement depuis ImageJ, de manière graphique.
Ces logiciels sont open source, distribués selon les termes de la GNU General Public License v. 3.0 ou toute version ultérieure, selon votre choix. Ils sont fondés sur les bibliothèques libtiff, libjpeg et libjpeg-turbo publiées gratuitement par leurs auteurs respectifs, que nous remercions.
Vous pouvez obtenir le logiciel par téléchargement (voyez les liens dans le cadre). Certaines versions précompilées sont disponibles. La version pour Windows 32 bits devrait fonctionner sous toutes les versions de Windows (XP, Vista, 7 ; 32 ou 64 bits) mais elle ne produit que des images qui nécessitent au plus environ 1 gigaoctet de mémoire. La version 64 bits s'affranchit de cette limite.
Placez le fichier NDPITools_.jar dans le répertoire des plugins d'ImageJ (vous pouvez trouver son emplacement en utilisant la commande Plugins -> Utilities -> ImageJ Properties dans les menus d'ImageJ). Cherchez la valeur qui correspond à la clef Menus.getPlusInsPathvers le milieu de la fenêtre Properties qui apparaît.
Si vous les utilisez uniquement via les plugins pour ImageJ, vous pouvez placer leurs fichiers au même endroit que NDPITools_.jar ci-dessus.
Dans le cas général, sous Mac OS ou Linux, vous pouvez copier les fichiers ou les placer dans un répertoire qui est recensé dans vore PATH, par exemple /usr/local/bin. Sous Mac OS, cela se fait automatiquement si vous installez à partir du fichier .pkg.
Pour utiliser les plugins NDPITools pour ImageJ, vous pouvez lire les instructions spécifiques. Le reste de cette page est consacré essentiellement aux outils en ligne de commande des NDPITools.
Sous Windows, vous pouvez simplement faire glisser l'icône d'un fichier NDPI sur le fichier .exe ou l'icône du programme que vous voulez utiliser.
ndpisplit et ndpi2tiff devraient réussir leur travail même sur des ordinateurs munis de peu de mémoire.
Sur toutes les plateformes (dont Windows, Linux, Mac OS), vous pouvez aussi lancer les programmes à l'aide d'une ligne de commande. Ouvrez un interpréteur de commandes (par exemple «Invite de commandes», Terminal.app, xterm...) et lancez le programme en tapant son nom (précédé du chemin si besoin est) suivi d'une espace puis le chemin vers le fichier NDPI (sous Mac OS, le chemin par défaut est /usr/local/bin). Le(s) fichier(s) TIFF ou JPEG produit(s) seront placés dans le répertoire où le fichier NDPI se trouve. Seul un fichier NDPI à la fois peut être donné sur la ligne de commande.
Nous avons été informés que les fichiers .exe peuvent poser problème avec les antivirus sous Windows, notamment quand ils sont lancés depuis ImageJ. Les fichiers .exe que nous publions sont censément sans virus car ils ont été fabriqués sous Unix grâce à MinGW et à MinGW-w64. Nous n'avons pas rencontré de problème en les utilisant avec l'antivirus Avira sous Windows XP.
Très souvent, les images produites aux plus grands grossissements (x20 ou x40) sont tellement énormes qu'elle ne tiennent pas en mémoire et, donc, ne peuvent pas être ouvertes avec les logiciels habituels. Par exemple, l'image d'un morceau de tissu d'un centimètre carré numérisé à 40x prend typiquement 5 Gib de mémoire. Pour résoudre ce problème, ndpisplit peut être exécuté avec les options ci-dessous. Par souci de commodité, nous fournissons des variantes de ndpisplit où les options ont été activées par défaut : par exemple, lancer ndpisplit-mJ.exe revient à lancer ndpisplit avec l'option -mJ. Autrement, il est possible de lancer les programmes en ligne de commande et de donner les options après le nom de la commande, séparées par des espaces.
Les options -m[memoire][compression] et -M[memoire][compression], avec m comme mosaïque et où mémoire est un nombre décimal optionnel, demandent à ndpisplit de fabriquer en plus des mosaïques à partir des fichiers qui auraient besoin de plus de mémoire Mib de mémoire pour être ouverts (par défaut : 1024.00 Mib = 1 Gib). Une mosaïque est un ensemble de fichiers qui, si on les colle les uns contre les autres, reproduisent l'image entière, et tel qu'aucun fichier n'ait besoin de plus de mémoire Mib pour être ouvert. Avec -m, une mosaïque n'est produite que si elle contient au moins deux morceaux (c'est-à-dire que si un seul morceau ne peut satisfaire à la contrainte de mémoire) ; avec -M, elle est produite systématiquement. Les morceaux de la mosaïque sont stockés dans des fichiers indépendants dont le nom est tiré du nom de l'image de départ et de leur position au sein de la mosaïque (numéros de ligne et de colonne). Bien sûr, ouvrir un morceau à la fois n'est pas aussi pratique qu'ouvrir l'image entière, mais c'est mieux que rien.
La lettre optionnelle compression indique comment les morceaux de la mosaïque doivent être stockés : J pour un fichier JPEG normal, j (valeur par défaut) pour un fichier TIFF normal avec compression JPEG à l'intérieur, n et l pour des fichiers TIFF avec aucune compression et compression LZW (ou Zip) respectivement. Les lettres j et J peuvent être suivies d'un nombre entier entre 0 et 100 qui indique la qualité du JPEG produit (par défaut, 75).
Exemple : ndpisplit -m500J60 déballe le fichier NDPI en fichiers TIFF séparés (un pour chaque grossissement et chaque niveau de z), puis produit une mosaïque à partir de chaque fichier TIFF qui aurait besoin de plus de 500 Mib de mémoire pour être ouvert. Les morceaux de mosaïques auront besoin de moins de 500 Mib de mémoire pour être ouverts et seront stockés dans des fichiers JPEG de niveau de qualité 60.
Si vous êtes intéressé(e) par un logiciel pou créer de telles mosaïques à partir d'un fichier TIFF quelconque, jetez un coup d'œil à tiffmakemosaic qui fait partie des LargeTIFFTools. Bien sûr, vous pouvez d'abord lancer ndpisplit sans option et ensuite utiliser tiffmakemosaic si le résultat est trop gros.
L'option -g[largeur]x[longueur], utilisée en plus des options -m ou -M, demande à ndpisplit de produire des morceaux de mosaïque qui ont la largeur et/ou la longueur donnée (g comme géométrie). Si l'on spécifie à la fois la largeur et la longueur, la contrainte de mémoire éventuellement donnée avec -m ou -M est ignorée.
L'option -o<quantite[%]> comme overlap (en complément de -m) demande à ndpisplit d'ajouter un recouvrement aux morceaux des mosaïques qu'il produit. Ainsi, une ou plusieurs parties (rectangulaires) d'un morceau seront répétées sur les morceaux adjacents respectifs. La quantité à répéter, quantitem peut être soit un nombre entier pour spécifier un nombre de pixels, soit un nombre décimal suivi du symbole pourcent % pour spécifier un pourcentage de la dimension d'un morceau.
Exemple : avec ndpisplit -m -o10, une bande rectangulaire de 10 pixels de large (resp. de haut) sera répétée sur les morceaux de mosaïque adjacents par un bord vertical (resp. horizontal). Avec ndpisplit -m800 -o50%, la moitié droite (resp. inférieure) de chaque morceau de mosaïque sera identique à la moitié gauche (resp. supérieure) du morceau juste à droite (resp. juste en dessous), quelle que soit la taille de chaque morceau (calculée, par ailleurs, pour que l'ouverture du morceau requière moins de 800 Mo de mémoire).
L'option -e[x1,y1,w1,l1[,etiq1]][:x2,y2,w2,l2[,etiq2]]... (qui peut être combinée avec -m ou -M) demande l'extraction d'un nombre arbitraire de régions rectangulaires. Chaque région est indiquée par les coordonnées xi, yi de son coin supérieur gauche, sa largeur wi et sa longueur li. Tous les nombres doivent être entre 0 et 1 inclus ; par exemple, 0.75,0,0.25,0.25 indique la partie en haut à droite et de taille un quart (d'aire un seizième) de l'image. Une etiquette peut être spécifiée ; elle sera ajoutée à la fin du(des) nom(s) de fichier(s) (avant l'extension) où l'image extraite sera enregistrée. Si aucune étiquette n'est donnée, le premier nombre qui n'est pas déjà utilisé dans un nom de fichier du même type sera choisi. La région sera extraite de tous les grossissements et toutes les cotes z disponibles dans le fichier NDPI.
L'option -E[xM1[,zO1a][,zO1b...]],X1,Y1,W1,L1[,etiq1]][:xM2[,zO2a...]x2,y2,w2,l2[,etiq2]]... (qui peut être combinée avec -m ou -M) demande l'extraction d'un nombre arbitraire de régions rectangulaires, spécifiées en unités de pixels, chacune à partir d'une image à un grossissement donné. Chaque région est indiquée par son grossissement xMi (par exemple x40, x10, ...), en option le ou les décalages dans la direction z zOik (par exemple z-1000, z2000, ... en nanomètres), les coordonnées en pixels Xi, Yi de son coin supérieur gauche, sa largeur en pixels Wi et sa longueur en pixels Li.
Par exemple, -Ex40,z-100,z100,1000,0,3000,2000 demande l'extraction, parmi les images au grossissement 40x et de décalage en z -100 et 100, si tant est que de telles images existent, du rectangle de taille 3000x2000 pixels dont le coin supérieur gauche est à la position (1000,0). Une etiquette peut être spécifiée ; elle sera ajoutée à la fin du(des) nom(s) de fichier(s) (avant l'extension) où l'image extraite sera enregistrée. Si aucune étiquette n'est donnée, le premier nombre qui n'est pas déjà utilisé dans un nom de fichier du même type sera choisi. La région sera extraite de tous les grossissements et toutes les cotes z disponibles dans le fichier NDPI.
L'option -x[m1[,m2...]] demande de n'extraire que les images de grossissement(s) m1, m2, ... (s'il y en a). Par exemple : ndpisplit -x40,20,2.4 file.ndpi. Cette option a un effet sur toutes les autres demandes (comme -e).
L'option -z[o1[,o2...]] demande de n'extraire que les images de décalage(s) dans la direction z o1, o2, ... (s'il y en a). Par exemple : ndpisplit -z1000,0,-2000 file.ndpi. Cette option a un effet sur toutes les autres demandes (comme -e).
L'option -s (expérimentale) demande à ndpisplit d'extraire de chaque image les parties réellement numérisées et de retirer le blanc. Quand ils numérisent une lame avec plusieurs échantillons de tissus, certains numériseurs produisent un ensemble de grandes images qui couvrent tout la zone de la lame où les échantillons étaient placés, mais en fait ne numérisent que les régions intéressantes (les échantillons) et remplissent le reste de la zone avec du blanc. En ce cas, il peut être plus utile de mettre chaque région intéressante (c'est-à-dire numérisée) dans un fichier séparé et d'ignorer le blanc, car les fichiers produits seront en général beaucoup plus petits que l'image de départ et donc plus faciles à ouvrir, traiter et analyser. Cette option s'efforce de trouver quelles régions ont été réellement numérisées et de les placer dans des fichiers séparés. Dans ce cas, les images entières ne sont pas extraites. Vous pouvez combiner cette option avec l'option -m qui fabrique alors des mosaïques des régions intéressantes. L'option -e annule l'effet de -s.
Voir aussi la liste complète des options de ndpisplit.
Dans ses versions jusqu'à la 1.47 incluse, ImageJ en lui-même ne sait pas ouvrir les fichiers TIFF à compression JPEG. Cependant :
vous pouvez utiliser la commande Plugins -> NDPITools -> Open TIFF... des plugins NDPITools qui sont distribués ici ; noter que, pour l'instant, il n'est pas possible d'utiliser les plugins NDPITools pour ImageJ avec n'importe quelle JVM sous Linux, ce qui empêche l'ouverture des fichiers TIFF avec Open TIFF... Voir les explications détaillées et moyens de contournement dans la page consacrée aux plugins pour ImageJ.
Plusieurs autres plugins y arrivent.
IJ-imageio est un de ces plugins. Vous pouvez le télécharger à partir de SourceForge (version 1.2.4), ou trouver ici une copie locale de la version 1.2.4. Décompactez le fichier et placer le fichier résultant ij-ImageIO_.jar dans le sous-répertoire plugins du répertoire où ImageJ est installé. Ensuite, après avoir redémarré ImageJ, utilisez la commande Plugins->Image IO->Open. Sous certaines versions de Linux, il y a le même bogue que dans les plugins NDPITools.
The LOCI bio-formats plugin is also able to open the compressed TIFF files (it seems to be substantially slower than IJ-imageio). After installing it and restarting ImageJ, use the command Plugins->LOCI->Bio-formats Importer.
ImageJ, dans ses versions jusqu'à la 1.47 incluse, ne peut ouvrir les images qui ont plus de 2 milliards de pixels (2^31). Et ce même si l'on augmente la mémoire disponible : c'est dû à une limitation intrinsèque des tableaux en Java, adressés par des entiers à 32 bits signés. (Si au contraire votre image n'est pas aussi grande, vous pouvez augmenter la mémoire d'ImageJ en utilisant Edit->Options->Memory).
En ce cas, vous pouvez :
The main reason why standard software can't open NDPI files, although NDPI files look internally quite close to TIFF files, is that the largest images inside a NDPI file can be more that 65500 pixels wide or high, whereas the JPEG standard used to compress and decompress them limits the dimensions to 65535 (there are also additional difficulties on 32 bits operating systems). The NDPITools use a special version of libjpeg and a modifed version of libtiff to overcome this and translate NDPI files into more standard TIFF files.
Depuis juillet 2011, le plugin pour ImageJ LOCI bio-formats est capable d'ouvrir des fichiers NDPI qui ne contiennent pas d'image plus large ou plus haute que 65500 pixels. (Les NDPItools permettent de dépasser cette limite).
OpenSlide est une bibliothèque logicielle qui vise à ouvrir tous les formats d'images (de lames) de microscopie virtuelle dans un cadre uniforme. Elle est capable d'ouvrir certains des formats d'Hamamatsu.
Ce logiciel a été développé par l'équipe de modélisation du Laboratoire IMNC près de Paris, dans le cadre d'un projet de recherche financé par les Instituts IN2P3 et INSB du CNRS et par les Universités Paris Diderot-Paris 7 et Paris Sud-11.
Nous remercions le Laboratoire de Pathologie de l'hôpital Saint-Louis de Paris (en particulier Philippe Bertheau, David Ameisen et Fatiha Bouhidel) pour nous avoir permis l'accès à leur numériseur de lames, et Marc Lartaud et Alexandre Granier de Montpellier RIO Imaging, Christophe Klein du centre de recherches des Cordeliers, Chloé Gerin désormais à l'ASN, Philippe Mailly du Centre interdisciplinaire de recherche en biologie (CIRB), Andrija Stajduhar from the Institut et hôpital neurologiques de Montréal, Yipei Song de l'Université de Virginie (É.-U.) et Sander W. van der Laan du Centraal Diagnostisch Laboratorium de centre hospitalo-universitaire d'Utrecht pour des tests, des signalements de bogues et des suggestions d'amélioration.
Les NDPITools font l'objet d'une fiche PLUME. Merci à l'équipe de PLUME !
Contact : Christophe Deroulers
Hamamatsu, NanoZoomer, Linux, Mac OS et Windows sont des marques déposées par leurs propriétaires respectifs.