- // -----------------------------------------------
- // Filter
- // -----------------------------------------------
-#if ITK_VERSION_MAJOR >= 4
- typedef itk::TransformToDisplacementFieldSource<OutputImageType, double> ConvertorType;
-#else
- typedef itk::TransformToDeformationFieldSource<OutputImageType, double> ConvertorType;
-#endif
- ConvertorType::Pointer filter= ConvertorType::New();
-
- //Output image info
- if (m_ArgsInfo.like_given)
- {
-/* typedef itk::ImageFileReader<OutputImageType> ReaderType;
- ReaderType::Pointer reader2=ReaderType::New();
- reader2->SetFileName(m_ArgsInfo.like_arg);
- reader2->Update();
-
- OutputImageType::Pointer image=reader2->GetOutput();
- filter->SetOutputParametersFromImage(image);*/
-
- typedef itk::ImageIOBase ImageIOType;
- typename ImageIOType::Pointer imageIO = itk::ImageIOFactory::CreateImageIO(m_ArgsInfo.like_arg, itk::ImageIOFactory::ReadMode);
- imageIO->SetFileName(m_ArgsInfo.like_arg);
- imageIO->ReadImageInformation();
-
- typename ConvertorType::SizeType output_size;
- typename ConvertorType::SpacingType output_spacing;
- typename ConvertorType::OriginType output_origin;
- typename ConvertorType::DirectionType output_direction;
- for (unsigned int i = 0; i < Dimension; i++) {
- output_size[i] = imageIO->GetDimensions(i);
- output_spacing[i] = imageIO->GetSpacing(i);
- output_origin[i] = imageIO->GetOrigin(i);
- for (unsigned int j = 0; j < Dimension; j++)
- output_direction[i][j] = imageIO->GetDirection(i)[j];
- }
-
- filter->SetOutputOrigin(output_origin);
- filter->SetOutputSpacing(output_spacing);
- filter->SetOutputSize(output_size);
- filter->SetOutputDirection(output_direction);
- }
- else
- {
- unsigned int i=0;
- if (m_ArgsInfo.origin_given)
- {
- OutputImageType::PointType origin;
- for (i=0;i<Dimension;i++)
- origin[i]=m_ArgsInfo.origin_arg[i];
- filter->SetOutputOrigin(origin);
- }
- if (m_ArgsInfo.spacing_given)
- {
- OutputImageType::SpacingType spacing;
- for (i=0;i<Dimension;i++)
- spacing[i]=m_ArgsInfo.spacing_arg[i];
- filter->SetOutputSpacing(spacing);
- }
- if (m_ArgsInfo.spacing_given)
- {
- OutputImageType::SizeType size;
- for (i=0;i<Dimension;i++)
- size[i]=m_ArgsInfo.size_arg[i];
- filter->SetOutputSize(size);
- }