- seriesWriter->SetInput( volumeReader->GetOutput() );
- seriesWriter->SetImageIO( gdcmIO );
- namesGenerator->SetOutputDirectory( m_ArgsInfo.outputDir_arg );
- seriesWriter->SetFileNames( namesGenerator->GetOutputFileNames() );
- //seriesWriter->SetMetaDataDictionaryArray( dictionary );
- seriesWriter->SetMetaDataDictionaryArray( dictionary );
-
- // Write
- try
- {
- seriesWriter->Update();
- }
- catch( itk::ExceptionObject & excp )
- {
- std::cerr << "Error: Exception thrown while writing the series!!" << std::endl;
- std::cerr << excp << std::endl;
- }
+ // file UIDs are recreated for new studies or series
+ if (!useInputFileUID)
+ {
+ std::string fileUID;
+#if GDCM_MAJOR_VERSION >= 2
+ gdcm::UIDGenerator fid;
+ fileUID = fid.Generate();
+#else
+ fileUID = gdcm::Util::CreateUniqueUID( gdcmIO->GetUIDPrefix());
+#endif
+ itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0008|0018", fileUID );
+ itk::EncapsulateMetaData<std::string>( *((*dictionary)[fni]), "0002|0003", fileUID );
+
+ filenames_out[fni] = itksys::SystemTools::CollapseFullPath(fileUID.c_str(), m_ArgsInfo.outputDir_arg) + std::string(".dcm");
+ }
+ }
+
+ // Output directory and filenames
+ itksys::SystemTools::MakeDirectory( m_ArgsInfo.outputDir_arg ); // create if it doesn't exist
+ typedef itk::ImageSeriesWriter<InputImageType, OutputImageType > SeriesWriterType;
+ typename SeriesWriterType::Pointer seriesWriter = SeriesWriterType::New();
+
+ seriesWriter->SetInput( input );
+ seriesWriter->SetImageIO( gdcmIO );
+
+ seriesWriter->SetFileNames( filenames_out );
+ seriesWriter->SetMetaDataDictionaryArray( dictionary );
+
+ // Write
+ try {
+ seriesWriter->Update();
+ } catch( itk::ExceptionObject & excp ) {
+ std::cerr << "Error: Exception thrown while writing the series!!" << std::endl;
+ std::cerr << excp << std::endl;
+ }
+
+}
+
+/*
+//-------------------------------------------------------------------
+// Update with the number of dimensions and the pixeltype
+//-------------------------------------------------------------------
+template<class args_info_type>
+template <unsigned int Dimension, class PixelType>
+void
+WriteDicomSeriesGenericFilter<args_info_type>::UpdateWithDimAndPixelType()
+{
+
+ // ImageTypes
+ typedef itk::Image<PixelType, Dimension> InputImageType;
+ typedef itk::Image<PixelType, 2> OutputImageType;
+
+ // Read the input (volumetric)
+ typedef itk::ImageFileReader<InputImageType> InputReaderType;
+ typename InputReaderType::Pointer volumeReader = InputReaderType::New();
+ volumeReader->SetFileName( m_InputFileName);
+ volumeReader->Update();
+ typename InputImageType::Pointer input= volumeReader->GetOutput();