[ITK-users] Lost Patient, Study and Series DICOM tags

Piotr Piasecki piotpia124 at student.polsl.pl
Thu Jul 7 08:35:12 EDT 2016


Hi Dženan,

thank you for your help and for this example. Unfortunately, I have not
found method GetMetaDataDictionary() in SimpleITK in C# (I found only
GetMetaDataKeys() and GetMetaData(string key)). Also, I have not found a
method SetMetaDataDictionary or any other that allows me to assign DICOM
tags.

My short piece of code looks like this:

static public void ReadImage()
        {
            sitk.ImageFileReader reader = new sitk.ImageFileReader();
            reader.SetFileName(@".\DICOM_TEST\original.dcm");
            var image = reader.Execute();

            sitk.ImageFileWriter writer = new sitk.ImageFileWriter();
            writer.SetFileName(@".\DICOM_TEST\modified.dcm");
            writer.Execute(image);
        }

Another problem is that your example describes only loading and saving a
single .dcm file. What if I have to process a whole series of files using
sitk.ImageSeriesReader and sitk.ImageSeriesWriter?

Regards,

Peter.

2016-07-05 15:45 GMT+02:00 Dženan Zukić <dzenanz at gmail.com>:

> Hi Piotr,
>
> if you want to carry over metadata from input image to output image, you
> should save the metadata dictionary in a way similar to this:
>
> itk::MetaDataDictionary metadata;
>
> template< typename TImage >
> itk::SmartPointer<TImage> readImage(std::string fileName)
> {
>     typedef itk::ImageFileReader<TImage> ReaderType;
>     typename ReaderType::Pointer reader = ReaderType::New();
>     reader->SetFileName(fileName.c_str());
>     try
>     {
>         reader->Update();
>         metadata = reader->GetMetaDataDictionary();
>         return reader->GetOutput();
>     }
>     catch (itk::ExceptionObject & error)
>     {
>         std::cerr << "Error: " << error << std::endl;
>         return NULL;
>     }
> }
>
> template< typename TImage >
> void writeImage(itk::SmartPointer<TImage> image, std::string fileName)
> {
>     image->SetMetaDataDictionary(metadata); //full metadata
>     typedef itk::ImageFileWriter<TImage> WriterType;
>     typename WriterType::Pointer writer = WriterType::New();
>     writer->SetFileName(fileName.c_str());
>     writer->SetInput(image);
>     try
>     {
>         writer->Update();
>     }
>     catch (itk::ExceptionObject & error)
>     {
>         std::cerr << "Error: " << error << std::endl;
>     }
> }
>
> On Tue, Jul 5, 2016 at 2:46 AM, Piotr Piasecki <
> piotpia124 at student.polsl.pl> wrote:
>
>> Dear Sir or Madam.
>>
>> I am a student in Biomedical Engineering at the Silesian University of
>> Technology. During my studies I worked with ITK and SimpleITK in C#. I want
>> to use them in my current project, but I have an important question. After
>> loading and processing a series of .dcm files I lost information about the
>> patient and study to which they belong, and that they belong to one series.
>> How can I keep this information?
>>
>> I will be very grateful for any answer.
>>
>> Best regards.
>>
>> Peter.
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/insight-users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20160707/5b5098fe/attachment.html>


More information about the Insight-users mailing list