-1
votes

Reconstruction d'image multiplanaire DICOM

Mon problème est que je dois développer un programme capable d'ouvrir les images DICOM CT en C # (sans aucune bibliothèque) et que je devrais également traiter les images axiales, coronales et sagittales. Je les ai compris, mais la résolution d'image coronale et sagittale n'est pas correcte. J'ai vérifié un million de forums et de questions, mais je n'ai tout simplement pas trouvé la bonne façon de trouver les résolutions coronales et sagittales. Si quelqu'un pouvait me donner une formule ou quelque chose, je serais très heureux.

D'après ce que j'ai vu, voici les informations nécessaires pour obtenir la résolution:

  • Largeur et hauteur: 512x512
  • Nombre d'images: 518
  • (0018, 0050) Épaisseur de tranche: 1,25
  • (0018, 0080) Espacement entre les tranches: 0,625
  • (0028, 0030) Espacement des pixels: 0.845703 / 0.845703

Mais je calcule l'espacement entre les tranches à partir de la position de l'image (0020, 0032) (patient), qui est de 0,625. Et je ne sais pas vraiment quel est le lien entre ces informations, quelle est la formule pour obtenir la bonne résolution. Et ma question exacte est: quelle est la résolution des images coronales et sagittales?

Si vous avez besoin de plus d'informations sur les tranches, faites le moi savoir. Merci d'avance :)

EDIT: J'ai vérifié avec RadiAnt DICOM Viewer que la résolution coronale / sagittale devrait être de 512x383. Si quelqu'un connaît la formule pour laquelle le résultat est 383. Veuillez me le faire savoir. En attendant, je vais essayer de me comprendre.


0 commentaires

3 Réponses :


1
votes

Je suppose:

  1. "Nombre de séries": 518 doit se lire "Nombre d' images ": 518?
  2. Espacement entre les tranches = longueur du vecteur de différence de la position de l'image Patient entre deux tranches adjacentes (la valeur dans l'en-tête DICOM doit être identique à la valeur calculée. Sinon, je recommanderais d'utiliser la valeur calculée).

Dans ce cas:

Résolution des silces sagittaux = Résolution des tranches coronales = 512 tranches, chacune avec 512x518 pixels (Sagittal: hauteur * nombre de tranches, Coronal: largeur * nombre de tranches)

Espacement des pixels sagittal = espacement des pixels coronale = 0,845703 * 0,625.

Distance de coupe sagittale = distance de coupe coronale = 0,845703 mm

Remarque: l' utilisation d'une boîte à outils DICOM pour lire les tranches serait fortement recommandée. Le fait que vous puissiez lire cet examen en particulier ne vous dit pas que vous êtes capable de lire n'importe quel examen. Il existe de nombreux pièges dans les règles d'encodage de bas niveau de DICOM.


2 commentaires

Oui, 518 est le nombre d'images. J'ai essayé le 512x518, mais l'image est étirée, car les tranches se chevauchent (l'espacement entre les tranches est inférieur à l'épaisseur de la tranche). Et que dois-je faire avec le 0.845703 * 0.625? Si je le multiplie par 518, le résultat est une image assez compressée. : /


Si l'espacement entre les tranches est inférieur à l'épaisseur de la tranche, les images ne sont pas optimales pour la reconstruction 3D. Cependant, ma formule est toujours correcte - en 3D, c'est la position qui compte. À propos de l'espacement des pixels: il est asymétrique: direction x: 0,84 ... direction y: 0,625.



0
votes

Je pense avoir réussi à trouver une solution proche. 1-2 pixels de la version RadiAnt, mais c'est le meilleur que je puisse obtenir:

Hauteur d'image coronale / Largeur d'image sagittale: nombre d'images * espacement entre les tranches / espacement des pixels

Par exemple: 518 * 0,625 / 0,845703 = 382

Résolution d'image RadiAnt: 512x383. Ma résolution d'image: 512x382

Cette solution fonctionne pour certaines études avec lesquelles j'ai testé, mais pas pour une ou deux sur Internet. Comme l'a dit kritzel_sw , cela peut varier. J'espère que celui-ci aidera aussi un peu quelqu'un d'autre.


2 commentaires

Cela ne me semble pas logique. Pourquoi diviserait-on la résolution dans la direction Z (distance des tranches) par la résolution des tranches axiales? Ils ne sont absolument pas liés. La hauteur en pixels d'une tranche sagittale / coronale est clairement de 518 * 0,625.


Je me trompe probablement, mais si je multiplie 518 par 0,625, j'obtiendrai effectivement la direction Z, mais en mm, et j'en ai besoin en pixels, donc je l'ai convertie en pixels. La distance entre deux tranches est de 0,625 et la distance entre deux pixels est de 0,845703, elles peuvent donc être utilisées comme rapport entre mm et pixel (pour mesurer la distance). Je divise simplement le 518 * 0,625 par 0,845703 et j'obtiens la longueur des directions Z en pixels. Pour moi, cela a du sens, et je l'ai vérifié avec un programme conçu pour le traitement d'images DICOM et cela prouve fortement mon idée.



2
votes

il n'y a pas de réponse claire pour la résolution. N'oubliez pas que dans DICOM vous avez le PixelSpacing , que vous n'avez pas dans les "images normales".

une image typique doit toujours avoir une grille équidistante pour être affichée correctement à l'écran. Mais dans dicom, vous pouvez avoir une image avec 100x100 pixels et pixels espacés 1.0 \ 1.0, et vous pouvez avoir une image avec 100x200 pixels et pixels espacés 1.0 \ 0.5. Une visionneuse DICOM valide afficherait les deux images de la même manière. la deuxième image a plus de pixels, mais ils sont plus petits. résultant dans le même affichage que la première image.

Il est donc évident que la hauteur de la pile d'images est de 518 * 0,625 = 323,75 mm. Vous avez donc de nombreuses possibilités:

  • vous pouvez créer une image de 512x324 , définir l'espacement des pixels sur 0.845703 \ 1.0 et calculer (interpoler) les valeurs z.
  • La meilleure solution serait de prendre les données de pixels telles quelles, sans aucune interpolation, donc sans aucune perte de données. Ensuite, vous avez une grille de 512x518 pixels. l'espacement des pixels serait de 0,845703 \ 0,625 . C'est parce que l'espacement dans la direction x provient de l'espacement des pixels dans les données d'origine et l'espacement dans la direction y est la distance entre les tranches.
  • Mais: il existe des visionneuses DICOM qui ne traitent pas correctement les pixels non équidistants. si vous exportez l'image en jpeg et laissez la fenêtre / navigateur afficher l'image, vous avez besoin de pixels équidistants. Par conséquent, vous devez choisir un certain nombre de pixels, de sorte que la hauteur totale soit de 323,75 mm lorsque vous avez un espacement de pixels de 0,845703 mm. Il s'agit de 323,75 / 0,845703 = 382 817 ~ 383 pixels. Donc, si vous générez une image de 512x383 pixels, où vous devez effectuer une interpolation des tranches, vous pouvez créer une image avec un espacement de pixels équidistant de 0,845703 \ 0,845703 .

1 commentaires

Ouais !! Je ne suis pas fou après tout! Je savais que cela avait du sens. Merci pour l'explication professionnelle :) Marqué comme réponse.