[Insight-developers] gdcm patient orientation

Mathieu Malaterre mathieu.malaterre at kitware.com
Wed Feb 22 10:57:21 EST 2006


After some discussion we came to the conclusion that the output should 
be DERIVED and not Secondary Capture. I have setup a small wiki at:

http://gdcm.sourceforge.net/wiki/index.php/Writing_DICOM#Derived_DICOM_Images

Mathieu

Mathieu Malaterre wrote:
> And I have the exact same understanding of the DICOM spec (any 
> mathematical operation should transform to Secondary Capture). Now 
> rereading some post in dicom newsgroups it looks like I can set it to 
> Secondary Capture, but still keep original Modality.
> 
> http://groups.google.com/group/comp.protocols.dicom/msg/79e4dd33b9de9540
> 
> It looks like I either need some other kind of information like number 
> of frames: 0028 0008 IS 1 Number of Frames, or -hopefully- leaving 
> Modality to CT, will make the GE A/W happy.
> 
> 2 cents
> Mathieu
> Ps: of course there is one case, where no mathematical operation is done 
> and in this case then yes GDCM should allow user to set whatever SOP 
> class they want...
> 
> Stephen R. Aylward wrote:
> 
>> Hi,
>>
>> It would be great to get an expert's opinion on secondary capture 
>> images.   My understanding is that after image processing the image is 
>> considered a secondary capture image - results of digital subtraction 
>> are one of the most commmon examples.   After blurring or edge 
>> enhancing an MR image, is it still an MR image?
>>
>> Stephen
>>
>>
>>
>>
>>
>> Bill Lorensen wrote:
>>
>>> That may be because gdcm is still reporting the new series as a 
>>> Secondary Capture. I'm not sure. In my local copy I have removed 
>>> 0002|0002 and 0008|0016 from gdcmFileHelper. I do not think the new 
>>> series should be a secondary capture. Rather it is really a derived 
>>> image.
>>>
>>> Since 0020|0020 does not affect me, you can leave it in. But, saying 
>>> the series generated by itk are Secondary Captures is not correct I 
>>> believe.
>>>
>>> Bill
>>>
>>> At 11:13 AM 2/21/2006, Mathieu Malaterre wrote:
>>>
>>>> Lorensen, William E (GE, Research) wrote:
>>>>
>>>>> Mathieu,
>>>>> My dicom checker complains:
>>>>> (0x0020,0x0020)  CS  4        [L\P] # Patient Orientation
>>>>> !!                            ERROR : Patient Position 
>>>>> (0x0020,0x0020) must not be present
>>>>> !!                                    if (0x0020, 0x0032) and 
>>>>> (0x0020, 0x0037) are required
>>>>> In Table C.7-9 of the dicom standard:
>>>>> Patient direction of rows and columns of the image. Required if 
>>>>> imkage does not require Image Orientation (Patient) (0020,0037) and 
>>>>> Image Position (Patient) (0020,0032). See C.7.6.1.1.1 fr further 
>>>>> explanation.
>>>>>
>>>>> I think gdcm should not be adding 0020|0020 if the others are 
>>>>> present. However, this does not seem to affect processing on the A/W.
>>>>
>>>>
>>>>
>>>>
>>>> If I remove 0020|0020, David Clunie tools report:
>>>>
>>>> ./dciodvfy Image0075.dcm
>>>> ...
>>>> Error - Missing attribute Type 2C Conditional 
>>>> Element=<PatientOrientation> Module=<GeneralImage>
>>>>
>>>> Mathieu
>>>>
>>>> Index: gdcmFileHelper.cxx
>>>> ===================================================================
>>>> RCS file: 
>>>> /cvsroot/Insight/Insight/Utilities/gdcm/src/gdcmFileHelper.cxx,v
>>>> retrieving revision 1.8
>>>> diff -u -3 -p -r1.8 gdcmFileHelper.cxx
>>>> --- gdcmFileHelper.cxx  20 Feb 2006 21:35:24 -0000      1.8
>>>> +++ gdcmFileHelper.cxx  21 Feb 2006 15:32:18 -0000
>>>> @@ -1639,12 +1639,12 @@ void FileHelper::CheckMandatoryElements(
>>>>
>>>>     // Patient Orientation
>>>>     // Can be computed from (0020|0037) :  Image Orientation (Patient)
>>>> -   gdcm::Orientation o;
>>>> -   std::string ori = o.GetOrientation ( FileInternal );
>>>> -   if (ori != "\\" && ori != GDCM_UNFOUND)
>>>> -      CheckMandatoryEntry(0x0020,0x0020,ori);
>>>> -   else
>>>> -      CheckMandatoryEntry(0x0020,0x0020,"");
>>>> +   //gdcm::Orientation o;
>>>> +   //std::string ori = o.GetOrientation ( FileInternal );
>>>> +   //if (ori != "\\" && ori != GDCM_UNFOUND)
>>>> +   //   CheckMandatoryEntry(0x0020,0x0020,ori);
>>>> +   //else
>>>> +   //   CheckMandatoryEntry(0x0020,0x0020,"");
>>>>
>>>>     // Modality : if missing we set it to 'OTher'
>>>>     CheckMandatoryEntry(0x0008,0x0060,"OT");
>>>> _______________________________________________
>>>> Insight-developers mailing list
>>>> Insight-developers at itk.org
>>>> http://www.itk.org/mailman/listinfo/insight-developers
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Insight-developers mailing list
>>> Insight-developers at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-developers
>>>
>>
> 
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
> 



More information about the Insight-developers mailing list