7 #ifndef Tomato_Tomato_EXPORT_HXX 8 #define Tomato_Tomato_EXPORT_HXX 10 #include "CmakeConfigForTomato.h" 13 #include "gdcmUIDGenerator.h" 14 #include "itkGDCMImageIO.h" 15 #include "itkGDCMSeriesFileNames.h" 16 #include "itkMultiplyImageFilter.h" 17 #include "itkImageFileWriter.h" 18 #include "itkFileTools.h" 19 #include "itkAdaptImageFilter.h" 23 template<
typename MeasureType >
28 if (_opts->dir_output_map.empty()){
29 printf(
"No DICOM export, dir_output_map not given.\n");
34 typedef itk::Colorbar2DImageFilter< ImageType2D > OxColorbarImageFilterType;
35 typename OxColorbarImageFilterType::Pointer OxColorbarFilter = OxColorbarImageFilterType::New();
36 OxColorbarFilter->SetInput(_imageCalculatorItk->GetT1Image());
37 OxColorbarFilter->SetAddColorbar(_opts->use_colorbar);
40 itk::EncapsulateMetaData<std::string>( _dictionaryInput, std::string(
"0028|1052"),
"0");
41 itk::EncapsulateMetaData<std::string>( _dictionaryInput, std::string(
"0028|1053"),
"1");
44 DictionaryType dictionaryOutput_T1Color(_dictionaryInput);
47 gdcm::UIDGenerator sopuid;
48 std::string sopInstanceUID_T1Color = sopuid.Generate();
49 gdcm::UIDGenerator suid;
50 std::string seriesUID_T1 = suid.Generate();
53 std::string seriesNumber;
54 itk::ExposeMetaData<std::string>(_dictionaryInput,
"0020|0011", seriesNumber);
55 if (_opts->output_map_series_number == 0) {
56 _opts->output_map_series_number = KWUtil::StringToNumber<int>(seriesNumber) + 10002;
58 std::string newSeriesNumber_T1 = KWUtil::NumberToString(_opts->output_map_series_number);
62 std::string MagneticFieldStrength;
63 itk::ExposeMetaData<std::string>(_dictionaryInput,
"0018|0087", MagneticFieldStrength);
64 std::string ImageCommentsT1mapWithColormap, clutRedString, clutGreenString, clutBlueString;
65 if (MagneticFieldStrength.find(
"1.5") != std::string::npos){
66 ImageCommentsT1mapWithColormap = ImageCommentsT1mapWithColormap.append(
"ShMOLLI color 980SD265ms");
67 clutRedString = getEncodedSting(getShmolliColormapRed15TArray());
68 clutGreenString = getEncodedSting(getShmolliColormapGreen15TArray());
69 clutBlueString = getEncodedSting(getShmolliColormapBlue15TArray());
70 printf(
"Colormap for MagneticFieldStrength 1.5T is used.\n");
71 }
else if (MagneticFieldStrength.find(
'3') != std::string::npos){
72 ImageCommentsT1mapWithColormap = ImageCommentsT1mapWithColormap.append(
"ShMOLLI color 1198SD175ms");
73 clutRedString = getEncodedSting(getShmolliColormapRed3TArray());
74 clutGreenString = getEncodedSting(getShmolliColormapGreen3TArray());
75 clutBlueString = getEncodedSting(getShmolliColormapBlue3TArray());
76 printf(
"Colormap for MagneticFieldStrength 3T is used.\n");
78 printf(
"MagneticFieldStrength not detected, colormap will not be used.\n");
82 std::string PaletteColorLookupTableUID;
83 itk::ExposeMetaData<std::string>(_dictionaryInput,
"0028|1199", PaletteColorLookupTableUID);
85 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0008|0018"), sopInstanceUID_T1Color);
86 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0002|0003"), sopInstanceUID_T1Color);
87 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0020|000e"), seriesUID_T1);
88 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1199"), PaletteColorLookupTableUID);
90 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0020|0011"), newSeriesNumber_T1);
92 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0020|4000"), ImageCommentsT1mapWithColormap);
93 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0020|0013"), std::string(
"1"));
94 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|0106"), std::string(
"0"));
95 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|0107"), std::string(
"4096"));
96 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1050"), std::string(
"2048"));
97 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1051"), std::string(
"4096"));
99 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1101"), std::string(
"4096\\0\\16"));
100 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1102"), std::string(
"4096\\0\\16"));
101 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1103"), std::string(
"4096\\0\\16"));
103 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1201"), clutRedString);
104 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1202"), clutGreenString);
105 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1Color, std::string(
"0028|1203"), clutBlueString);
108 DictionaryType dictionaryOutput_T1(_dictionaryInput);
110 std::string sopInstanceUID_T1 = sopuid.Generate();
112 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0008|0018"), sopInstanceUID_T1);
113 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0002|0003"), sopInstanceUID_T1);
114 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0020|000e"), seriesUID_T1);
116 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0020|0011"), newSeriesNumber_T1);
118 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0020|4000"), std::string(
"ShMOLLI T1 map"));
119 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0020|0013"), std::string(
"2"));
120 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0028|0106"), std::string(
"0"));
121 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0028|0107"), std::string(
"4096"));
122 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0028|1050"), std::string(
"2048"));
123 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1, std::string(
"0028|1051"), std::string(
"4096"));
126 DictionaryType dictionaryOutput_R2(_dictionaryInput);
128 std::string sopInstanceUID_R2 = sopuid.Generate();
129 std::string seriesUID_R2 = suid.Generate();
131 itk::ExposeMetaData<std::string>(_dictionaryInput,
"0020|0011", seriesNumber);
132 if (_opts->output_fitparams_series_number == 0) {
133 _opts->output_fitparams_series_number = KWUtil::StringToNumber<int>(seriesNumber) + 10003;
135 std::string newSeriesNumber_R2 = KWUtil::NumberToString(_opts->output_fitparams_series_number);
138 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0008|0018"), sopInstanceUID_R2);
139 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0002|0003"), sopInstanceUID_R2);
140 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0020|000e"), seriesUID_R2);
142 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0020|0011"), newSeriesNumber_R2);
144 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0020|4000"), std::string(
"Rsquare*4000 Map"));
145 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0020|0013"), std::string(
"3"));
146 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0028|0106"), std::string(
"0"));
147 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0028|0107"), std::string(
"4096"));
148 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0028|1050"), std::string(
"3900"));
149 itk::EncapsulateMetaData<std::string>( dictionaryOutput_R2, std::string(
"0028|1051"), std::string(
"200"));
152 DictionaryType dictionaryOutput_A(_dictionaryInput);
154 std::string sopInstanceUID_A = sopuid.Generate();
156 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0008|0018"), sopInstanceUID_A);
157 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0002|0003"), sopInstanceUID_A);
158 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0020|000e"), seriesUID_R2);
160 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0020|0011"), newSeriesNumber_R2);
162 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0020|4000"), std::string(
"Signal(TI)=[___AMap___]-B*exp(-TI/T1star)"));
163 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0020|0013"), std::string(
"4"));
164 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0028|0106"), std::string(
"0"));
165 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0028|0107"), std::string(
"4096"));
166 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0028|1050"), std::string(
"2000"));
167 itk::EncapsulateMetaData<std::string>( dictionaryOutput_A, std::string(
"0028|1051"), std::string(
"4000"));
170 DictionaryType dictionaryOutput_B(_dictionaryInput);
172 std::string sopInstanceUID_B = sopuid.Generate();
174 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0008|0018"), sopInstanceUID_B);
175 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0002|0003"), sopInstanceUID_B);
176 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0020|000e"), seriesUID_R2);
178 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0020|0011"), newSeriesNumber_R2);
180 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0020|4000"), std::string(
"Signal(TI)=A-[___BMap___]*exp(-TI/T1star)"));
181 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0020|0013"), std::string(
"5"));
182 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0028|0106"), std::string(
"0"));
183 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0028|0107"), std::string(
"4096"));
184 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0028|1050"), std::string(
"2000"));
185 itk::EncapsulateMetaData<std::string>( dictionaryOutput_B, std::string(
"0028|1051"), std::string(
"4000"));
188 DictionaryType dictionaryOutput_T1star(_dictionaryInput);
190 std::string sopInstanceUID_T1star = sopuid.Generate();
192 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0008|0018"), sopInstanceUID_T1star);
193 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0002|0003"), sopInstanceUID_T1star);
194 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0020|000e"), seriesUID_R2);
196 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0020|0011"), newSeriesNumber_R2);
198 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0020|4000"), std::string(
"Signal(TI)=A-B*exp(-TI/[___T1starMap___])"));
199 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0020|0013"), std::string(
"6"));
200 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0028|0106"), std::string(
"0"));
201 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0028|0107"), std::string(
"4096"));
202 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0028|1050"), std::string(
"2000"));
203 itk::EncapsulateMetaData<std::string>( dictionaryOutput_T1star, std::string(
"0028|1051"), std::string(
"4000"));
206 DictionaryType dictionaryOutput_ShMolliT1Range(_dictionaryInput);
208 std::string sopInstanceUID_ShMolliT1Range = sopuid.Generate();
210 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0008|0018"), sopInstanceUID_ShMolliT1Range);
211 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0002|0003"), sopInstanceUID_ShMolliT1Range);
212 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0020|000e"), seriesUID_R2);
214 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0020|0011"), newSeriesNumber_R2);
216 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0020|4000"), std::string(
"_ShMOLLIT1range"));
217 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0020|0013"), std::string(
"7"));
218 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0028|0106"), std::string(
"0"));
219 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0028|0107"), std::string(
"4096"));
220 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0028|1050"), std::string(
"1500"));
221 itk::EncapsulateMetaData<std::string>( dictionaryOutput_ShMolliT1Range, std::string(
"0028|1051"), std::string(
"3000"));
224 DictionaryType dictionaryOutput_nAmebaCallFinal(_dictionaryInput);
226 std::string sopInstanceUID_nAmebaCallFinal = sopuid.Generate();
228 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0008|0018"), sopInstanceUID_nAmebaCallFinal);
229 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0002|0003"), sopInstanceUID_nAmebaCallFinal);
230 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0020|000e"), seriesUID_R2);
232 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0020|0011"), newSeriesNumber_R2);
234 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0020|4000"), std::string(
"_nAmebaCallFinal"));
235 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0020|0013"), std::string(
"8"));
236 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0028|0106"), std::string(
"0"));
237 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0028|0107"), std::string(
"4096"));
238 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0028|1050"), std::string(
"2000"));
239 itk::EncapsulateMetaData<std::string>( dictionaryOutput_nAmebaCallFinal, std::string(
"0028|1051"), std::string(
"4000"));
242 DictionaryType dictionaryOutput_RelSNRFinal(_dictionaryInput);
244 std::string sopInstanceUID_RelSNRFinal = sopuid.Generate();
246 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0008|0018"), sopInstanceUID_RelSNRFinal);
247 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0002|0003"), sopInstanceUID_RelSNRFinal);
248 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0020|000e"), seriesUID_R2);
250 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0020|0011"), newSeriesNumber_R2);
252 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0020|4000"), std::string(
"_RelSNRFinal"));
253 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0020|0013"), std::string(
"9"));
254 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0028|0106"), std::string(
"0"));
255 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0028|0107"), std::string(
"4096"));
256 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0028|1050"), std::string(
"2000"));
257 itk::EncapsulateMetaData<std::string>( dictionaryOutput_RelSNRFinal, std::string(
"0028|1051"), std::string(
"4000"));
260 typedef itk::GDCMImageIO ImageIOType;
261 ImageIOType::Pointer gdcmImageIO = ImageIOType::New();
262 gdcmImageIO->KeepOriginalUIDOn();
265 typedef itk::AdaptImageFilter < ImageType2D, OutputImageType, CastPixelAccessor< InputPixelType, OutputPixelType > > ImageAdaptorType;
266 typename ImageAdaptorType::Pointer adaptor = ImageAdaptorType::New();
269 typedef itk::ImageFileWriter<OutputImageType> WriterType;
270 typename WriterType::Pointer writer = WriterType::New();
271 writer->SetUseInputMetaDataDictionary(
false);
274 if (!_opts->dir_output_map.empty()) {
276 printf(
"Saving to: %s ", _opts->dir_output_map.c_str());
279 itk::FileTools::CreateDirectory(_opts->dir_output_map);
282 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_T1Color);
285 adaptor->SetInput(OxColorbarFilter->GetOutput());
286 writer->SetFileName(_opts->dir_output_map + KWUtil::PathSeparator() + newSeriesNumber_T1 +
"_T1color.dcm");
287 writer->SetInput(adaptor->GetOutput());
288 writer->SetImageIO(gdcmImageIO);
291 }
catch (itk::ExceptionObject &e) {
292 std::cerr <<
"Exception in file writer " << std::endl;
293 std::cerr << e << std::endl;
297 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_T1);
300 adaptor->SetInput(OxColorbarFilter->GetOutput());
301 writer->SetFileName( _opts->dir_output_map + KWUtil::PathSeparator() + newSeriesNumber_T1 +
"_T1.dcm");
302 writer->SetInput(adaptor->GetOutput());
303 writer->SetImageIO(gdcmImageIO);
306 }
catch (itk::ExceptionObject &e) {
307 std::cerr <<
"Exception in file writer " << std::endl;
308 std::cerr << e << std::endl;
310 std::cout <<
" Saved!" << std::endl;
313 if (!_opts->dir_output_fitparams.empty()) {
315 printf(
"Saving to: %s ", _opts->dir_output_fitparams.c_str());
319 typedef itk::MultiplyImageFilter< ImageType2D, ImageType2D, ImageType2D > MultiplyImageFilterType;
320 typename MultiplyImageFilterType::Pointer multiplyFilter = MultiplyImageFilterType::New();
321 multiplyFilter->SetInput( _imageCalculatorItk->GetR2AbsImage() );
322 multiplyFilter->SetConstant( 4000 );
324 OxColorbarFilter->SetInput(multiplyFilter->GetOutput());
325 OxColorbarFilter->SetZerosInsteadOfColorbar(
true);
328 itk::FileTools::CreateDirectory(_opts->dir_output_fitparams);
331 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_R2);
334 adaptor->SetInput(OxColorbarFilter->GetOutput());
335 writer->SetFileName(_opts->dir_output_fitparams + KWUtil::PathSeparator() + newSeriesNumber_R2 +
"_R2.dcm");
336 writer->SetInput(adaptor->GetOutput());
337 writer->SetImageIO(gdcmImageIO);
340 }
catch (itk::ExceptionObject &e) {
341 std::cerr <<
"Exception in file writer " << std::endl;
342 std::cerr << e << std::endl;
346 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_A);
348 OxColorbarFilter->SetInput(_imageCalculatorItk->GetAImage());
349 OxColorbarFilter->SetZerosInsteadOfColorbar(
true);
352 adaptor->SetInput(OxColorbarFilter->GetOutput());
353 writer->SetFileName(_opts->dir_output_fitparams + KWUtil::PathSeparator() + newSeriesNumber_R2 +
"_A.dcm");
354 writer->SetInput(adaptor->GetOutput());
355 writer->SetImageIO(gdcmImageIO);
358 }
catch (itk::ExceptionObject &e) {
359 std::cerr <<
"Exception in file writer " << std::endl;
360 std::cerr << e << std::endl;
364 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_B);
366 OxColorbarFilter->SetInput(_imageCalculatorItk->GetBImage());
367 OxColorbarFilter->SetZerosInsteadOfColorbar(
true);
370 adaptor->SetInput(OxColorbarFilter->GetOutput());
371 writer->SetFileName(_opts->dir_output_fitparams + KWUtil::PathSeparator() + newSeriesNumber_R2 +
"_B.dcm");
372 writer->SetInput(adaptor->GetOutput());
373 writer->SetImageIO(gdcmImageIO);
376 }
catch (itk::ExceptionObject &e) {
377 std::cerr <<
"Exception in file writer " << std::endl;
378 std::cerr << e << std::endl;
382 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_T1star);
384 OxColorbarFilter->SetInput(_imageCalculatorItk->GetT1starImage());
385 OxColorbarFilter->SetZerosInsteadOfColorbar(
true);
388 adaptor->SetInput(OxColorbarFilter->GetOutput());
389 writer->SetFileName(_opts->dir_output_fitparams + KWUtil::PathSeparator() + newSeriesNumber_R2 +
"_T1star.dcm");
390 writer->SetInput(adaptor->GetOutput());
391 writer->SetImageIO(gdcmImageIO);
394 }
catch (itk::ExceptionObject &e) {
395 std::cerr <<
"Exception in file writer " << std::endl;
396 std::cerr << e << std::endl;
400 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_ShMolliT1Range);
402 typedef itk::NShmolliSamplesUsedTo123ImageFilter <ImageType2D> nShmolliSamplesUsedTo123FilterType;
403 typename nShmolliSamplesUsedTo123FilterType::Pointer nShmolliSamplesUsedTo123Filter = nShmolliSamplesUsedTo123FilterType::New();
404 nShmolliSamplesUsedTo123Filter->SetInput(_imageCalculatorItk->GetNShmolliSamplesUsedImage());
406 OxColorbarFilter->SetInput(nShmolliSamplesUsedTo123Filter->GetOutput());
407 OxColorbarFilter->SetZerosInsteadOfColorbar(
true);
410 adaptor->SetInput(OxColorbarFilter->GetOutput());
411 writer->SetFileName(_opts->dir_output_fitparams + KWUtil::PathSeparator() + newSeriesNumber_R2 +
"_ShMolliRange.dcm");
412 writer->SetInput(adaptor->GetOutput());
413 writer->SetImageIO(gdcmImageIO);
416 }
catch (itk::ExceptionObject &e) {
417 std::cerr <<
"Exception in file writer " << std::endl;
418 std::cerr << e << std::endl;
423 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_nAmebaCallFinal);
425 OxColorbarFilter->SetInput(_imageCalculatorItk->GetChiSqrtImage());
426 OxColorbarFilter->SetZerosInsteadOfColorbar(
true);
429 adaptor->SetInput(OxColorbarFilter->GetOutput());
430 writer->SetFileName(_opts->dir_output_fitparams + KWUtil::PathSeparator() + newSeriesNumber_R2 +
"_nAmebaCallFinal.dcm");
431 writer->SetInput(adaptor->GetOutput());
432 writer->SetImageIO(gdcmImageIO);
435 }
catch (itk::ExceptionObject &e) {
436 std::cerr <<
"Exception in file writer " << std::endl;
437 std::cerr << e << std::endl;
442 gdcmImageIO->SetMetaDataDictionary(dictionaryOutput_RelSNRFinal);
444 OxColorbarFilter->SetInput(_imageCalculatorItk->GetSNRImage());
445 OxColorbarFilter->SetZerosInsteadOfColorbar(
true);
448 adaptor->SetInput(OxColorbarFilter->GetOutput());
449 writer->SetFileName(_opts->dir_output_fitparams + KWUtil::PathSeparator() + newSeriesNumber_R2 +
"_RelSNRFinal.dcm");
450 writer->SetInput(adaptor->GetOutput());
451 writer->SetImageIO(gdcmImageIO);
454 }
catch (itk::ExceptionObject &e) {
455 std::cerr <<
"Exception in file writer " << std::endl;
456 std::cerr << e << std::endl;
458 std::cout <<
" Saved!" << std::endl;
470 #endif //Tomato_Tomato_EXPORT_HXX Definition: OxCalculator.h:19