FR 3053507 A1 20180105 FR 1656262 A 20160630 1 Viewer multimodalité La présente invention se réfère à un système et à une méthode de transmission d'image, et plus particulièrement à une méthode 5 d'affichage et de manipulation d'images multicanaux à très grande vitesse. Les systèmes d'imagerie deviennent de plus en plus sophistiqués, capturant d'énormes quantités de données, et ce à une vitesse et à une résolution croissantes. Le principal défi pour une analyse d'image 10 réussie est de pouvoir visualiser, manipuler, analyser et partager des données d'images de manière simple, fiable et rapide. Un enjeu d'une analyse d'image multicanaux est d'avoir la possibilité d'afficher une sélection voulue de canaux et d'appliquer des transformations (ex. ajustement de contraste, changement des 15 couleurs...) sur chaque canal séparément. Un autre enjeu est de permettre une interprétation collaborative des résultats en permettant aux professionnels d'accéder aux données affichées en même temps, quelque soir leurs localisations géographiques, et à partir de n'importe quel terminal de communication 20 tel qu'un ordinateur, une tablette ou un smartphone. L'invention concerne un système pour manipuler une image multicanaux stockée dans un serveur. Ce système est accessible à partir de n'importe quel navigateur web sans installation de plugin requise. La méthode de manipulation d'une image multicanaux, selon la 25 présente invention, peut être exécutée sur des terminaux à ressources limitées tels que les téléphones mobiles. La présente invention concerne une méthode pour manipuler et afficher une image multicanaux de façon très rapide permettant aux utilisateurs d'accéder en même temps aux données à partir de n'importe 30 quel terminal de communication. La méthode comprend une méthode de stockage, pour transformer l'image multicanaux en une multitude d'unités de textures 2D. Cette étape correspond à une étape de prétraitement réalisée sur un serveur. Le système (framework en anglais) pour réaliser l'exécution de la 35 méthode de manipulation d'images est accessible par une multiplicité d'utilisateurs à partir de tout type de terminaux de communication tels qu'un ordinateur, une tablette, ou un smartphone. Par exemple, 3053507 2 lorsqu'un utilisateur choisit une image multicanaux stockée sur le serveur, et sélectionne plusieurs canaux, ces derniers s'affichent sur tous les terminaux de communication connectés. En général, pour une image multicanaux donnée, n'importe quel utilisateur -mais un à la fois- peut choisir une sélection de canaux à afficher, des paramètres de transformation et de projection pour chaque canal, à tout moment. Les étapes de transformation et de projection sont effectuées sur les canaux sélectionnés à très grande vitesse grâce à une implémentation parallèle des processus (parallel computing en anglais) i.e. tous les pixels de tous les canaux sélectionnés sont traités en même temps sur les processeurs graphiques des terminaux de communication connectés. L'invention peut être utilisée sur tout type d'image multicanaux, qu'elles soient en deux dimensions, en trois dimensions, de format 8-bit ou 16-bit. Les différents canaux de l'image peuvent par ailleurs provenir de différentes modalités d'imagerie. Il est ainsi proposé une méthode pour visualiser et manipuler une image multicanaux, composée de plusieurs canaux, dont les canaux proviennent d'une ou plusieurs modalités d'imagerie, ladite méthode comprenant les étapes de : stockage de l'image multicanaux dans une ou plusieurs unités de texture 2D, chaque unité de texture représentant un paquet de quatre tuiles 8-bit correspondant à un ou plusieurs canaux à une position donnée sur l'image multicanaux, chaque unité de texture 2D étant une unité de stockage mémoire propre à un processeur graphique, prise en compte d'une sélection d'un ou plusieurs canaux de l'image multicanaux, prise en compte de paramètres de transformation et de projection pour les canaux sélectionnés, application de la transformation sur la sélection de canaux, en accord avec les paramètres reçus, tous les pixels des canaux sélectionnés étant traités en même temps, projection des canaux sélectionnés dans un espace de couleur RGB, en accord avec les paramètres reçus, tous les 3053507 3 pixels des canaux sélectionnés étant projetés en même temps. La transformation appliquée peut par exemple être une modification de contraste de l'image déterminée par les paramètres 5 d'entrée. L'étape de stockage, conduite pour une image de format 8-bit, comprend les opérations de : partitionnement de chaque canal de l'image multicanaux en une grille régulière de tuiles 8-bit de mêmes dimensions, et 10 de mêmes dimensions qu'une unité de texture 2D, - groupement des tuiles 8-bit correspondant à une position donnée dans la grille en une ou plusieurs unités de texture 2D. Quand l'étape de stockage est réalisée pour une image de format 15 16-bit, cette étape comprend les opérations de : partitionnement de chaque canal de l'image multicanaux en une grille régulière de tuiles 16-bit de même dimension, et de mêmes dimensions qu'une unité de texture 2D, partitionnement de chaque tuile 16-bit en un couple de deux 20 tuiles 8-bit en séparant les huit bits les plus élevés des huit bits les plus faibles pour chaque valeur de pixel 16-bit, groupement des tuiles 8-bit correspondant à une position donnée dans la grille régulière en une ou plusieurs unités de texture 2D. 25 L'étape de transformation, conduite pour une image de format 8- bit, comprend les opérations de: attribution de valeurs d'intensité de canaux aux pixels à partir des valeurs stockées dans les canaux des unités de texture 2D, 30 calcul des nouvelles valeurs de pixels en accord avec les paramètres de transformation. L'étape de projection, conduite pour une image de format 8-bit, comprend l'opération de calcul de la projection linéaire de tous les pixels dans un espace de couleur RGB, en accord avec les paramètres 35 de projection. 3053507 4 Dans le cas d'une image de format 16-bit, cette étape de projection comprend les opérations de : calcul de la projection linéaire de tous les pixels dans un espace de couleur RGB en utilisant les paramètres de 5 projection, conversion de chaque canal R, G et B obtenus en canal 8-bit. L'étape de transformation, conduite pour une image de format 16-bit, comprend les opérations de : 10 conversion de chaque couple consécutif de canaux d'unités de texture 2D en valeurs de format 16-bit, attribution de valeurs d'intensité de canaux aux pixels à partir des valeurs de format 16-bit, calcul de nouvelles valeurs des pixels en accord avec les 15 paramètres de transformation. La présente invention propose également un système, pour manipuler une image multicanaux, ladite image multicanaux étant composée de plusieurs canaux, ledit système comprenant un serveur comportant : 20 un module de conversion pour convertir des images multicanaux en une ou plusieurs unités de texture 2D, chaque unité de texture 2D représentant un paquet de quatre tuiles 8-bit correspondant à un ou plusieurs canaux à une position donnée dans l'image multicanaux, une unité de 25 texture 2D étant une unité de stockage mémoire propre à un processeur graphique, un module mémoire pour le stockage des unités de texture 2D obtenues, un module de connexion pour connecter un ou plusieurs 30 terminaux de communication, tels qu'un ordinateur personnel, une tablette digitale ou un smartphone, sur le même compte, un module de sélection pour recevoir une sélection d'un ou plusieurs canaux d'une image multicanaux stockée sur le 35 serveur, à partir d'un des terminaux de communication connecté au serveur sur un même compte, 3053507 5 un module de réglage pour recevoir des paramètres de transformation et de projection en entrées pour les canaux sélectionnés à partir d'un des terminaux de communication connectés au serveur sur le même compte, 5 un module de calcul pour donner l'instruction à chaque terminal connecté au serveur sur un même compte, d'appliquer - en accord avec les paramètres reçus - une transformation et une projection des canaux sélectionnés dans un espace RGB, directement dans leurs processeurs 10 graphiques. D'autres objets et avantages de l'invention apparaîtront à la lumière de la description ci-après, faite en référence aux dessins et listings joints, dans lesquels : La FIG.1 est une illustration du système de communication global. 15 La FIG.2 représente un diagramme fonctionnel de la transformation et de la projection dans un espace de couleur RGB pour un exemple d'image de format 8-bit. La FIG.3 représente un diagramme fonctionnel de la transformation et de la projection dans un espace de couleur RGB pour un exemple 20 d'image de format 16-bit. La FIG.4 est une illustration de l'étape de stockage pour un exemple d'image de format 8-bit. La FIG.5 est une illustration de l'étape de stockage pour un exemple d'image de format 16-bit. 25 La FIG.6 représente un diagramme fonctionnel de la transformation et de la projection dans un espace de couleur RGB pour un exemple d'image de format 8-bit. La FIG.7 représente un diagramme fonctionnel de la transformation et de la projection dans un espace de couleur RGB pour un exemple 30 d'image de format 16-bit. Le LISTING.1 est un exemple d'implémentation séquentielle des étapes de transformation et de projection. Le LISTING.2 est un exemple d'implémentation parallèle des étapes de transformation et de projection. 35 La FIG.1 représente le système de communication global. Il comprend un serveur 1 avec une unité de mémoire 2 et un processeur central 3 (CPU ou Central Processing Unit en anglais). L'unité de 3053507 6 mémoire 2 permet de stocker des images multicanaux en unités de texture 2D. Une unité de texture 2D est une unité de stockage mémoire dont la taille est liée à un processeur graphique. L'étape de transformation d'une image multicanaux en plusieurs unités de texture 5 2D est réalisée par le processeur central 3 du serveur 1. Plusieurs utilisateurs, et ce quel que soit leur nombre, sont connectés au serveur 1 grâce à un réseau accessible depuis n'importe quel navigateur web, et à partir de tout type de terminaux de communication 4 tels qu'un smartphone, une tablette ou un ordinateur, 10 comme illustré en FIG.1. Lorsqu'un des utilisateurs connectés envoie des paramètres au serveur 1 (flèche A), celui-ci commande aux terminaux de communication connectés 4 de réaliser les étapes de calculs dans leurs processeurs graphiques (flèches B). N'importe quel utilisateur connecté 15 peut entrer de nouveaux paramètres. La vitesse élevée de la méthode de calcul proposée par la présente invention, permet à un groupe d'utilisateurs de visualiser en même temps les mêmes données, et les modifications effectuées en temps réel. Dans la présente description le terme de temps réel se 20 réfère à une opération dont le temps d'exécution est inférieur à 40 millisecondes. Les modifications que les utilisateurs peuvent réaliser sur les images multicanaux sont: - la sélection d'un ou plusieurs canaux à afficher sur les écrans des 25 terminaux de communication, - les paramètres de transformation pour chaque canal, - les paramètres de projection pour chaque canal. Les étapes de transformation et de projection sont exécutées sur le processeur graphique de chaque terminal connecté. La FIG.2 est un 30 diagramme fonctionnel des étapes de transformation et de projection dans le cas d'un exemple d'image de format 8-bit. A titre de comparaison, la FIG.3 illustre ces étapes pour un exemple d'image de format 16-bit. Pour une image de format 16-bit, il y a une étape supplémentaire de conversion des données de format 8-bit. 35 Les étapes illustrées dans les FIG.2 et FIG.3 sont les étapes de transformation et de projection. L'opération de transformation notée H dans FIG.2 et FIG.3 prend deux données d'entrée pour chaque canal. 3053507 7 Cette opération peut par exemple être un ajustement de contraste. La description suivante fait souvent référence à une opération particulière d'ajustement de contraste à titre d'exemple, mais la présente invention n'est pas limitée à ce type de transformation. Tout type de 5 transformation impliquant une modification des valeurs des pixels peuvent être appliquées (ex. défloutage, segmentation...). Une opération d'ajustement de contraste peut être exprimée mathématiquement par: étant donné x une valeur d'entrée dans [0,255] ou [0,216 -1], et 10 considérant deux paramètres ThL et ThH, {0 si x ThH max (x ThL) sinon ThH-ThL Dans le cas d'une image de format 8-bit, la valeur max est égale à 255, et dans le le cas d'une image de format 16-bit, la valeur max est égale à 216 - 1. 15 L'opération de projection f dans les FIG.2 et FIG.3 est une projection linéaire des canaux dans un espace de couleur RGB. Elle est définie par une matrice M dont les valeurs sont ajustées par un utilisateur. La matrice M comporte autant de lignes que de canaux d'entrées et trois colonnes. 20 Les étapes de projection et de transformation sont réalisées en temps réel, ce qui permet aux utilisateurs d'effectuer les modifications et de les visualiser en même temps. Les canaux d'entrée de l'étape de transformation sont de forme particulière. Ceux-ci sont stockés sur le serveur 1 sous forme d'unités 25 de texture 2D. Une unité de texture 2D est une unité de stockage mémoire dont la taille est fixe et liée à un processeur graphique. Une unité de texture 2D, en accord avec la présente invention, est, en particulier, un paquet de tuiles de format 8-bit correspondant à un ou plusieurs canaux à une position donnée dans l'image multicanaux 30 concernées. La plupart du temps, une unité de texture 2D est utilisée pour afficher une image RGBA i.e. le contenu de l'unité de texture 2D est directement affiché sur un écran. Dans l'usage spécifique fait par la présente invention, les unités de texture 2D sont utilisées uniquement x: 3053507 8 pour leur fonction d'unités de stockage mémoire afin de faciliter et d'améliorer la rapidité de l'ensemble processus. Les opérations H et f présentées précédemment sont exécutés directement sur les unités de texture 2D. 5 L'étape de stockage d'une image multicanaux en paquets de tuiles de format 8-bit, selon la présente invention, est pré-calculée sur le processeur central 3 du serveur 1. La méthode de stockage est illustrée en FIG.4 pour une image de format 8-bit et en FIG.5 pour une image de format 16-bit. 10 La méthode de stockage comprend deux étapes : une étape appelée tilling et une autre étape appelée packing. En référence à la FIG.4, l'étape tilling consiste à décomposé un canal donné en une grille régulière de tuiles de mêmes dimensions. Après l'étape tilling, chaque canal est un paquet de plusieurs tuiles, et chaque tuile représente une 15 portion de l'image multicanaux. Par exemple, les tuiles 100, 200, 300, 400, et 500 correspondent à la même position dans l'image multicanaux. Chaque tuile a les mêmes dimensions en pixels qu'une unité de texture 2D i.e. 512 x 512 pixels. L'étape packing consiste en un groupement de chaque tuile pour 20 une position donnée en paquets de quatre canaux. Dans l'exemple de la FIG.4, l'image d'entrée comporte cinq canaux. Les tuiles situées en haut à gauche sont regroupées en un paquet (100, 200, 300 and 400) et un autre paquet contenant la tuile 500. Dans cet exemple, le nombre de paquets est deux. Le nombre de paquets est noté K et le nombre de 25 fichiers obtenus est noté N dans la FIG.4. Les nombres de tuiles, de paquets et de fichiers obtenus dépendent du nombre de canaux d'entrées et des dimensions de l'image d'entrée. Le rôle de l'étape packing est de minimiser le nombre de tuiles en 30 les groupant en paquets. Un paquet de quatre tuiles est également appelé unité de texture 2D. Dans l'exemple de la FIG.4, toutes les tuiles sont de format 8-bit. Nous nous référons maintenant à l'étape de stockage illustré par la FIG.5 pour un exemple d'image multicanaux de format 16-bit. Elle 35 comprend les mêmes étapes que dans le cas d'une image de format 8-bit, à savoir une étape tilling et une étape packing. De plus, elle comprend une opération supplémentaire appelée S dans la FIG.5. S est 3053507 9 une opération de partitionnement consistant à séparer les huit bits les plus élevés des huit bits les plus faibles pour une valeur donnée de format 16-bit. Cette opération est réalisée après l'étape tilling, à l'issue de laquelle les tuiles obtenues sont de format 16-bit. Par exemple, la 5 tuile de format 16-bit situé en haut à gauche et numérotée 100 est divisée en deux tuiles de format 8-bit : 100h contenant les huit bits les plus élevés pour chaque valeur de pixel et 1001 contenant les huit bits les plus faibles pour chaque valeur de pixel. La FIG.6 représente un diagramme fonctionnel des étapes de 10 transformation et de projection dans le cas de la même image de format 8-bit de la FIG.4. En particulier, elle montre les différentes étapes effectuées pour le premier fichier comprenant deux unités de texture 2D. Les mêmes opérations sont réalisées sur toutes les autres unités de texture illustrées en FIG.4 mais ne sont pas représentées ici. 15 T1 and T2 sont deux unités de textures 2D RGBA. La transformation H est appliquée sur toutes les unités de texture 2D en parallèle, i.e. tous les pixels des unités de texture 2D sont calculés en même temps. Après l'étape de transformation, l'opération de projection f est également appliquée en parallèle sur tous les pixels, ce qui 20 permet l'affichage de l'image en temps réel (i.e. en un temps inférieur à six millisecondes). Nous nous référons maintenant à la FIG.7 représentant un diagramme fonctionnel des étapes de transformation et de projection dans le cas de la même image de format 16-bit que dans la FIG.5. En 25 particulier, elle montre les différentes opérations appliquées sur le premier fichier de deux unités de texture 2D. Les mêmes opérations sont appliquées sur toutes les autres unités de texture 2D illustrées en FIG.5 mais non représentées ici. Dans ce diagramme, il y a deux opérations supplémentaires notées 30 Sr et conversion 8-bit. L'opération Sr est la fonction inverse de la fonction S illustrée en FIG.5. Etant données deux valeurs de format 8-bit, la fonction Sr recompose la valeur de format 16-bit. Les valeurs de format 16-bit des pixels sont transformées et projetées dans un espace de couleur RGB directement avant la conversion 8-bit. De la même 35 manière que pour le format 8-bit, tous les pixels sont calculés en parallèle. 3053507 10 Afin de comparer un algorithme séquentiel et un algorithme parallèle, on se réfère aux pseudocodes LISTING.1 et LISTING.2, respectivement. Ceux-ci sont donnés à titre d'exemple dans le cas où l'opération de transformation est un ajustement de contraste. Selon le 5 LISTING.1, l'approche directe consiste en une implémentation séquentielle des étapes typiquement au niveau d'un processeur central. Avec ce type d'implémentation, les pixels sont calculés séquentiellement. A partir du moment où un utilisateur modifie les paramètres ThLs et ThHs du vecteur de transformation, le temps écoulé 10 avant l'affichage de l'image sur l'écran est trop long. Par exemple, le temps moyen pour afficher une image de trois canaux 8-bit est compris entre deux cents et trois cents millisecondes. Donc l'approche directe ne permet pas la mise à jour en temps réel des paramètres entrés par l'utilisateur. 15 Comme illustré dans le LISTING.2, la méthode d'implémentation de la présente invention utilise les capacités de programmation parallèle (parallel computing en anglais) des processeurs graphiques pour calculer tous les pixels p en parallèle au lieu de séquentiellement. Une autre différence avec l'approche séquentielle est dans les ressources 20 d'entrées. Avec la présente méthode, les canaux sont sauvegardés sous forme d'unités de texture 2D i.e. en paquets de quatre tuiles plutôt que dans le système mémoire. Les canaux d'entrée se réfèrent au vecteur T de K unités de texture 2D. L'exemple du LISTING.2 est pour un fichier. Les N fichiers correspondant aux m canaux sélectionnés sont 25 calculés en parallèle avec la présente implémentation. Par exemple, avec la présente invention, le temps moyen écoulé avant l'affichage de cinq canaux 8-bit est compris entre deux et six millisecondes. La rapidité d'exécution de cette méthode permet la mise à jour en temps réel des paramètres entrés par l'utilisateur. 30 REVENDICATIONS1. Méthode pour visualiser et manipuler une image multicanaux, dont les canaux proviennent d'une ou plusieurs modalités d'imagerie, ladite méthode comprenant les étapes de: stockage de l'image multicanaux dans une ou plusieurs unités de texture 2D, chaque unité de texture 2D représentant un paquet de quatre tuiles de format 8-bit correspondant à un ou plusieurs canaux à une position donnée sur l'image multicanaux, et chaque unité de texture 2D étant une unité de stockage mémoire dont la taille est liée à un processeur graphique, prise en compte d'une sélection d'un ou plusieurs canaux de l'image multicanaux, prise en compte de paramètres de transformation et/ou de projection pour les canaux sélectionnés, application d'une transformation sur les canaux sélectionnés, en accord avec les paramètres reçus, tous les pixels des canaux étant calculés en même temps, projection des canaux sélectionnés dans un espace de couleur RGB, en accord avec les paramètres reçus, tous les pixels des canaux sélectionnés étant projetés en même temps. 2. Méthode selon la revendication 1, caractérisée en ce que la transformation appliquée est une modification de contraste de l'image. 3. Méthode selon l'une quelconque des revendications 1 ou 2, caractérisée en ce que l'étape de stockage conduite pour une image de format 8-bit, comprends les étapes de: partitionnement de chaque canal de l'image multicanaux en une grille régulière de tuiles 8-bit de mêmes dimensions, et de mêmes dimensions qu'une unité de texture 2D, groupement des tuiles 8-bit correspondant à une position donnée dans la grille régulière en une ou plusieurs unités de texture 2D. 3053507 12 4. Méthode selon l'une quelconque des revendications 1 à 3, caractérisée en ce que l'étape de transformation, conduite pour une image de format 8-bit, comprend les étapes de: attribution de valeurs d'intensité de canaux aux pixels à 5 partir des valeurs stockées dans les canaux (R, G, B, A) des unités de texture 2D, calcul des nouvelles valeurs de pixels en accord avec les paramètres de transformation. 5. Méthode selon l'une quelconque des revendications 1 à 4, 10 caractérisée en ce que l'étape de projection, conduite pour une image de format 8-bit, comprend une opération de calcul de la projection linéaire de tous les pixels dans un espace de couleur RGB, en accord avec les paramètres de projection. 6. Méthode selon l'une quelconque des revendications 1 ou 2, 15 caractérisée en ce que l'étape de stockage conduite sur une image de format 16-bit, comprend les opérations de : - partitionnement de chaque canal de l'image multicanaux en une grille régulière de tuiles 16-bit de mêmes dimensions, et de mêmes dimensions en pixels qu'une unité de texture 2D, 20 partitionnement de chaque tuile 16-bit en un couple de deux tuiles de format 8-bit en séparant les huit bits les plus élevés des huit bits les plus faibles pour chaque valeur de pixel 16- bit - groupement des tuiles 8-bit correspondant à une position 25 donnée dans la grille régulière en une ou plusieurs unités de texture 2D. 7. Méthode selon la revendication 6, caractérisée en ce que l'étape de transformation conduite sur une image de format 16-bit, comprend les étapes de: 30 conversion de chaque couple consécutif de canaux d'unités de texture 2D de format 8-bit en valeurs de format 16-bit, attribution de valeur d'intensité de canaux aux pixels à partir des valeurs de formatl6-bit, calcul des nouvelles valeurs des pixels en accord avec les paramètres de transformation. 3053507 13 8. Méthode selon la revendication 7, caractérisée en ce que l'étape de projection conduite pour une image de format 16-bit, comprend les étapes de: calcul de la projection linéaire de tous les pixels dans un 5 espace de couleur RGB en accord avec les paramètres de projection, conversion de chaque canal obtenu R, G et B en canal de format 8-bit. 9. Système, pour manipuler une image multicanaux, ladite image 10 multicanaux étant composée de plusieurs canaux, ledit système comprenant un serveur (1) comportant : un module de conversion pour convertir des images multicanaux en une ou plusieurs unités de texture 2D représentant un paquet de quatre tuiles de format 8-bit 15 correspondant à un ou plusieurs canaux à une position donnée dans l'image multicanaux, une unité de texture 2D étant une unité de stockage mémoire dont la taille est liée à un processeur graphique, un module mémoire pour le stockage des unités de texture 20 2D obtenues, un module de connexion pour connecter, sur un même compte, un ou plusieurs terminaux de communication (4), tels qu'un ordinateur personnel, une tablette digitale, ou un smartphone, 25 un module de sélection pour recevoir une sélection d'un ou plusieurs canaux d'une image multicanaux stockée sur le serveur (1), à partir d'un des terminaux de communication (4) connecté au serveur sur un même compte, un module de réglage pour recevoir les paramètres de 30 transformation et de projection en entrées pour les canaux sélectionnés à partir d'un des terminaux de communication (4) connectés au serveur sur un même compte, un module de calcul pour donner l'instruction à chaque terminal (4) connecté au serveur (1) sur un même compte, 35 d'appliquer, en accord avec les paramètres reçus, une transformation et une projection dans un espace de couleur 3053507 14 RGB, directement au niveau de leurs processeurs graphiques.