itk::Object::Pointer QmitkVersorRigid3DTransformView::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::VersorRigid3DTransform< double >::Pointer transformPointer = itk::VersorRigid3DTransform< double >::New(); transformPointer->SetIdentity(); typedef typename itk::VersorRigid3DTransform< double > VersorRigid3DTransformType; if (m_Controls.m_CenterForInitializerVersorRigid3D->isChecked()) { typedef typename itk::CenteredTransformInitializer<VersorRigid3DTransformType, FixedImage3DType, MovingImage3DType> TransformInitializerType; typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); transformInitializer->SetFixedImage( fixedImage ); transformInitializer->SetMovingImage( movingImage ); transformInitializer->SetTransform( transformPointer ); if (m_Controls.m_MomentsVersorRigid3D->isChecked()) { transformInitializer->MomentsOn(); } else { transformInitializer->GeometryOn(); } transformInitializer->InitializeTransform(); } typedef VersorRigid3DTransformType::VersorType VersorType; typedef VersorType::VectorType VectorType; VersorType rotation; VectorType axis; axis[0] = 0.0; axis[1] = 0.0; axis[2] = 1.0; const double angle = 0; rotation.Set( axis, angle ); transformPointer->SetRotation( rotation ); m_CenterX = transformPointer->GetCenter()[0]; m_CenterY = transformPointer->GetCenter()[1]; m_CenterZ = transformPointer->GetCenter()[2]; m_TransformObject = transformPointer.GetPointer(); return transformPointer.GetPointer(); } return NULL; }
itk::Object::Pointer QmitkVersorRigid3DTransformView::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::VersorRigid3DTransform< double >::Pointer transformPointer = itk::VersorRigid3DTransform< double >::New(); transformPointer->SetIdentity(); typedef typename itk::VersorRigid3DTransform< double > VersorRigid3DTransformType; if (m_Controls.m_CenterForInitializerVersorRigid3D->isChecked()) { typedef typename itk::CenteredTransformInitializer<VersorRigid3DTransformType, FixedImage3DType, MovingImage3DType> TransformInitializerType; typename TransformInitializerType::Pointer transformInitializer = TransformInitializerType::New(); transformInitializer->SetFixedImage( fixedImage3D ); transformInitializer->SetMovingImage( movingImage3D ); transformInitializer->SetTransform( transformPointer ); if (m_Controls.m_MomentsVersorRigid3D->isChecked()) { transformInitializer->MomentsOn(); } else { transformInitializer->GeometryOn(); } transformInitializer->InitializeTransform(); } typedef VersorRigid3DTransformType::VersorType VersorType; typedef VersorType::VectorType VectorType; VersorType rotation; VectorType axis; axis[0] = 0.0; axis[1] = 0.0; axis[2] = 1.0; const double angle = 0; rotation.Set( axis, angle ); transformPointer->SetRotation( rotation ); m_CenterX = transformPointer->GetCenter()[0]; m_CenterY = transformPointer->GetCenter()[1]; m_CenterZ = transformPointer->GetCenter()[2]; m_TransformObject = transformPointer.GetPointer(); return transformPointer.GetPointer(); } return NULL; }