[Dcmlib] offset

Jean-Pierre ROUX jean-pierre.roux at creatis.insa-lyon.fr
Mon May 16 11:39:44 CEST 2005


At 14:24 +0200 15/05/05, Olivier Stern wrote:
>Bonjour,
>
>
>
>Le seul moyen que j'ai trouvé pour modifier le champ des bits 
>allocated est d'ouvrir un nouveau FileHelper sur le fichier réécrit, 
>de modifier le champ et de réécrire à nouveau. Je ne comprends pas 
>pq je n'arrive pas à modifier le champs à l'étape précédente mais 
>soitŠ Lorsque j'essaye d'ouvrir mon fichier Dicom nouvellement créé 
>(pour rappel un dicom RGB 3*8 bits partant d'un monochrome 16bits) 
>une erreur survient : Offset + image size > file length.

Bon ...
Pour que le fichier écrit soit lisible, il faut qu'on ai passé des 
informations cohérentes avant d'écrire.

Ton fichier initial est monochrome, avec des fixels stockés sur 16 
bits (le fait que seulement 12 soient utilisés est interessant à 
savoir, mais sans interet ici).

Tu devrais repartir du programme initial (celui dans lequel il y 
avait un soucis avec DataSize/2), que je n'ai pas sous les lunettes.
Tu alloues une zone pour recevoir tes pixels RGB 3*8 Bits, de taille 
(DataSize/2)*3.
Tu recherches le minimum et le maximum de ton image 16 Bits.
Puis, pour chaque pixels de l'image 16 Bits, tu fais :

pixelRGB8[3*i] =  (  ( ((uint16_t)pixelMonochrome16)[i]-max ) / (Max - min) )
                   * 256
(c'est ce calacul qui doit etre fait dans CopyRescale)

Le reste etant inchangé.
(affectation de la nouvelle taille des pixels et de leur adresse en mémoire

>
>
>
>Voici les détails de l'image :
>
>
>
>Width : 192
>
>Height : 256
>Offset : 49866
>Bytes/pixel : 3
>File length : 49866
>
>
>
>Alors je cerne très bien le problème mais je ne sais pas du tout 
>comment je modifie l'information avec gdcm. J'ai regardé dans le 
>dictionnaire et j'ai trouvé une valeur de champ d'offset selon l'axe 
>des X, des Y et des Z, est ce là que j dois modifier ?

Sutout pas. ca n'a rien n'a voir avec le pb

>A mon avis mon image originale est monochrome 16bits mais 
>l'information n'est contenue que dans 12 bitsŠ enfin je présume. 
>J'ai regardé dans le fichier TestCopyRescale, mais je n'y ai trouvé 
>aucune information. J'ai regardé dans TestChangeHeader, mais ca 
>prend le header d'une image et va le mettre sur une autre, n'ayant 
>aucune image de référence correspondant à ce que j'ai fait, ça ne m 
>est pas utile

>. De plus le champs changés sont ceux que j'ai déjà modifié (



>bits allocated, bits stored, high bit

Bonne idée.


>et pixel representation).

Ca dit si les pixels sont 'signed' ou 'insigned' .
Il ne faut pas le modifier.

JPRx

>
>
>
>Merci
>
>
>
>            Olivier Stern
>
>
>_______________________________________________
>Dcmlib mailing list
>Dcmlib at creatis.insa-lyon.fr
>http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib

  Jean-Pierre ROUX
  CREATIS - CNRS UMR 5515, INSERM U 630
  Laboratoire de Radiologie Experimentale
  Hopital Cardiologique
  28 Avenue du Doyen LEPINE
  B.P. Lyon-Montchat
  69394 Lyon Cedex 03

  Tel      : (+33) 04 72 35 74 12
  Fax      : (+33) 04 72 68 49 16
  URL      : http://www.creatis.univ-lyon1.fr
  e-mail   : jpr at creatis.univ-lyon1.fr
								   
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 3846 bytes
Desc: not available
URL: <http://www.creatis.insa-lyon.fr/pipermail/dcmlib/attachments/20050516/d44209b9/attachment.bin>


More information about the Dcmlib mailing list