void QmitkTestPluginView::testItkDeformableSimplexModel() { cout << "Test the deformable simplex model:" << endl; const unsigned int Dimension = 3; typedef double PixelType; typedef itk::Image ImageType; typedef itk::Image< unsigned char, Dimension > BinaryImageType; typedef itk::Mesh MeshType; typedef itk::SimplexMesh SimplexMeshType; typedef itk::CovariantVector< double, Dimension > GradientPixelType; typedef itk::Image< GradientPixelType, Dimension > GradientImageType; typedef itk::GradientRecursiveGaussianImageFilter GradientFilterType; typedef itk::GradientMagnitudeRecursiveGaussianImageFilter GradientMagnitudeFilterType; typedef itk::BinaryMask3DMeshSource< BinaryImageType, MeshType > MeshSourceType; typedef itk::TriangleMeshToSimplexMeshFilter TriangleToSimplexMeshFilterType; typedef itk::DeformableSimplexMesh3DGradientConstraintForceFilter DeformableModelFilterType; typedef itk::ImageFileReader< ImageType > ReaderType; typedef itk::ImageFileReader< BinaryImageType > BinaryReaderType; ReaderType::Pointer imageReader = ReaderType::New(); BinaryReaderType::Pointer maskReader = BinaryReaderType::New(); imageReader->SetFileName( "Y:\\Data\\modified\\im7.vtk" ); maskReader->SetFileName( "Y:\\Data\\modified\\seg.vtk" ); GradientMagnitudeFilterType::Pointer gradientMagnitudeFilter = GradientMagnitudeFilterType::New(); gradientMagnitudeFilter->SetInput( imageReader->GetOutput() ); gradientMagnitudeFilter->SetSigma( 1.0 ); GradientFilterType::Pointer gradientMapFilter = GradientFilterType::New(); gradientMapFilter->SetInput( gradientMagnitudeFilter->GetOutput() ); gradientMapFilter->SetSigma( 1.0 ); try { gradientMapFilter->Update(); } catch( itk::ExceptionObject & e ) { std::cerr << "Exception caught while updating gradientMapFilter " << std::endl; std::cerr << e << std::endl; return; } std::cout << "The gradient map was created!" << std::endl; MeshSourceType::Pointer meshSource = MeshSourceType::New(); //BinaryImageType::Pointer mask = maskReader->GetOutput(); meshSource->SetInput( maskReader->GetOutput() ); meshSource->SetObjectValue( 1 ); std::cout << "Creating mesh..." << std::endl; try { meshSource->Update(); } catch( itk::ExceptionObject & excep ) { std::cerr << "Exception caught while creating the start mesh!" << std::endl; std::cerr << excep << std::endl; return; } TriangleToSimplexMeshFilterType::Pointer triangleToSimplexFilter = TriangleToSimplexMeshFilterType::New(); triangleToSimplexFilter->SetInput( meshSource->GetOutput() ); std::cout << "Converting mesh to simplex mesh..." << std::endl; try { triangleToSimplexFilter->Update(); } catch( itk::ExceptionObject & excep ) { std::cerr << "Exception caught while converting the start mesh to a simplex mesh!" << std::endl; std::cerr << excep << std::endl; return; } DeformableModelFilterType::Pointer deformableModelFilter = DeformableModelFilterType::New(); deformableModelFilter->SetGradient( gradientMapFilter->GetOutput() ); deformableModelFilter->SetInput( triangleToSimplexFilter->GetOutput() ); std::cout << "Updating the deformable model..." << std::endl; try { deformableModelFilter->Update(); } catch( itk::ExceptionObject & excep ) { std::cerr << "Exception caught while updating the deformable model!" << std::endl; std::cerr << excep << std::endl; return; } std::cout << "Done." << std::endl; }