[Insight-users] Rewriting Dicom header entries
Jean-Pierre Roux
jpr at creatis.insa-lyon.fr
Wed Oct 17 09:34:45 EDT 2007
Angela Wang wrote:
> Here is a sample of the dicom images. The original dicom file is
> Medcon_Data.dcm. Then I used ITK to change the headers for OLD.dcm and
> NEW.dcm. All odd number of characters should have been padded to an even
> number with blanks.
>
> I am told that the ones with null termination in the OLD.dcm file are:
> (0008,0008) - image type
> (0010,0040) - patient's sex
> (0020,0020) - patient orientation
>
OK.
XMedCon padds *all* the odd length strings with Zero.
> I believe/hope that the null character terminations are fixed in the NEW.dcm
> version.
They are.
GDCM (therefore, ITK) replaces trailing zero in strings by a white space.
> Except that (0008, 0008) entry is not changed.
(0008, 0008) is forced to "DERIVED\PRIMARY", except if user says he
didn't modify the pixels of the original image.
Use gdcm::FileHelper::SetContentType(gdcm::UNMODIFIED_PIXELS_IMAGE)
Current CVS version of GDCM forces the value *only* when it contains
"ORIGINAL"
Maybe in next ITK release ...
> I don't know how to
> distinguish a "blank" from a "null character".
>
You can see that using your favorite hexadecimal editor
White Space = 0x20
Binary Zero = 0x00
Jean-Pierre Roux
> Thanks again,
> Angela
>
>
>
>
> On 10/16/07 10:46 AM, "Jean-Pierre Roux" <jpr at creatis.insa-lyon.fr> wrote:
>
>
>> Angela Wang wrote:
>>
>>> Hi Mathieu,
>>>
>>>
>>> On 10/16/07 2:05 AM, "Mathieu Malaterre" <mathieu.malaterre at gmail.com>
>>> wrote:
>>>
>>>
>>>
>>>> Correct me if I am wrong, but doesn't DICOM actually clearly specify
>>>> that for a derived image (*), you have to set Image Type (0008,0008)
>>>> to DERIVED\PRIMARY.
>>>>
>>>>
>>> That is good to know.
>>>
>>>
>>>
>>>> The process is fairly simple, if you derive an image (ie. read a
>>>> DICOM) and then writes it, ITK-gdcm will actually do the correct job
>>>> of marking it derived and setting up the Reference SOP Instance UID
>>>> for you. Otherwise you need to create an image from scratch, or
>>>> somehow disconnect from the source. But I'd be interested what is your
>>>> test case.
>>>>
>>>>
>>> I am using a processing program that converts images from DICOM to ECAT 6.
>>> Then I convert the processed images from ECAT 6 back into DICOM, using
>>> XMedcon. During that process, all of the original header entries are pretty
>>> much lost, so I am using ITK to rewrite information back into the DICOM
>>> header entries. The (0008,0008) is filled in by one of those programs and
>>> has a null character termination,
>>>
>> Dicom norm says that a field cannot have an odd length (even length is
>> mandatory)
>> The fields have to be padded either with blank space or with binary zero.
>>
>> We thought that GDCM (used by ITK) makes the right padding (dicom3tools
>> doesn't disagree with our padding)
>> Could you send one of your generated images,so we can check if anything
>> looks wrong.
>> (maybe XMedcon produces images that are not 100% kosher ?)
>> Jean-Pierre Roux
>> gdcm team
>>
>>> which is not acceptable to the upload
>>> site. That is the long story why I am trying to re-write that particular
>>> entry.
>>>
>>> Thanks for your help and comments!
>>> Angela
>>>
>>>
>>>
>>>
>>>
>>>
>>>> On 10/15/07, Angela Wang <Angela.Y.Wang at hsc.utah.edu> wrote:
>>>>
>>>>
>>>>> I am trying to write two values into a DICOM header entry for my processed
>>>>> image file. This one tag does not write my values. I am able, however, to
>>>>> change other DICOM header entries. The tag is (0008,0008) for Image Iype
>>>>> and takes type CS = code string.
>>>>> The code looks like:
>>>>>
>>>>> ReaderType::DictionaryArrayRawPointer dictPointer =
>>>>> reader -> GetMetaDataDictionaryArray();
>>>>> ReaderType::DictionaryRawPointer dict = (*dictPointer)[i];
>>>>> itk::MetaDataDictionary & dictionary= *dict;
>>>>> std::string tagkey, value;
>>>>> tagkey = "0008|0008"; // Image Type vr = CS
>>>>> value = "ORIGINAL\\SECONDARY";
>>>>> itk::EncapsulateMetaData<std::string>(dictionary, tagkey, value);
>>>>>
>>>>> Does anyone know how to make this work?
>>>>> Thanks.
>>>>> Angela
>>>>> _______________________________________________
>>>>> 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