[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