[Dcmlib] 16 bits monochrome vs 8Bits RGB

Jean-Pierre Roux jpr at creatis.insa-lyon.fr
Tue May 17 17:19:23 CEST 2005


olivier.stern at swing.be wrote:

>
> Bonjour,
>
> Voilà un petit déjà que j'essaye de convertir une image 16bits 
> monochrome vers une RGB 3*8bits, et j'y arrive lentement, mais 
> surement. Mais voilà, je parcourais les différentes classes de gdcm 
> tout à l'heure et je me suis apperçu qu'il existait une classe appelée 
> pixelreadconvert. 


Oops!
J'avais signalé a mes petits camarades que, pixelreadconvert etant 
'publique', un jour ou l'autre qq'un esaierait de s'en servir ...
C'est une classe *tres interne*, qui n'est visible a l'utilisateur qu'a 
la suite d'une 'petite maladresse' de notre part.
Il ne faut surtout pas l'utiliser, elle ne fait pas *du tout* ce que qui 
que ce soit peut attendre d'elle.

La maniere dont tu t'y prends pour lire les pixels est la bonne.
La seule chose sur laquelle il est possible de jouer, c'est le coef de 
la regle de 3.
Soit (Max-min), soit 16 (car ton image est codée sur 12 bits)
Pourrais-tu nous envoyer une image monochrome 16 bits + image RGB 3*8 
bits + programme C++ qui produit ca.
JPRx

> Est ce que je pourrais arriver au même résultat par ce biais ? Voici 
> ce que je fais mais ça ne amrche pas trop...
>
> Merci,
> Olivier Stern
>
> gdcm::FileHelper *fh = new gdcm::FileHelper( filename );
> gdcm::PixelReadConvert *prc = new gdcm::PixelReadConvert();
> prc->GrabInformationsFromFile( fh->GetFile() );
> prc->ReadAndDecompressPixelData( fh->GetFile()->OpenFile() );
> prc->BuildRGBImage();
> uint8_t * imageDataRGB = prc->GetRGB();
> size_t dataSize = prc->GetRGBSize();
>
> fh->GetFile()->InsertValEntry( \"8\", 0x0028, 0x0100); // Bits Allocated
> fh->GetFile()->InsertValEntry( \"8\", 0x0028, 0x0101); // Bits Stored
> fh->GetFile()->InsertValEntry( \"7\", 0x0028, 0x0102); // High Bit
> //fh->GetFile()->InsertValEntry( \"0\", 0x0028, 0x0103); // Pixel 
> Representation
>
> // Samples Per Pixel
>
> fh->GetFile()->InsertValEntry( \"3 \" ,0x0028,0x0002);
> fh->GetFile()->InsertValEntry( \"RGB \",0x0028,0x0004 ); // 
> Photometric Interpretation
> fh->GetFile()->InsertValEntry( \"1 \",0x0028,0x0006 ); // Planar 
> Configuration
>
> // TODO : free existing PixelData first !
>
> fh->SetImageData(imageDataRGB, dataSize);
>
>------------------------------------------------------------------------
>
>_______________________________________________
>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