[vtkusers] A question about DICOM slice number

Mathieu Malaterre mathieu.malaterre at kitware.com
Mon Apr 11 09:00:54 EDT 2005


Another option is to use GDCM:

http://www.creatis.insa-lyon.fr/Public/Gdcm/

It has a nice vtkGdcmReader/vtkGdcmWriter

HTH
Mathieu


Dov Grobgeld wrote:
> This answer may be somewhat out of topic since I am not familiar with 
> the VTK Dicom image reading routines... 
> 
> As I genaral dicom library I would recommend using the DCMTK library.
> For a long time I was using my own library for reading Dicom, but
> lately I have fountd that DCMTK answers all my needs. See:
> 
>     http://dicom.offis.de/dcmtk.php.en
> 
> It is easy integrating this library with VTK by reading the data
> with the library and then inserting it into VTK by the creation
> of a vtkImageData class into which the DCMDTK data is inserted.
> 
> It looks something like:
> 
>     for (int slice_idx=0; slice_idx<num_slices; slice_idx++) {
>         long int val_long;
> 
>         string filename = filename_list[slice_idx];
> 
>         DcmFileFormat dicom_img;
>         OFCondition status = dicom_img.loadFile(filename.c_str());
> 
>         if (!status.good())
>             die("Failed reading %s\n", filename.c_str());
>         DcmDataset *ds = dicom_img.getDataset();
> 
>         ds->findAndGetLongInt(DCM_Columns,      val_long);
>         width = val_long;
>         ds->findAndGetLongInt(DCM_Rows,         val_long);
>         height = val_long;
>         
>         // Allocate the data the first time when we know the
>         // width and height of the data.
>         if (slice_idx==0) {
>             image_data->SetDimensions(width, height, num_slices);
>             image_data->SetScalarType(VTK_UNSIGNED_SHORT);
>             image_data->AllocateScalars();
>             vtk_buf = (unsigned short*)image_data->GetScalarPointer();
>         }
> 
>         const unsigned short *dicom_buf;
>         ds->findAndGetUint16Array(DCM_PixelData, dicom_buf);
> 
>         unsigned short *slice_buf = vtk_buf + slice_idx * width * height;
> 
>         // Copy the data from DcmTK to VTK
>         memcpy(slice_buf, dicom_buf, 2 * width * height);
>     }
> 
> (Note that the example is hardcoded for Gray 16-bit dicom images,
> but you get the idea...)
> 
> Another option is starting from scratch using my Gimp DICOM plugin, 
> the source of which may be seen at:
> 
> http://cvs.gimp.org/viewcvs/gimp/plug-ins/common/dicom.c?rev=1.8&view=markup
> 
> It would be easy to add recognition of the image sequence tag in the
> load_image function.
> 
> Regards,
> Dov
> 
> On Sat, Apr 09, 2005 at 09:51:09PM +0800, fengfenghsy wrote:
> 
>>Hello, everyone,
>>     I am dealing with a list of DICOM images, and if I use special DICOM image reader software to read one of these DICOM images, the software could read out a general Image information called Instance Number, which indicate the sequence of this list of DICOM image.  No matter how you change each image name of the DICOM image, the Instance Number is invarable since the DICOM image generated from the making DICOM equipments.
>>     My problem is how could I read the Instance Number in VTK. Thanks a lot.  		
>>
>>????????????????fengfenghsy
>>????????????????fengfenghsy at 163.com
>>????????????????????2005-04-09
> 
> 
>>_______________________________________________
>>This is the private VTK discussion list. 
>>Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>Follow this link to subscribe/unsubscribe:
>>http://www.vtk.org/mailman/listinfo/vtkusers
> 
> 
> _______________________________________________
> This is the private VTK discussion list. 
> Please keep messages on-topic. Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
> 




More information about the vtkusers mailing list