+ vvImage::Pointer image = reader->GetOutput();
+ vtkImageData* vtk_image = image->GetFirstVTKImageData();
+ vtkImageChangeInformation* modifier = vtkImageChangeInformation::New();
+ if (args_info.focal_origin_given) {
+ std::vector<double> spacing = image->GetSpacing();
+ std::vector<int> size = image->GetSize();
+ origin[0] = -spacing[0]*size[0]/2.0;
+ origin[1] = -spacing[1]*size[1]/2.0;
+#if VTK_MAJOR_VERSION <= 5
+ modifier->SetInput(vtk_image);
+#else
+ modifier->SetInputData(vtk_image);
+#endif
+ modifier->SetOutputOrigin(origin[0], origin[1], locs[sliceIndex[0]]);
+ modifier->Update();
+ vvImage::Pointer focal_image = vvImage::New();
+ focal_image->AddVtkImage(modifier->GetOutput());
+ image = focal_image;
+ }
+
+ std::string outfile;
+ if (series_numbers.size() == 1)
+ outfile = args_info.output_arg;
+ else {
+ std::ostringstream name;
+ std::vector<std::string> directory = clitk::SplitFilename(args_info.output_arg);
+ if (directory.size() == 2)
+ name << directory[0] << "/" << *sn << "_" << directory[1];
+ else
+ name << *sn << "_" << args_info.output_arg;
+ outfile = name.str();
+ }
+ vvImageWriter::Pointer writer = vvImageWriter::New();
+ writer->SetInput(image);
+ if (args_info.extract_series_flag && !image->GetTransform().empty())
+ writer->SetSaveTransform(true);
+ writer->SetOutputFileName(outfile);
+ writer->Update();
+
+ modifier->Delete();
+
+ sn++;
+ }