void testTrimmedAicpregistration() { const double expFRE = 4.8912; const double expTRE = 0.0484215; mitk::AnisotropicIterativeClosestPointRegistration::Pointer aICP = mitk::AnisotropicIterativeClosestPointRegistration::New(); // Swap X and Y for partial overlapping registration aICP->SetMovingSurface(m_MovingSurface); aICP->SetFixedSurface(m_FixedSurface); aICP->SetCovarianceMatricesMovingSurface(m_SigmasMovingSurface); aICP->SetCovarianceMatricesFixedSurface(m_SigmasFixedSurface); aICP->SetFRENormalizationFactor(m_FRENormalizationFactor); aICP->SetThreshold(0.000001); aICP->SetTrimmFactor(0.50); // run the algorithm aICP->Update(); MITK_INFO << "FRE: Expected: " << expFRE << ", computed: " << aICP->GetFRE(); CPPUNIT_ASSERT_MESSAGE("mitkAnisotropicIterativeClosestPointRegistrationTest:AicpRegistration Test FRE", mitk::Equal(aICP->GetFRE(),expFRE,0.01)); // compute the target registration Error const double tre = mitk::AnisotropicRegistrationCommon::ComputeTargetRegistrationError( m_TargetsMovingSurface.GetPointer(), m_TargetsFixedSurface.GetPointer(), aICP->GetRotation(), aICP->GetTranslation() ); MITK_INFO << "TRE: Expected: " << expTRE << ", computed: " << tre; CPPUNIT_ASSERT_MESSAGE("mitkAnisotropicIterativeClosestPointRegistrationTest:AicpRegistration Test TRE", mitk::Equal(tre,expTRE,0.01)); }
void testAicpRegistration() { const double expFRE = 27.5799; const double expTRE = 1.68835; mitk::AnisotropicIterativeClosestPointRegistration::Pointer aICP = mitk::AnisotropicIterativeClosestPointRegistration::New(); // set up parameters aICP->SetMovingSurface(m_MovingSurface); aICP->SetFixedSurface(m_FixedSurface); aICP->SetCovarianceMatricesMovingSurface(m_SigmasMovingSurface); aICP->SetCovarianceMatricesFixedSurface(m_SigmasFixedSurface); aICP->SetFRENormalizationFactor(m_FRENormalizationFactor); aICP->SetThreshold(0.000001); // run the algorithm aICP->Update(); MITK_INFO << "FRE: Expected: " << expFRE << ", computed: " << aICP->GetFRE(); CPPUNIT_ASSERT_MESSAGE("mitkAnisotropicIterativeClosestPointRegistrationTest:AicpRegistration Test FRE", mitk::Equal(aICP->GetFRE(),expFRE,0.0001)); // compute the target registration Error const double tre = mitk::AnisotropicRegistrationCommon::ComputeTargetRegistrationError( m_TargetsMovingSurface.GetPointer(), m_TargetsFixedSurface.GetPointer(), aICP->GetRotation(), aICP->GetTranslation() ); // MITK_INFO << "R:\n" << aICP->GetRotation() << "T: "<< aICP->GetTranslation(); MITK_INFO << "TRE: Expected: " << expTRE << ", computed: " << tre; CPPUNIT_ASSERT_MESSAGE("mitkAnisotropicIterativeClosestPointRegistrationTest:AicpRegistration Test TRE", mitk::Equal(tre,expTRE,0.00001)); }
void PointSetLoadAndCompareTest() { try { mitk::PointSet::Pointer pointSet = mitk::IOUtil::LoadPointSet(m_FilePath); MITK_TEST_CONDITION(pointSet.IsNotNull(), "Testing if the loaded Data are NULL" ); bool identical(true); PointSetCompare(pointSet.GetPointer(), m_SavedPointSet.GetPointer(), identical); } catch (std::exception& e) { MITK_ERROR << "Error during pointset creation: " << e.what(); } }