2011-01-31 2 views
1

J'ai une image DICOM que je suis en train de lire en utilisant C# et en le convertissant en bitmap 16 bits. L'image bitmap est créée mais l'image possède des superpositions DICOM. Je veux graver la superposition dans l'image bitmap en créant le bitmap dicom final. Je suis incapable de faire ça. Toute aide? Une façon serait de créer une image bitmap de données de superposition et fusionner les 2 bitmaps, mais je ne peux pas obtenir les données de superposition en tant que bitmap également. J'ai capturé les données de superposition binaire mais comment graver dans un bitmap?DICOM et DICOM superposition question

Merci

+0

Ce que vous essayez d'accomplir n'est pas très clair: vous avez besoin d'un fichier DICOM avec superposition, ou d'un bitmap prêt à afficher avec superposition? – ruslik

+0

J'ai besoin de l'image bitmap du fichier DICOM avec la superposition – user596268

+0

Donc, vous devez savoir comment décompresser le OverlayDaya en octets utilisables pour un ect Bitmap .. ?? – zezba9000

Répondre

2

La superposition DICOM est tout simplement un masque bitmap. Lors du rendu de l'image, je suggère simplement de traverser les pixels, et dans le cas où le réglage du pixel en blanc. Dans le cas des images en niveaux de gris, vous devez vérifier l'interprétation photométrique pour voir s'il s'agit de MONOCHROME1 ou de MONOCHROME2. Vous devrez ensuite vérifier les bits alloués pour voir quelle est la valeur de pixel maximale et forcer les valeurs de pixels dont la superposition est définie sur cette valeur dans le cas d'une image MONOCHROME1. Dans le cas d'une image MONOCHROME2, vous devez définir les pixels avec l'incrustation activée sur la valeur de pixel minimale.

Dans le cas d'une image en couleur, vous pouvez remplacer le pixel par une couleur spécifique ou le cas échéant par le blanc pour afficher le fond de page.

+0

Merci Steve d'avoir pris le temps de répondre à ma question – user596268

4

Il existe deux types de superpositions:

1) rémanentes: est l'original. Il utilise des bits de pixeldata monochrome plus élevés (qui sont en dehors de la plage de pixels, par exemple, quand BitsAllocated est 16 et BitsStored est 12, il y a 4 bits inutilisés par pixel (bits 12..15), qui pourraient être utilisés pour superposition Je ne suis pas sûr de savoir comment cela est fait pour les images signées
Notez qu'il n'y a pas de balise qui spécifie si une image a une telle superposition (il y a une balise appelée Burned In Annnotation (0028,0301), mais cela signifie quelque chose

2) Module de superposition: Une plage de points (groupe 0x600xx) est réservée aux recouvrements. Chaque groupe contient plusieurs balises avec un bitmap avec 1 bit par pixel, où 1 signifie la présence de superposition.
Notez que ce n'est pas un bitmap GDI standard, les lignes ne sont pas alignées sur la limite DWORD! (et je ne suis pas sûr si elle utilise la même endianness bits.)

Une image DICOM peut avoir plusieurs superpositions (jusqu'à 16?). Voir la partie 3 du standart pour les spécifications exactes.

+0

Merci ruslik d'avoir pris le temps de répondre à ma question. Je veux avoir le (2) un, module de superposition comme je peux voir les étiquettes (0x600xx) dans la visionneuse de Sante DICOM. – user596268

1

Plans de recouvrement est toujours à 1 bit par pixel où Overlay Bits Allocated est égal à 1 et Overlay Bits Position (60XX, 0102) est toujours 0. Les données de superposition à un bit est codé séparément de l'élément et de l'élément Pixel DataOverlay Data (60XX, 3000) est utilisé pour stocker les données. La représentation de la valeur pour l'élément de données Overlay est OW. Cependant, OB peut être utilisé pour un codage VR explicite.

Selon "PS 3.5 of DICOM standard section 8.1.2", les données de recouvrement sont codées comme la concaténation directe des bits d'un plan de recouvrement unique, où le premier bit d'un plan de recouvrement est codé dans le bit le moins significatif, immédiatement suivi par le bit suivant du Overlay Plane dans le bit le plus significatif suivant. Lorsque les données de recouvrement traversent une limite de mot dans le cas OW, ou une limite d'octet dans le cas OB, il doit continuer à être codé, bit le moins significatif au bit le plus significatif, dans le mot suivant, ou octet, respectivement.

L'ordre des octets des mots de 2 octets (VR de OW) est dicté par l'Endianness utilisé dans le codage. Il n'y a donc pas de remplissage à la limite de la ligne et il est codé de gauche à droite et de haut en bas, une ligne à la fois où le bit de superposition 1 est le premier bit du plan de superposition (pixel supérieur gauche).

données Formellement recouvrement a été autorisé à être noyée dans inutilisés bits de Pixel Data (7FE0, 0010) et Overlay Bit Position (60XX, 0102) a été utilisé pour indiquer le bit inutilisé dans les données de pixels dans lequel des données de recouvrement a été stocké. Dans ce type de codage, Overlay Bits Allocated (60XX, 0100) doit avoir la même valeur que Bits Allocated (0028, 0100) attributs de Image Pixel module. La valeur Overlay Bits Allocated supérieure à 1 indique que les données de superposition sont incorporées dans les données de pixel.

Un groupe pair (6000-601F, eeee) est utilisé pour l'encodage des plans de superposition et un jeu de données peut avoir un maximum de 16 superpositions par image.