[Dcmlib] Pb qualité image via ITK...

Mathieu Malaterre mathieu.malaterre at kitware.com
Fri Apr 8 16:27:16 CEST 2005


Fabrice,

	Je vois un peu ton probleme et c'est celui de ITK en general il faut 
que tu sache ton pixel type avant de lire l'image ! Je crois me souvenir 
que ITK a un GDCMafficheInfo (dans le rep Exemple/IO) ou qlq chose du 
genre (a verifier).  Dans ce cas voila ce qu'il faut faire:

 > 0028,0101,Bits Stored=12

Conclusion: tu aura bien a faire a des donnes codee sur 12bits, 
malheureusement ce n'existe pas. Dans ce cas il faut bien instancier ton 
image ITK sur une donnee sizeof() > 12.
Maitenant le dilemne est de savoir si c'est unsigned ou signed ?


 > 0028,0103,Pixel Representation=0

Conclusion: tes donnees sont signee (si Pixel Representation=1 -> unsigned).

HTH
Mathieu

Fabrice BERGER wrote:
> Bonjour,
> 
> J’utilise depuis peu et pour un besoin ponctuel ITK, et par son
> intermédiaire GDCM.
> Je ne suis pas du tout spécialiste en images DICOM (j’apprends sur le tas,
> en l’occurrence…)
> 
> Je cherche à afficher une image DICOM dans un produit de CAO. J’ai donc
> besoin de reprendre les pixels avec les bonnes valeurs.
> Mes images de tests sont codées comme ça (merci ezDicom !!) :
> 0028,0000,Image Presentation Group Length=180
> 0028,0002,Samples Per Pixel=1
> 0028,0004,Photometric Interpretation=MONOCHROME2
> 0028,0010,Rows=512
> 0028,0011,Columns=512
> 0028,0030,Pixel Spacing=0.390625 0.390625 
> 0028,0100,Bits Allocated=16
> 0028,0101,Bits Stored=12
> 0028,0102,High Bit=11
> 0028,0103,Pixel Representation=0
> 0028,1050,Window Center=00700 00700 
> 0028,1051,Window Width=02700 02700 
> 0028,1052,Rescale Intercept=-1000 
> 0028,1053,Rescale Slope=1 
> 
> J’ai pu constater dans plusieurs viewer DICOM (ezDicom et DICOMscope
> notamment) que l’image est bonne (en tout cas, ils l’affichent avec des gris
> bien choisis, sans intervention de l’utilisateur)
> 
> Sachant que je déclare les types suivants :
> typedef itk::Image<PixelType, 2 > ImageType;
> typedef itk::ImageFileReader<ImageType> ReaderType;
> 
> Si je déclare un PixelType de type unsigned char, la conversion semble
> catastrophique, les niveaux de gris ne correspondent à rien : on dirait
> qu’il fait un modulo 256 sur la valeur en unsigned short.
> Si je déclare un PixelType de type unsigned short, c’est mieux, mais la
> plage n’est pas bonne (j’utilise environ 2000 valeurs de gris sur les 65535
> dispos, autant dire rien).
> Dans ce dernier cas, j’ai constaté que la fonction RescaleFunction() dans
> itkGDCMImageIO.cxx avait un comportement bizarre. En effet, j’ai un slope à
> 1.0 (ça me semble ok) et Intercept = -1000.0 (c’est courant des valeurs
> négatives ?), et la valeur de mes pixels avant rescale, et en unsigned
> short, oscille entre 0 et 3000… Bref, le resampling en vient souvent à
> convertir un nombre négatif en en unsigned short… et je me retrouve avec du
> quasi noir et du quasi blanc à l’affichage. Visuellement, on ne voit que du
> noir ou du blanc, même en zoomant sur l’image.
> 
> Je suppose que j’ai mal fait quelque chose, mais je ne voit pas quoi...
> 
> Si quelqu'un a une idée qui me permette de progresser, je le remercie par
> avance.
> 
> Fabrice Berger
> 
> 
> _______________________________________________
> Dcmlib mailing list
> Dcmlib at creatis.insa-lyon.fr
> http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
> 




More information about the Dcmlib mailing list