itk::Object::Pointer QmitkCenteredRigid2DTransformView::GetTransform2( itk::Image<TPixelType, VImageDimension> *itkImage1) { if (VImageDimension == 2) { typedef typename itk::Image<TPixelType, 2> FixedImage2DType; typedef typename itk::Image<TPixelType, 2> MovingImage2DType; // the fixedImage is the input parameter (fix for Bug #14626) typename FixedImage2DType::Pointer fixedImage2D = itkImage1; // the movingImage type is known, use the ImageToItk filter (fix for Bug #14626) typename mitk::ImageToItk<MovingImage2DType>::Pointer movingImageToItk = mitk::ImageToItk<MovingImage2DType>::New(); movingImageToItk->SetInput(m_MovingImage); movingImageToItk->Update(); typename MovingImage2DType::Pointer movingImage2D = movingImageToItk->GetOutput(); typename itk::CenteredRigid2DTransform<double>::Pointer transformPointer = itk::CenteredRigid2DTransform<double>::New(); transformPointer->SetIdentity(); if (m_Controls.m_CenterForInitializerCenteredRigid2D->isChecked()) { typedef typename itk::CenteredRigid2DTransform<double> CenteredRigid2DTransformType; typedef typename itk::CenteredTransformInitializer<CenteredRigid2DTransformType, FixedImage2DType, MovingImage2DType> TransformInitializerType; typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); transformInitializer->SetFixedImage(fixedImage2D); transformInitializer->SetMovingImage(movingImage2D); transformInitializer->SetTransform(transformPointer); if (m_Controls.m_MomentsCenteredRigid2D->isChecked()) { transformInitializer->MomentsOn(); } else { transformInitializer->GeometryOn(); } transformInitializer->InitializeTransform(); } transformPointer->SetAngle(m_Controls.m_AngleCenteredRigid2D->text().toFloat()); m_CenterX = transformPointer->GetCenter()[0]; m_CenterY = transformPointer->GetCenter()[1]; m_TransformObject = transformPointer.GetPointer(); return transformPointer.GetPointer(); } return nullptr; }
itk::Object::Pointer QmitkCenteredRigid2DTransformView::GetTransform2(itk::Image<TPixelType, VImageDimension>* /* itkImage1 */) { if (VImageDimension == 2) { typedef typename itk::Image< TPixelType, 2 > FixedImage2DType; typedef typename itk::Image< TPixelType, 2 > MovingImage2DType; typename FixedImage2DType::Pointer fixedImage2D; mitk::CastToItkImage(m_FixedImage, fixedImage2D); typename MovingImage2DType::Pointer movingImage2D; mitk::CastToItkImage(m_MovingImage, movingImage2D); typename itk::CenteredRigid2DTransform< double >::Pointer transformPointer = itk::CenteredRigid2DTransform< double >::New(); transformPointer->SetIdentity(); if (m_Controls.m_CenterForInitializerCenteredRigid2D->isChecked()) { typedef typename itk::CenteredRigid2DTransform< double > CenteredRigid2DTransformType; typedef typename itk::CenteredTransformInitializer<CenteredRigid2DTransformType, FixedImage2DType, MovingImage2DType> TransformInitializerType; typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); transformInitializer->SetFixedImage( fixedImage2D ); transformInitializer->SetMovingImage( movingImage2D ); transformInitializer->SetTransform( transformPointer ); if (m_Controls.m_MomentsCenteredRigid2D->isChecked()) { transformInitializer->MomentsOn(); } else { transformInitializer->GeometryOn(); } transformInitializer->InitializeTransform(); } transformPointer->SetAngle( m_Controls.m_AngleCenteredRigid2D->text().toFloat() ); m_CenterX = transformPointer->GetCenter()[0]; m_CenterY = transformPointer->GetCenter()[1]; m_TransformObject = transformPointer.GetPointer(); return transformPointer.GetPointer(); } return NULL; }