[Insight-users] incorrect z-spacing in GDCM reading: oops

Li, George (NIH/NCI) ligeorge at mail.nih.gov
Wed May 11 14:10:11 EDT 2005


Mathieu and Jim:

The dicom file is generated from my own program, which can communicate 
with several commercial treatment planning software, where dicom is used
as standard image format. 

For more robust I/O, I would suggest to use fgets() then parse the entire 
line with strtok() with "\\" as the deliminator. They are all C function 
calls though. Therefore, a slight format change in the file won't corrupt 
the reading.

Of course, it takes the performance as the expense. But, it does not cost 
much.

Regards,

George


-----Original Message-----
From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com] 
Sent: Wednesday, May 11, 2005 1:53 PM
To: Miller, James V (Research)
Cc: Li, George (NIH/NCI); insight-users at itk.org; Luis Ibanez
Subject: Re: [Insight-users] incorrect z-spacing in GDCM reading: oops


Jim,

	Ok my mistake you are right sscanf is failing on that:

#include <iostream>

int main()
{
   float x,y,z;
   std::string s = "0.000000  \\0.000000  \\0.000000  ";
   std::cout <<   sscanf( s.c_str(), "%f\\%f\\%f", &x, &y, &z) << std::endl;
   return 1;
}

It only reads the first floating point value...


George where did you get this DICOM file ?

I'll convert the sscanf to a more robust stringstream approach,


Any suggestion welcome,
Mathieu


Miller, James V (Research) wrote:
> It looks like the ImagePositionPatients in these headers
> are formatted like
> 
> 0.00000 \0.0000 \0.0000
> 
> with a space before the "\".  Normally, these fields appears as
> 
> 0.0000\0.0000\0.0000
> 
> I have never seen spaces before the "\", does DICOM allow this?
> 
> Jim
> 
> -----Original Message-----
> From: insight-users-bounces+millerjv=crd.ge.com at itk.org
> [mailto:insight-users-bounces+millerjv=crd.ge.com at itk.org]On Behalf Of 
> Li, George (NIH/NCI)
> Sent: Wednesday, May 11, 2005 12:44 PM
> To: Li, George (NIH/NCI); 'Mathieu Malaterre'
> Cc: 'insight-users at itk.org'; 'Luis Ibanez'
> Subject: RE: [Insight-users] incorrect z-spacing in GDCM reading
> 
> 
> Mathieu:
> 
> Here are the dicom header information. The strings are direct dump, So 
> should provide some info on the images. Hopefully, you can tell Me an 
> alternative way to send images to you and test them from your End.
> 
> Thanks,
> 
> George
> 
> 
> -----Original Message-----
> From: Li, George (NIH/NCI)
> Sent: Wednesday, May 11, 2005 12:38 PM
> To: 'Mathieu Malaterre'
> Cc: 'insight-users at itk.org'; 'Luis Ibanez'
> Subject: RE: [Insight-users] incorrect z-spacing in GDCM reading
> 
> 
> 
> Mathieu:
> 
> I cannot send the 2 images as attachment, because they are 205KB each. 
> I got a message from ITK, saying that there is limit of 40KB per mail 
> And my following mail was discarded.
> 
> Any other way I can send the images?
> 
> Thanks,
> 
> George
> 
> 
> 
> -----Original Message-----
> From: Li, George (NIH/NCI)
> Sent: Wednesday, May 11, 2005 12:32 PM
> To: 'Mathieu Malaterre'
> Cc: 'Luis Ibanez'; insight-users at itk.org
> Subject: RE: [Insight-users] incorrect z-spacing in GDCM reading
> 
> 
> Thanks, Mathieu:
> 
> I have included two image slices, together with their header 
> information,
> which is printed into text files from one of my own program. Actually, the

> dicom image files are generated from my program, too. Theoretically, the 
> syntax should follow dicom3 definition on 'Image Position Patient' /
'Image 
> Orientation Patient'. I did not check how GDCM parses the string.
> 
> The spacing should be 3.4mm, but GDCM got 1.00mm.
> 
> Look forward to hearing from you.
> 
> Thanks.
> 
> George
> 
> 
> -----Original Message-----
> From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
> Sent: Wednesday, May 11, 2005 12:00 PM
> To: Li, George (NIH/NCI)
> Cc: 'Luis Ibanez'; insight-users at itk.org
> Subject: Re: [Insight-users] incorrect z-spacing in GDCM reading
> 
> 
> George,
> 
> 	Your code looks fine. The algorithm for finding the z spacing is
kind
> of tricky. So I am wondering if:
> 
> 1. Your images might not have proper 'Image Position Patient' / 'Image
> Orientation Patient'
> 
> 2. If they have, maybe gdcm is not able to parse the string properly.
> 
> Could it be possible that you send me at least two images from this
> dataset ?
> 
> If not, you'll have to turn the code to be more verbose in particular
> when entering the function:
> 
> 
>      gdcm::SerieHelper::ImagePositionPatientOrdering
> 
> Thanks,
> Mathieu
> 
> Li, George (NIH/NCI) wrote:
> 
>>Hi, Luis and ITK users:
>> 
>>I recently tried to adopt the GDCM dicom code for loading dicom series 
>>images, and then consequently saving images in dicom series. However, 
>>when I read the images, the spacing in z-direction is incorrect, 
>>leading to a compressed image
>>in z-direction. Here is the related code, could you help me to identify 
>>anything
>>wrong?
>> 
>>class CMDIDataITKIO
>>{
>> public:
>>  CMDIDataITKIO();
>>  virtual ~CMDIDataITKIO();
>> public:
>>  void ReadGDCM_DicomImages(const char*, SeriesReaderType::Pointer);
>>  void WriteGDCM_DicomImages(const char*, ImageType::Pointer);
>> private:
>>  // initiate in the ctor, and raise clean flag in dtor.
>>  GDCMImageIOType::Pointer m_gdcmIO;
>>  GDCMSeriesNames::Pointer m_gdcmNames;
>>  SeriesReaderType::Pointer m_gdcmReader;
>>}
>> 
>>
>>void CMDIDataITKIO::ReadGDCM_DicomImages(const char* folderName,
>>                                                                       
>>SeriesReaderType::Pointer reader)
>>{
>> if(!m_gdcmIO) m_gdcmIO = GDCMImageIOType::New();
>> if(!m_gdcmNames) m_gdcmNames = GDCMSeriesNames::New();
>> 
>> // Get the DICOM filenames from the directory
>>m_gdcmNames->SetInputDirectory(folderName);
>> 
>> reader->SetFileNames( m_gdcmNames->GetInputFileNames() );
>>reader->SetImageIO( m_gdcmIO );
>> 
>> try {
>>  reader->Update();
>>    }
>> catch (itk::ExceptionObject &excp) {
>>  std::cerr << "Exception thrown while writing the image" << 
>>std::endl;
>>  std::cerr << excp << std::endl;
>>    }
>>}
>>Thanks,
>> 
>>George
>> 
>>
>>
>>----------------------------------------------------------------------
>>--
>>
>>_______________________________________________
>>Insight-users mailing list
>>Insight-users at itk.org
>>http://www.itk.org/mailman/listinfo/insight-users
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org 
> http://www.itk.org/mailman/listinfo/insight-users
> 
> 


More information about the Insight-users mailing list