[Dcmlib] FileHelper->GetImageData()
Greg Book
gbook at gbook.org
Mon Sep 5 16:51:51 CEST 2005
So, regardless of whether SamplesPerPixel is 1 or 3, GetImageData()
always returns RGB, RGB, RGB...? So if its a monochrome image, each RGB
set will be R=G=B? and then for palette images, it will be expanded to RGB.
-Greg
Jean-Pierre ROUX wrote:
> At 21:54 -0400 4/09/05, Greg Book wrote:
>
>> Thanks for the info. That function will be very helpful. So, what
>> happens if 'samples per pixel' is not 3? I would assume it's 1 when
>> its a monochrome image?
>
>
> 'Sample Per Pixel' is a mandatory Dicom field.
> It can contain only 1 (monochrome image, or palette color image) or 3
> (RGB or YBR images)
>
>> If thats the case, are monochrome images ever compressed, and if so,
>> how would they be read using gdcm.
>
>
> Any kind of image may be compressed or not.
> gdcm users don't have to worry about compression.
> Just write, as for any image:
>
> gdcm::File *f = new gdcm::File();
> f->SetFileName(yourFileName);
> f->Load(); // Load the header;
>
> if (!f->IsReadable())
> {
> --> stop everything :-(
> }
>
> gdcm::FileHelper *fh = new gdcm::FileHelper(f);
> uint8_t *imageData;
>
> imageData = fh->GetImageData();
>
> The pixels are now loaded in memory, line by line, RGB, RGB, RGB ...,
> if it's a color image.
>
> According to what you found in f, you decide how you must cast.
>
> JP
>
>
>
>
>>
>> -Greg
>>
>>
>> Jean-Pierre ROUX wrote:
>>
>>> At 14:04 -0400 2/09/05, Greg Book wrote:
>>>
>>>> I'm interested in using the GetImageData() function to read my
>>>> files instead of reading them by opening them and reading the
>>>> bytes. Once you've called this function and have an array of
>>>> unsigned integers... how is that array structured?
>>>> Is it one byte for R, G, B? so 3 bytes per pixel? Then I assume
>>>> line breaks occur at pixel (3 byte) boundaries? So to read a
>>>> 100x100pixel image, I'd take the first 300 bytes of the buffer
>>>> returned from GetImageData as the first line of the image, then get
>>>> the next 300 for the next line, and so on?
>>>
>>>
>>>
>>> You're absolutely right.
>>> In Dicom, there are 2 possibilities for RGB images :
>>> - Storing 'Plane R + Plage G + Plane B'
>>> - Storing pixels RGB RGB RGB ...
>>>
>>> We choosed to convert them as RGB RGB RGB ...
>>> (we convert YBR to RGB too).
>>>
>>> Just be sure that field 'Samples per Pixel' value is 3.
>>> JP
>>>
>>>>
>>>> Thanks,
>>>> Greg
>>>> _______________________________________________
>>>> 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
>>>
>
> 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
>
More information about the Dcmlib
mailing list