itk::Object::Pointer QmitkVersorTransformView::GetTransform2(itk::Image<TPixelType, VImageDimension> *itkImage1) { if (VImageDimension == 3) { typedef typename itk::Image<TPixelType, 3> FixedImage3DType; typedef typename itk::Image<TPixelType, 3> MovingImage3DType; // the fixedImage is the input parameter (fix for Bug #14626) typename FixedImage3DType::Pointer fixedImage = itkImage1; // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) typename mitk::ImageToItk<MovingImage3DType>::Pointer movingImageToItk = mitk::ImageToItk<MovingImage3DType>::New(); movingImageToItk->SetInput(m_MovingImage); movingImageToItk->Update(); typename MovingImage3DType::Pointer movingImage = movingImageToItk->GetOutput(); typename itk::VersorTransform<double>::Pointer transformPointer = itk::VersorTransform<double>::New(); transformPointer->SetIdentity(); typedef typename itk::VersorTransform<double> VersorTransformType; if (m_Controls.m_CenterForInitializerVersor->isChecked()) { typedef typename itk::CenteredTransformInitializer<VersorTransformType, FixedImage3DType, MovingImage3DType> TransformInitializerType; typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); transformInitializer->SetFixedImage(fixedImage); transformInitializer->SetMovingImage(movingImage); transformInitializer->SetTransform(transformPointer); if (m_Controls.m_MomentsVersor->isChecked()) { transformInitializer->MomentsOn(); } else { transformInitializer->GeometryOn(); } transformInitializer->InitializeTransform(); } m_CenterX = transformPointer->GetCenter()[0]; m_CenterY = transformPointer->GetCenter()[1]; m_CenterZ = transformPointer->GetCenter()[2]; m_TransformObject = transformPointer.GetPointer(); return transformPointer.GetPointer(); } return nullptr; }
itk::Object::Pointer QmitkVersorTransformView::GetTransform2(itk::Image<TPixelType, VImageDimension>* /*itkImage1*/) { if (VImageDimension == 3) { typedef typename itk::Image< TPixelType, 3 > FixedImage3DType; typedef typename itk::Image< TPixelType, 3 > MovingImage3DType; typename FixedImage3DType::Pointer fixedImage3D; mitk::CastToItkImage(m_FixedImage, fixedImage3D); typename MovingImage3DType::Pointer movingImage3D; mitk::CastToItkImage(m_MovingImage, movingImage3D); typename itk::VersorTransform< double >::Pointer transformPointer = itk::VersorTransform< double >::New(); transformPointer->SetIdentity(); typedef typename itk::VersorTransform< double > VersorTransformType; if (m_Controls.m_CenterForInitializerVersor->isChecked()) { typedef typename itk::CenteredTransformInitializer<VersorTransformType, FixedImage3DType, MovingImage3DType> TransformInitializerType; typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); transformInitializer->SetFixedImage( fixedImage3D ); transformInitializer->SetMovingImage( movingImage3D ); transformInitializer->SetTransform( transformPointer ); if (m_Controls.m_MomentsVersor->isChecked()) { transformInitializer->MomentsOn(); } else { transformInitializer->GeometryOn(); } transformInitializer->InitializeTransform(); } m_CenterX = transformPointer->GetCenter()[0]; m_CenterY = transformPointer->GetCenter()[1]; m_CenterZ = transformPointer->GetCenter()[2]; m_TransformObject = transformPointer.GetPointer(); return transformPointer.GetPointer(); } return NULL; }