format svs pour le traitement d'images médicales

Qu'est-ce que le format de données SVS ?

TIFF (Tagged Image File Format) est un format de fichier pour stocker des images. Les fichiers TIFF prennent en charge plusieurs "pages" ou images et une variété de formats de stockage et de méthodes de compression. L'un de ces formats de stockage est appelé format de stockage Tiled TIFF.

        TIFF en mosaïque : une image TIFF en mosaïque se compose de plusieurs mosaïques carrées de la même taille (généralement 256 × 256 pixels). L'avantage du format Tiled est qu'il peut charger et afficher efficacement de très grandes images en ne chargeant que les images qui sont absolument nécessaires, plutôt qu'en chargeant une seule grande (énorme) image monolithique.

        SVS : un fichier SVS est une image TIFF en mosaïque qui comporte des pages supplémentaires (images) qui incluent une étiquette de diapositive, une image de présentation et quelques copies plus petites et à l'échelle de la diapositive numérisée.

Nous utilisons le terme "Whole Scan Image" (WSI) pour désigner tout format d'image contenant une région d'intérêt (ROI) numérisée à partir d'une lame de microscope. Les images de numérisation complète sont généralement très grandes. Les pixels de l'image sont d'environ 100 000 × 100 000 et la taille de l'image est généralement comprise entre 60 M et 1,5 G. Ces fichiers sont trop volumineux pour tenir dans la mémoire de la plupart des ordinateurs. Par conséquent, les formats d'image traditionnels tels que jpg, png et bmp ne peuvent pas être utilisés pour stocker de telles images. Le fichier TIFF en mosaïque propose de diviser ces images en petites "tuiles" carrées.

Il y a des images en ligne dans la démo OpenSlide .

Trois formats de fichiers différents peuvent être créés pour les images numérisées entières (WSI).

  • Zoom profond
  • TIFF en mosaïque (SVS)
  • Zoom facile (SZI)

  Convertir SVS au format commun

1. Échec de la tentative OpenCV : taille du fichier svs hors limites ×

“ cv2.error: OpenCV(3.4.2) /io/opencv/modules/imgcodecs/src/loadsave.cpp:74: error: (-215:Assertion failed) pixels <= (1<<30) in function 'validateInputImageSize' ”,

 2. OpenSlide(openslide-python) : https://openslide.org/
OpenSlide est une bibliothèque C open source avec une interface python, qui est très facile à utiliser. Pour l'utilisation spécifique d'openslide, vous pouvez utiliser Baidu vous-même, voici un bon lien : https://blog.csdn.net/weixin_41787032/article/details/79817926

# 将.svs转化成.tif
import openslide
import numpy as np
import scipy.misc
 
test = openslide.open_slide('test.svs')
 
img = np.array(test.read_region((0, 0), 0, test.dimensions))
scipy.misc.imsave('test.tif', img)

 Inconvénients : Lors de l'enregistrement de l'intégralité de l'image haute résolution, la taille de l'image va augmenter par multiples (elle est stockée au format tiff, qui est environ dix fois plus grande, mais si elle est au format jpg, l'image sera effectivement petite, mais c'est une compression avec perte, considérez que PNG est aussi un bon choix), car les dimensions sous le niveau = 0 sont prises, de sorte que la résolution maximale de l'image peut être maintenue, mais en même temps, si l'image est plus grande ou les performances de l'ordinateur sont légèrement inférieures, l'ordinateur peut être bloqué ou signaler une erreur MemoryError.

3. libvips(pyvips) : http://jcupitt.github.io/libvips/API/current/Examples.md.html
libvips est aussi une bibliothèque C, mais il a aussi une interface python appelée pyvips, veuillez vous référer à l'officiel documentation d'utilisation : https://libvips.github.io/pyvips/.

Voici le code :

import pyvips
 
img = pyvips.Image.new_from_file('test.svs', access='sequential')
img.write_to_file('test.tif')

        Avantages : Lecture directe puis stockage. Il n'y aura pas d'échec de stockage, c'est-à-dire qu'il n'y aura pas de phénomène tel qu'une erreur de mémoire qui entraînera un échec de stockage.

        Inconvénient : La taille de l'image après stockage devient encore très grande.

 Affichage de SVS

1. Utilisez la bibliothèque pyvips pour convertir le fichier svs au format de fichier dzi et enregistrez-le :

import pyvips
 
img = pyvips.Image.new_from_file('test.svs', access='sequential')
img.dzsave('test')

Après avoir exécuté le code ci-dessus, deux fichiers seront générés, à savoir : test.dzi, test_files, le premier est un fichier unique, le second est un dossier, qui stocke des tranches de fichiers svs à différentes résolutions, et les fichiers dans test.dzi Le contenu est le suivant :

<?xml version="1.0" encoding="UTF-8"?>
<Image xmlns="http://schemas.microsoft.com/deepzoom/2008"
  Format="jpeg"
  Overlap="1"
  TileSize="254"
  >
  <Size 
    Height="32893"
    Width="46000"
  />
</Image>

2. Téléchargez la bibliothèque OpenSeaDragon et générez des fichiers html

① Pour afficher le fichier dzi, il existe une bibliothèque java appelée OpenSeaDragon (https://openseadragon.github.io/examples/tilesource-dzi/), téléchargez OpenSeaDragon et décompressez-la dans n'importe quel dossier local que vous aimez, renommé en : openseadragon.

②Un fichier html est également nécessaire (source : https://blog.csdn.net/qianqianyixiao1/article/details/50420398), nommé ici test.html, le contenu est le suivant :

 
<!DOCTYPE html>
<html lang='en'>
 
<head>
    <meta charset='UTF-8'>
    <title>OpenSeadragon_Demo0</title>
    <script src='../openseadragon.min.js'></script>
</head>
 
<body>
    <div id='openSeadragon1' style='width:1850px; height:960px;'></div>
</body>
 
 
<script type='text/javascript'>
    OpenSeadragon({
        id: 'openSeadragon1',
        prefixUrl: '../images/',
        tileSources: {
            Image: {
                xmlns: 'http://schemas.microsoft.com/deepzoom/2008',
                Url: './test_files/',
                Overlap: '1',
                TileSize: '254',
                Format: 'jpeg',
                Size: {
                    Height: '32893',
                    Width: '46000'
                }
            }
        }
    });
</script>
 
</html>

N'oubliez pas de remplacer les données à l'intérieur par les données du fichier dzi, puis vous pourrez supprimer le fichier test.dzi.

3. Mettez les dossiers test.html et test_files dans le même répertoire (ici mon répertoire s'appelle : zoomFiles), puis mettez-les dans le dossier openseadragon, puis vous pouvez cliquer sur le fichier test.html, et cliquer sur la page web le résultat correspondant peut être affiché.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45958695/article/details/127769773
conseillé
Classement