Cette page explique comment stocker, accéder, visualiser et utiliser des images de diapositives entières (WSI) de pathologie numérique à l'aide de l'API Cloud Healthcare.
Présentation
La pathologie numérique transforme l'imagerie médicale en permettant d'archiver, de visualiser et d'évaluer les lames de verre classiques dans des workflows numériques. Parmi ses nombreux avantages, la pathologie numérique permet une consultation rapide, donne aux patients un accès plus large et une meilleure compréhension, et améliore les workflows cliniques et de recherche en permettant à l'imagerie pathologique de devenir une source de données pour l'IA de pointe.
La pathologie numérique de diapositives entières est représentée sous la forme d'une collection d'images. Les plus volumineux d'entre eux peuvent atteindre plusieurs gigaoctets. DICOM est la norme interopérable pour la pathologie numérique. Elle permet de stocker efficacement les images de lames entières et les métadonnées associées, et de les référencer à partir des dossiers médicaux électroniques (par exemple, FHIR) et accessibles via des API hautes performances et neutres vis-à-vis des fournisseurs.
La représentation DICOM pour la pathologie numérique a été conçue pour prendre en charge les cas d'utilisation interactifs à hautes performances qui nécessitent la possibilité de faire rapidement des panoramiques et des zooms sur des images de plusieurs gigapixels. DICOM représente la pathologie numérique de diapositives entières sous la forme d'une pyramide d'images. Les niveaux de la pyramide correspondent aux agrandissements de l'imagerie de lame entière. L'imagerie représentée dans un niveau de pyramide est stockée sous la forme d'une collection d'images plus petites, appelées "frames". La norme définit les API qui permettent le stockage d'images, la recherche (découverte des images disponibles), la récupération des métadonnées et la récupération des images au niveau de la pyramide entière (agrandissement) ou la sélection de sous-régions (frames) au sein d'un niveau de pyramide.
Les API DICOM sont compatibles avec les réponses de métadonnées au format JSON et XML. L'API Cloud Healthcare est également compatible avec l'accès aux métadonnées via BigQuery pour permettre des requêtes relationnelles complexes qui associent les métadonnées DICOM à d'autres sources de données. Les images peuvent être renvoyées telles quelles ou converties (transcodées) dans d'autres formats.
Générer des images DICOM de diapositives entières
Un nombre croissant de scanners de lames de pathologie numérique permettent de générer des images DICOM directement à partir du scanner de lames. Dans de nombreux cas, les fichiers DICOM produits par les scanners de lames peuvent être ingérés directement dans l'API Cloud Healthcare à l'aide des API DICOM DICOMweb ou DIMSE. Si les scanners de lames produisant des fichiers DICOM ne sont pas connectés à un système d'information de laboratoire (LIS), il peut être nécessaire d'augmenter les métadonnées non pixelisées dans DICOM pour ajouter (par exemple, le patient) ou modifier (par exemple, Study Instance UID) avant de l'utiliser dans un PACS d'imagerie clinique.
Historiquement, les scanners de lames ont généré des images dans des formats propriétaires. Le pipeline de transformation peut être utilisé pour transformer les formats compatibles OpenSlide en DICOM, fusionner des métadonnées personnalisées avec le format DICOM généré et ingérer le format DICOM généré directement dans l'API Cloud Healthcare. Cette solution a été utilisée pour prendre en charge la transformation d'archives multipetabytes au format DICOM.
Voici quelques outils qui peuvent être utilisés pour convertir des images de pathologie numérique au format DICOM :
- Pipeline de transformation Google Open Source
- Outil de ligne de commande "Dicomizer"
- Kit DICOM Java PixelMed ™
Les instances DICOM peuvent être importées de manière programmatique dans l'API Cloud Healthcare à l'aide de DICOMweb, DIMSE et de Cloud Storage.
Niveaux de stockage d'images
L'API Cloud Healthcare est compatible avec le tiering du stockage au niveau d'une instance DICOM. Pour l'imagerie de lames entières, cela signifie que chaque niveau de zoom d'une pyramide d'images de pathologie numérique peut être stocké au niveau qui correspond le mieux à son utilisation prévue. Le niveau de stockage d'une instance DICOM affecte le coût du stockage, de la récupération et, dans certains cas, de la suppression des données. La hiérarchisation du stockage n'a aucune incidence sur les performances d'accès aux données. Par défaut, toutes les instances DICOM sont stockées au niveau de stockage standard. L'API Cloud Healthcare fournit une API permettant d'afficher et de modifier la classe de stockage des instances DICOM. De plus, une solution de gestion du cycle de vie des images (ILM) peut être utilisée pour automatiser le déplacement des instances DICOM entre les niveaux de stockage en fonction d'heuristiques. La solution peut automatiser la transition d'une instance DICOM vers des niveaux de stockage en fonction de sa taille, de son ancienneté et de ses modèles d'accès.
REMARQUE : Le stockage d'archives augmente le coût de récupération des données de pixels. Les frais de récupération de données sont facturés en fonction de la taille des données récupérées, et non de la taille des données stockées. Pour l'imagerie de lames entières, il s'agit d'une distinction importante, car les données de pixels peuvent être récupérées à l'aide des API au niveau du frame et de l'instance. La récupération d'images d'archives à l'aide des API Frame peut être particulièrement avantageuse en termes de coûts lorsqu'un sous-ensemble des frames d'une instance est requis. En effet, les frais de récupération de données sont calculés en fonction de la taille des données renvoyées et non de la taille de l'instance stockée.
Visualisation interactive
L'API Cloud Healthcare peut être utilisée pour prendre en charge la visualisation interactive d'images de diapositives entières pour des applications allant des lecteurs Web sans empreinte (JavaScript) aux applications clientes autonomes. Les visionneuses Open Source suivantes ont été testées et sont compatibles avec l'API Cloud Healthcare :
Lecteur Google Open Source : lecteur de pathologie numérique Open Source et sans empreinte créé par Google Research.
Slim (MGH) : visionneuse de pathologie numérique Open Source à empreinte nulle compatible avec NIH Imaging Data Commons.
QuPath : application de bureau Open Source.
Améliorer les performances des visualisations interactives
Le proxy DICOM pour la pathologie numérique est une solution Google Research que vous pouvez utiliser pour améliorer les performances de diffusion des frames pour les applications interactives d'imagerie de lames entières. Une fois déployé, le proxy DICOM de pathologie numérique encapsule l'API Cloud Healthcare et effectue une mise en cache des frames juste à temps pour diffuser de préférence les images de frames à partir d'un cache Memorystore pour Redis en mémoire.
Normalisation des couleurs des images de diapositives entières
La norme DICOM exige que les images WSI contiennent un profil colorimétrique ICC définissant l'espace colorimétrique du scanner de lames qui a acquis les images. Cet espace colorimétrique peut différer sensiblement de celui utilisé par les écrans ou d'autres scanners de diapositives. Si elles sont visualisées sans le profil ICC intégré, la couleur des images apparaît souvent beaucoup plus ou beaucoup moins saturée que prévu. L'API Cloud Healthcare fournit des API permettant de récupérer le profil ICC intégré à une instance DICOM et de transformer les images récupérées en un espace colorimétrique de référence.
Vous pouvez récupérer le profil ICC intégré dans une instance DICOM à l'aide de l'API de données groupées ou de l'API de récupération d'instance. Vous pouvez ensuite transformer les images récupérées dans l'espace colorimétrique du scanner de lames à l'aide de bibliothèques telles que Little-CMS(écrite en C++) et Pillow (écrite en Python).
La bibliothèque Python EZ-WSI DICOMweb est compatible avec la transformation des profils ICC dans le cadre de ses API de récupération d'images et de génération d'intégrations de machine learning.
Machine learning
Path Foundation est un modèle de fondation développé par Google Research pour accélérer le développement du machine learning (ML) dans la pathologie numérique.
Le modèle convertit un patch (sous-région) d'imagerie pathologique en un embedding, qui est une liste de nombres à virgule flottante. Cet embedding sert de représentation de l'image apprise par la machine. L'utilisation d'embeddings d'images comme données d'entrée peut aider à réduire la quantité totale de données et de ressources de calcul nécessaires au développement de modèles de ML efficaces.
Vous pouvez déployer Path Foundation sur Google Cloud à partir de Model Garden. Il est également disponible en Open Source avec des poids ouverts sur Hugging Face.
Pour faciliter la génération d'embeddings, la bibliothèque Python Open Source EZ-WSI DICOMweb inclut des interfaces (consultez le notebook Colab "Guide de démarrage pour générer des embeddings de pathologie") qui simplifient la transformation des images stockées dans l'API Cloud Healthcare en embeddings. Pour savoir comment utiliser EZ-WSI DICOMweb et Pathology Foundations afin d'entraîner un classificateur linéaire à partir d'images DICOM de diapositives entières, consultez le notebook Colab "Train a Digital Pathology Linear Classifier From Images Stored on DICOM".
Récupérer les métadonnées et l'imagerie pixel de manière programmatique
Cette section décrit les méthodes permettant de récupérer les métadonnées et l'imagerie de pathologie numérique à partir de l'API Cloud Healthcare.
Modèle d'informations DICOM
DICOM utilise trois identifiants uniques (UID) pour identifier de manière unique les images :
- UID de l'instance d'étude : identifie toutes les images acquises ou générées à partir d'un seul examen du patient.
- UID de l'instance de série : identifie chaque acquisition d'image médicale au cours de cet examen (par exemple, un scan unique d'une lame pathologique).
- UID d'instance SOP : identifie chaque image acquise ou générée dans le cadre de cette acquisition.
Par exemple, les scanners de lames génèrent souvent plusieurs images pour capturer une lame de verre complète. Ces images peuvent inclure :
- Zone tissulaire imagée à différents grossissements.
- Libellé de la diapositive.
- Image de la diapositive entière.
- Données décrivant l'opération d'analyse des diapositives.
Lister les séries DICOM de pathologie numérique
Pour identifier les images de microscopie de lames, recherchez les séries DICOM dont le tag Modality (0008,0060) est défini sur SM
. Vous pouvez utiliser la méthode dicomStores.searchForSeries
pour cette recherche.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du store DICOM
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/series?Modality=SM"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/series?Modality=SM" | Select-Object -Expand Content
Explorateur d'API
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Exécuter.
Vous devriez recevoir une réponse JSON de ce type :
Récupérer les métadonnées DICOM de pathologie numérique
Une série DICOM pour l'imagerie de lames entières contient généralement plusieurs instances. Ces instances DICOM peuvent représenter différents niveaux de la pyramide d'images ou des régions supplémentaires de la lame imagée.
Pour afficher les métadonnées d'une instance dans l'étude, appelez la méthode dicomStores.searchForInstances
:
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- STUDY_INSTANCE_UID : identifiant unique (UID) de l'instance dans l'étude
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID" | Select-Object -Expand Content
Explorateur d'API
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Exécuter.
Vous devriez recevoir une réponse JSON de ce type :
Récupérer les données de pixels des images de diapositives entières
Vous pouvez récupérer par programmation les données de pixels d'imagerie de diapositives entières à l'aide de DICOMweb. L'API Cloud Healthcare permet également la récupération via un adaptateur DICOM utilisant les protocoles DIMSE.
La plupart des images de diapositives entières sont des images multiframes. Pour ce faire, l'API Cloud Healthcare fournit un accès direct aux données de pixels à l'aide des API de frame DICOM et de frame rendu.
Vous pouvez également récupérer les données de pixel indirectement en récupérant une instance DICOM entière, puis en décodant de manière programmatique les frames encodés de cette instance.
Considérations sur les performances pour la récupération des frames :
- La récupération d'une instance entière est généralement plus rapide par frame que la récupération par lot.
- La récupération d'images par lot est généralement plus rapide que la récupération d'images individuelles.
EZ-WSI DICOMweb
EZ-WSI DICOMweb est une bibliothèque Python Open Source. Il simplifie la récupération des données de pixels de pathologie numérique à partir de l'API Cloud Healthcare en faisant abstraction des appels DICOMweb sous-jacents. La bibliothèque peut aider à accélérer la récupération des frames dans de nombreux cas d'utilisation en convertissant les requêtes d'images série en requêtes par lot. La récupération par lot des données de frame réduit souvent le temps total et le quota de datastore DICOM requis.
Un notebook Colab présentant la bibliothèque est disponible.
API de récupération d'instances DICOMweb
L'API DICOMweb Instance Retrieval renvoie une instance DICOM binaire. Cette instance contient toutes les métadonnées et les données de pixels qui y sont stockées.
Vous pouvez décoder les données binaires renvoyées à l'aide de différentes bibliothèques, telles que :
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- STUDY_INSTANCE_UID : identifiant unique de l'instance dans l'étude
- SERIES_INSTANCE_UID : identifiant unique de l'instance de série
- INSTANCE_UID : identifiant unique de l'instance
- OUTPUT_FILE : fichier dans lequel écrire l'instance DICOM.
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/dicom" \
--output OUTPUT_FILE \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "application/dicom" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFile OUTPUT_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"
Explorateur d'API
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).
Le fichier OUTPUT_FILE
doit être rempli.
API DICOMweb Frame
L'API DICOMweb Frame permet de récupérer un ou plusieurs cadres à partir d'une instance DICOM. Les données de pixels récupérées à l'aide de l'API peuvent être transcodées dans des formats autres que ceux stockés de manière native dans le magasin DICOM.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- STUDY_INSTANCE_UID : identifiant unique de l'instance dans l'étude
- SERIES_INSTANCE_UID : identifiant unique de l'instance de série
- INSTANCE_UID : identifiant unique de l'instance
- FRAMES : numéros de frame pour récupérer les données de pixels
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: multipart/related; type="image/jpeg"; transfer-syntax=1.2.840.10008.1.2.4.50" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAMES"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "multipart/related; type="image/jpeg"; transfer-syntax=1.2.840.10008.1.2.4.50" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAMES" | Select-Object -Expand Content
Explorateur d'API
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).
API de rendu de frame DICOMweb
L'API DICOMweb rendered frame permet la conversion côté serveur d'un frame dans un format d'image standard (par exemple, JPEG et PNG).
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- STUDY_INSTANCE_UID : identifiant unique de l'instance dans l'étude
- SERIES_INSTANCE_UID : identifiant unique de l'instance de série
- INSTANCE_UID : identifiant unique de l'instance
- FRAME : numéro de frame pour récupérer les données de pixels
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: image/png" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAME/rendered"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "image/png" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAME/rendered" | Select-Object -Expand Content
Explorateur d'API
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).
Utiliser la récupération de données groupées pour récupérer un profil ICC intégré dans une instance DICOM
Vous pouvez utiliser DICOMweb retrieve bulkdata pour récupérer directement les octets de profil ICC (International Color Consortium) intégrés dans une instance DICOM.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- STUDY_INSTANCE_UID : identifiant unique de l'instance dans l'étude
- SERIES_INSTANCE_UID : identifiant unique de l'instance de série
- INSTANCE_UID : identifiant unique de l'instance
- OUTPUT_FILE : fichier dans lequel écrire l'instance de profil ICC.
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/octet-stream; transfer-syntax=*" \
--output OUTPUT_FILE \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/bulkdata/00480105/0/00282000"
PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "application/octet-stream; transfer-syntax=*" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFile OUTPUT_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/bulkdata/00480105/0/00282000"
Explorateur d'API
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).
Le fichier OUTPUT_FILE
doit être rempli.