diff --git a/Modules/AlgorithmsExt/test/mitkAnisotropicIterativeClosestPointRegistrationTest.cpp b/Modules/AlgorithmsExt/test/mitkAnisotropicIterativeClosestPointRegistrationTest.cpp
index ffa9a00afa..c916881b8e 100644
--- a/Modules/AlgorithmsExt/test/mitkAnisotropicIterativeClosestPointRegistrationTest.cpp
+++ b/Modules/AlgorithmsExt/test/mitkAnisotropicIterativeClosestPointRegistrationTest.cpp
@@ -1,166 +1,168 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #include <mitkIOUtil.h>
 #include <mitkSurface.h>
 #include <mitkTestFixture.h>
 #include <mitkTestingMacros.h>
 #include <vtkCleanPolyData.h>
+#include <vtkTransformPolyDataFilter.h>
+#include <vtkTransform.h>
 
 #include "mitkAnisotropicIterativeClosestPointRegistration.h"
 #include "mitkAnisotropicRegistrationCommon.h"
 #include "mitkCovarianceMatrixCalculator.h"
 
 /**
  * Test to verify the results of the A-ICP registration.
  * The test runs the standard A-ICP and the trimmed variant.
  */
 class mitkAnisotropicIterativeClosestPointRegistrationTestSuite : public mitk::TestFixture
 {
   CPPUNIT_TEST_SUITE(mitkAnisotropicIterativeClosestPointRegistrationTestSuite);
   MITK_TEST(testAicpRegistration);
   MITK_TEST(testTrimmedAicpregistration);
   CPPUNIT_TEST_SUITE_END();
 
 private:
   typedef itk::Matrix<double, 3, 3> Matrix3x3;
   typedef itk::Vector<double, 3> Vector3;
   typedef std::vector<Matrix3x3> CovarianceMatrixList;
 
   mitk::Surface::Pointer m_MovingSurface;
   mitk::Surface::Pointer m_FixedSurface;
 
   mitk::PointSet::Pointer m_TargetsMovingSurface;
   mitk::PointSet::Pointer m_TargetsFixedSurface;
 
   CovarianceMatrixList m_SigmasMovingSurface;
   CovarianceMatrixList m_SigmasFixedSurface;
 
   double m_FRENormalizationFactor;
 
 public:
   /**
    * @brief Setup Always call this method before each Test-case to ensure
    * correct and new intialization of the used members for a new test case.
    * (If the members are not used in a test, the method does not need to be called).
    */
   void setUp() override
   {
     mitk::CovarianceMatrixCalculator::Pointer matrixCalculator = mitk::CovarianceMatrixCalculator::New();
 
-    m_MovingSurface = mitk::IOUtil::Load<mitk::Surface>(GetTestDataFilePath("AICPRegistration/head_green.stl"));
-    m_FixedSurface = mitk::IOUtil::Load<mitk::Surface>(GetTestDataFilePath("AICPRegistration/head_red.stl"));
+    m_MovingSurface = mitk::IOUtil::Load<mitk::Surface>(GetTestDataFilePath("AICPRegistration/head_green.vtp"));
+    m_FixedSurface = mitk::IOUtil::Load<mitk::Surface>(GetTestDataFilePath("AICPRegistration/head_red.vtp"));
 
     m_TargetsMovingSurface = mitk::IOUtil::Load<mitk::PointSet>(GetTestDataFilePath("AICPRegistration/targets_head_green.mps"));
     m_TargetsFixedSurface = mitk::IOUtil::Load<mitk::PointSet>(GetTestDataFilePath("AICPRegistration/targets_head_red.mps"));
 
     // compute covariance matrices
     matrixCalculator->SetInputSurface(m_MovingSurface);
     matrixCalculator->ComputeCovarianceMatrices();
     m_SigmasMovingSurface = matrixCalculator->GetCovarianceMatrices();
     const double meanVarX = matrixCalculator->GetMeanVariance();
 
     matrixCalculator->SetInputSurface(m_FixedSurface);
     matrixCalculator->ComputeCovarianceMatrices();
     m_SigmasFixedSurface = matrixCalculator->GetCovarianceMatrices();
     const double meanVarY = matrixCalculator->GetMeanVariance();
 
     m_FRENormalizationFactor = sqrt(meanVarX + meanVarY);
   }
 
   void tearDown() override
   {
     m_MovingSurface = nullptr;
     m_FixedSurface = nullptr;
 
     m_TargetsMovingSurface = nullptr;
     m_TargetsFixedSurface = nullptr;
 
     m_SigmasMovingSurface.clear();
     m_SigmasFixedSurface.clear();
   }
 
   void testAicpRegistration()
   {
-    const double expFRE = 27.5799;
-    const double expTRE = 1.68835;
+    const double expFRE = 26.3453;
+    const double expTRE = 3.8707;
     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 testTrimmedAicpregistration()
   {
-    const double expFRE = 4.8912;
-    const double expTRE = 0.0484215;
+    const double expFRE = 18.5469;
+    const double expTRE = 5.5871;
 
     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);
+    aICP->SetTrimmFactor(0.80);
 
     // 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));
   }
 };
 
 MITK_TEST_SUITE_REGISTRATION(mitkAnisotropicIterativeClosestPointRegistration)
diff --git a/Modules/Core/test/mitkGeometry3DTest.cpp b/Modules/Core/test/mitkGeometry3DTest.cpp
index 5e93e0064c..ae6f8592be 100644
--- a/Modules/Core/test/mitkGeometry3DTest.cpp
+++ b/Modules/Core/test/mitkGeometry3DTest.cpp
@@ -1,622 +1,622 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #include "mitkGeometry3D.h"
 
 #include <vnl/vnl_quaternion.h>
 #include <vnl/vnl_quaternion.hxx>
 
 #include "mitkInteractionConst.h"
 #include "mitkRotationOperation.h"
 #include <mitkImageCast.h>
 #include <mitkMatrixConvert.h>
 
 #include "mitkTestingMacros.h"
 #include <fstream>
 #include <mitkNumericTypes.h>
 
 bool testGetAxisVectorVariants(mitk::Geometry3D *geometry)
 {
   int direction;
   for (direction = 0; direction < 3; ++direction)
   {
     mitk::Vector3D frontToBack(0.);
     switch (direction)
     {
       case 0:
         frontToBack = geometry->GetCornerPoint(false, false, false) - geometry->GetCornerPoint(true, false, false);
         break; // 7-3
       case 1:
         frontToBack = geometry->GetCornerPoint(false, false, false) - geometry->GetCornerPoint(false, true, false);
         break; // 7-5
       case 2:
         frontToBack = geometry->GetCornerPoint(false, false, false) - geometry->GetCornerPoint(false, false, true);
         break; // 7-2
     }
     std::cout << "Testing GetAxisVector(int) vs GetAxisVector(bool, bool, bool): ";
     if (mitk::Equal(geometry->GetAxisVector(direction), frontToBack) == false)
     {
       std::cout << "[FAILED]" << std::endl;
       return false;
     }
     std::cout << "[PASSED]" << std::endl;
   }
   return true;
 }
 
 bool testGetAxisVectorExtent(mitk::Geometry3D *geometry)
 {
   int direction;
   for (direction = 0; direction < 3; ++direction)
   {
     if (mitk::Equal(geometry->GetAxisVector(direction).GetNorm(), geometry->GetExtentInMM(direction)) == false)
     {
       std::cout << "[FAILED]" << std::endl;
       return false;
     }
     std::cout << "[PASSED]" << std::endl;
   }
   return true;
 }
 
 // a part of the test requires axis-parallel coordinates
 int testIndexAndWorldConsistency(mitk::Geometry3D *geometry3d)
 {
   MITK_TEST_OUTPUT(<< "Testing consistency of index and world coordinate systems: ");
   mitk::Point3D origin = geometry3d->GetOrigin();
   mitk::Point3D dummy;
 
   MITK_TEST_OUTPUT(<< " Testing index->world->index conversion consistency");
   geometry3d->WorldToIndex(origin, dummy);
   geometry3d->IndexToWorld(dummy, dummy);
   MITK_TEST_CONDITION_REQUIRED(dummy == origin, "");
 
   MITK_TEST_OUTPUT(<< " Testing WorldToIndex(origin, mitk::Point3D)==(0,0,0)");
   mitk::Point3D globalOrigin;
   mitk::FillVector3D(globalOrigin, 0, 0, 0);
 
   mitk::Point3D originContinuousIndex;
   geometry3d->WorldToIndex(origin, originContinuousIndex);
   MITK_TEST_CONDITION_REQUIRED(originContinuousIndex == globalOrigin, "");
 
   MITK_TEST_OUTPUT(<< " Testing WorldToIndex(origin, itk::Index)==(0,0,0)");
   itk::Index<3> itkindex;
   geometry3d->WorldToIndex(origin, itkindex);
   itk::Index<3> globalOriginIndex;
   mitk::vtk2itk(globalOrigin, globalOriginIndex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == globalOriginIndex, "");
 
   MITK_TEST_OUTPUT(<< " Testing WorldToIndex(origin-0.5*spacing, itk::Index)==(0,0,0)");
   mitk::Vector3D halfSpacingStep = geometry3d->GetSpacing() * 0.5;
   mitk::Matrix3D rotation;
   mitk::Point3D originOffCenter = origin - halfSpacingStep;
   geometry3d->WorldToIndex(originOffCenter, itkindex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == globalOriginIndex, "");
 
   MITK_TEST_OUTPUT(<< " Testing WorldToIndex(origin+0.5*spacing-eps, itk::Index)==(0,0,0)");
   originOffCenter = origin + halfSpacingStep;
   originOffCenter -= 0.0001;
   geometry3d->WorldToIndex(originOffCenter, itkindex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == globalOriginIndex, "");
 
   MITK_TEST_OUTPUT(<< " Testing WorldToIndex(origin+0.5*spacing, itk::Index)==(1,1,1)");
   originOffCenter = origin + halfSpacingStep;
   itk::Index<3> global111;
   mitk::FillVector3D(global111, 1, 1, 1);
   geometry3d->WorldToIndex(originOffCenter, itkindex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == global111, "");
 
   MITK_TEST_OUTPUT(<< " Testing WorldToIndex(GetCenter())==BoundingBox.GetCenter: ");
   mitk::Point3D center = geometry3d->GetCenter();
   mitk::Point3D centerContIndex;
   geometry3d->WorldToIndex(center, centerContIndex);
   mitk::BoundingBox::ConstPointer boundingBox = geometry3d->GetBoundingBox();
   mitk::BoundingBox::PointType centerBounds = boundingBox->GetCenter();
   // itk assumes corner based geometry. If our geometry is center based (imageGoe == true), everything needs to be
   // shifted
   if (geometry3d->GetImageGeometry())
   {
     centerBounds[0] -= 0.5;
     centerBounds[1] -= 0.5;
     centerBounds[2] -= 0.5;
   }
   MITK_TEST_CONDITION_REQUIRED(mitk::Equal(centerContIndex, centerBounds), "");
 
   MITK_TEST_OUTPUT(<< " Testing GetCenter()==IndexToWorld(BoundingBox.GetCenter): ");
   center = geometry3d->GetCenter();
   mitk::Point3D centerBoundsInWorldCoords;
   geometry3d->IndexToWorld(centerBounds, centerBoundsInWorldCoords);
   MITK_TEST_CONDITION_REQUIRED(mitk::Equal(center, centerBoundsInWorldCoords), "");
 
   return EXIT_SUCCESS;
 }
 
 int testIndexAndWorldConsistencyForVectors(mitk::Geometry3D *geometry3d)
 {
   MITK_TEST_OUTPUT(<< "Testing consistency of index and world coordinate systems for vectors: ");
   mitk::Vector3D xAxisMM = geometry3d->GetAxisVector(0);
   mitk::Vector3D xAxisContinuousIndex;
   mitk::Vector3D xAxisContinuousIndexDeprecated;
 
   mitk::Point3D p, pIndex, origin;
   origin = geometry3d->GetOrigin();
   p[0] = xAxisMM[0];
   p[1] = xAxisMM[1];
   p[2] = xAxisMM[2];
 
   geometry3d->WorldToIndex(p, pIndex);
 
   geometry3d->WorldToIndex(xAxisMM, xAxisContinuousIndexDeprecated);
   geometry3d->WorldToIndex(xAxisMM, xAxisContinuousIndex);
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[0] == pIndex[0], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[1] == pIndex[1], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[2] == pIndex[2], "");
 
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[0] == xAxisContinuousIndexDeprecated[0], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[1] == xAxisContinuousIndexDeprecated[1], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[2] == xAxisContinuousIndexDeprecated[2], "");
 
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndexDeprecated[0] == pIndex[0], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndexDeprecated[1] == pIndex[1], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndexDeprecated[2] == pIndex[2], "");
 
   geometry3d->IndexToWorld(xAxisContinuousIndex, xAxisContinuousIndex);
   geometry3d->IndexToWorld(xAxisContinuousIndexDeprecated, xAxisContinuousIndexDeprecated);
   geometry3d->IndexToWorld(pIndex, p);
 
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex == xAxisMM, "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[0] == p[0], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[1] == p[1], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndex[2] == p[2], "");
 
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndexDeprecated == xAxisMM, "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndexDeprecated[0] == p[0], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndexDeprecated[1] == p[1], "");
   MITK_TEST_CONDITION_REQUIRED(xAxisContinuousIndexDeprecated[2] == p[2], "");
 
   return EXIT_SUCCESS;
 }
 
 int testIndexAndWorldConsistencyForIndex(mitk::Geometry3D *geometry3d)
 {
   MITK_TEST_OUTPUT(<< "Testing consistency of index and world coordinate systems: ");
 
   // creating testing data
   itk::Index<4> itkIndex4, itkIndex4b;
   itk::Index<3> itkIndex3, itkIndex3b;
   itk::Index<2> itkIndex2, itkIndex2b;
   itk::Index<3> mitkIndex, mitkIndexb;
 
   itkIndex4[0] = itkIndex4[1] = itkIndex4[2] = itkIndex4[3] = 4;
   itkIndex3[0] = itkIndex3[1] = itkIndex3[2] = 6;
   itkIndex2[0] = itkIndex2[1] = 2;
   mitkIndex[0] = mitkIndex[1] = mitkIndex[2] = 13;
 
   // check for constistency
   mitk::Point3D point;
   geometry3d->IndexToWorld(itkIndex2, point);
   geometry3d->WorldToIndex(point, itkIndex2b);
 
   MITK_TEST_CONDITION_REQUIRED(((itkIndex2b[0] == itkIndex2[0]) && (itkIndex2b[1] == itkIndex2[1])),
                                "Testing itk::index<2> for IndexToWorld/WorldToIndex consistency");
 
   geometry3d->IndexToWorld(itkIndex3, point);
   geometry3d->WorldToIndex(point, itkIndex3b);
 
   MITK_TEST_CONDITION_REQUIRED(
     ((itkIndex3b[0] == itkIndex3[0]) && (itkIndex3b[1] == itkIndex3[1]) && (itkIndex3b[2] == itkIndex3[2])),
     "Testing itk::index<3> for IndexToWorld/WorldToIndex consistency");
 
   geometry3d->IndexToWorld(itkIndex4, point);
   geometry3d->WorldToIndex(point, itkIndex4b);
 
   MITK_TEST_CONDITION_REQUIRED(((itkIndex4b[0] == itkIndex4[0]) && (itkIndex4b[1] == itkIndex4[1]) &&
                                 (itkIndex4b[2] == itkIndex4[2]) && (itkIndex4b[3] == 0)),
                                "Testing itk::index<3> for IndexToWorld/WorldToIndex consistency");
 
   geometry3d->IndexToWorld(mitkIndex, point);
   geometry3d->WorldToIndex(point, mitkIndexb);
 
   MITK_TEST_CONDITION_REQUIRED(
     ((mitkIndexb[0] == mitkIndex[0]) && (mitkIndexb[1] == mitkIndex[1]) && (mitkIndexb[2] == mitkIndex[2])),
     "Testing mitk::Index for IndexToWorld/WorldToIndex consistency");
 
   return EXIT_SUCCESS;
 }
 
 #include <itkImage.h>
 
 int testItkImageIsCenterBased()
 {
   MITK_TEST_OUTPUT(<< "Testing whether itk::Image coordinates are center-based.");
   typedef itk::Image<int, 3> ItkIntImage3D;
   ItkIntImage3D::Pointer itkintimage = ItkIntImage3D::New();
   ItkIntImage3D::SizeType size;
   size.Fill(10);
   mitk::Point3D origin;
   mitk::FillVector3D(origin, 2, 3, 7);
   itkintimage->Initialize();
   itkintimage->SetRegions(size);
   itkintimage->SetOrigin(origin);
   std::cout << "[PASSED]" << std::endl;
 
   MITK_TEST_OUTPUT(<< " Testing itk::Image::TransformPhysicalPointToContinuousIndex(origin)==(0,0,0)");
   mitk::Point3D globalOrigin;
   mitk::FillVector3D(globalOrigin, 0, 0, 0);
 
   itk::ContinuousIndex<mitk::ScalarType, 3> originContinuousIndex;
   itkintimage->TransformPhysicalPointToContinuousIndex(origin, originContinuousIndex);
   MITK_TEST_CONDITION_REQUIRED(originContinuousIndex == globalOrigin, "");
 
   MITK_TEST_OUTPUT(<< " Testing itk::Image::TransformPhysicalPointToIndex(origin)==(0,0,0)");
   itk::Index<3> itkindex;
   itkintimage->TransformPhysicalPointToIndex(origin, itkindex);
   itk::Index<3> globalOriginIndex;
   mitk::vtk2itk(globalOrigin, globalOriginIndex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == globalOriginIndex, "");
 
   MITK_TEST_OUTPUT(<< " Testing itk::Image::TransformPhysicalPointToIndex(origin-0.5*spacing)==(0,0,0)");
   mitk::Vector3D halfSpacingStep = itkintimage->GetSpacing() * 0.5;
   mitk::Matrix3D rotation;
   mitk::Point3D originOffCenter = origin - halfSpacingStep;
   itkintimage->TransformPhysicalPointToIndex(originOffCenter, itkindex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == globalOriginIndex, "");
 
   MITK_TEST_OUTPUT(
     << " Testing itk::Image::TransformPhysicalPointToIndex(origin+0.5*spacing-eps, itk::Index)==(0,0,0)");
   originOffCenter = origin + halfSpacingStep;
   originOffCenter -= 0.0001;
   itkintimage->TransformPhysicalPointToIndex(originOffCenter, itkindex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == globalOriginIndex, "");
 
   MITK_TEST_OUTPUT(<< " Testing itk::Image::TransformPhysicalPointToIndex(origin+0.5*spacing, itk::Index)==(1,1,1)");
   originOffCenter = origin + halfSpacingStep;
   itk::Index<3> global111;
   mitk::FillVector3D(global111, 1, 1, 1);
   itkintimage->TransformPhysicalPointToIndex(originOffCenter, itkindex);
   MITK_TEST_CONDITION_REQUIRED(itkindex == global111, "");
 
   MITK_TEST_OUTPUT(<< "=> Yes, itk::Image coordinates are center-based.");
 
   return EXIT_SUCCESS;
 }
 
 int testGeometry3D(bool imageGeometry)
 {
   // Build up a new image Geometry
   mitk::Geometry3D::Pointer geometry3d = mitk::Geometry3D::New();
   float bounds[] = {-10.0, 17.0, -12.0, 188.0, 13.0, 211.0};
 
   MITK_TEST_OUTPUT(<< "Initializing");
   geometry3d->Initialize();
 
   MITK_TEST_OUTPUT(<< "Setting ImageGeometry to " << imageGeometry);
   geometry3d->SetImageGeometry(imageGeometry);
 
   MITK_TEST_OUTPUT(<< "Setting bounds by SetFloatBounds(): " << bounds);
   geometry3d->SetFloatBounds(bounds);
 
   MITK_TEST_OUTPUT(<< "Testing AxisVectors");
   if (testGetAxisVectorVariants(geometry3d) == false)
     return EXIT_FAILURE;
 
   if (testGetAxisVectorExtent(geometry3d) == false)
     return EXIT_FAILURE;
 
   MITK_TEST_OUTPUT(<< "Creating an AffineTransform3D transform");
   mitk::AffineTransform3D::MatrixType matrix;
   matrix.SetIdentity();
   matrix(1, 1) = 2;
   mitk::AffineTransform3D::Pointer transform;
   transform = mitk::AffineTransform3D::New();
   transform->SetMatrix(matrix);
 
   MITK_TEST_OUTPUT(<< "Testing a SetIndexToWorldTransform");
   geometry3d->SetIndexToWorldTransform(transform);
 
   MITK_TEST_OUTPUT(<< "Testing correctness of value returned by GetSpacing");
   const mitk::Vector3D &spacing1 = geometry3d->GetSpacing();
   mitk::Vector3D expectedSpacing;
   expectedSpacing.Fill(1.0);
   expectedSpacing[1] = 2;
   if (mitk::Equal(spacing1, expectedSpacing) == false)
   {
     MITK_TEST_OUTPUT(<< " [FAILED]");
     return EXIT_FAILURE;
   }
 
   MITK_TEST_OUTPUT(<< "Testing a Compose(transform)");
   geometry3d->Compose(transform);
 
   MITK_TEST_OUTPUT(<< "Testing correctness of value returned by GetSpacing");
   const mitk::Vector3D &spacing2 = geometry3d->GetSpacing();
   expectedSpacing[1] = 4;
   if (mitk::Equal(spacing2, expectedSpacing) == false)
   {
     MITK_TEST_OUTPUT(<< " [FAILED]");
     return EXIT_FAILURE;
   }
 
   MITK_TEST_OUTPUT(<< "Testing correctness of SetSpacing");
   mitk::Vector3D newspacing;
   mitk::FillVector3D(newspacing, 1.5, 2.5, 3.5);
   geometry3d->SetSpacing(newspacing);
   const mitk::Vector3D &spacing3 = geometry3d->GetSpacing();
   if (mitk::Equal(spacing3, newspacing) == false)
   {
     MITK_TEST_OUTPUT(<< " [FAILED]");
     return EXIT_FAILURE;
   }
 
   // Seperate Test function for Index and World consistency
   testIndexAndWorldConsistency(geometry3d);
   testIndexAndWorldConsistencyForVectors(geometry3d);
   testIndexAndWorldConsistencyForIndex(geometry3d);
 
   MITK_TEST_OUTPUT(<< "Testing a rotation of the geometry");
   double angle = 35.0;
   mitk::Vector3D rotationVector;
   mitk::FillVector3D(rotationVector, 1, 0, 0);
   mitk::Point3D center = geometry3d->GetCenter();
   auto op = new mitk::RotationOperation(mitk::OpROTATE, center, rotationVector, angle);
   geometry3d->ExecuteOperation(op);
 
   MITK_TEST_OUTPUT(<< "Testing mitk::GetRotation() and success of rotation");
   mitk::Matrix3D rotation;
   mitk::GetRotation(geometry3d, rotation);
   mitk::Vector3D voxelStep = rotation * newspacing;
   mitk::Vector3D voxelStepIndex;
   geometry3d->WorldToIndex(voxelStep, voxelStepIndex);
   mitk::Vector3D expectedVoxelStepIndex;
   expectedVoxelStepIndex.Fill(1);
   MITK_TEST_CONDITION_REQUIRED(mitk::Equal(voxelStepIndex, expectedVoxelStepIndex), "");
   delete op;
   std::cout << "[PASSED]" << std::endl;
 
   MITK_TEST_OUTPUT(<< "Testing that ImageGeometry is still " << imageGeometry);
   MITK_TEST_CONDITION_REQUIRED(geometry3d->GetImageGeometry() == imageGeometry, "");
 
   // Test if the translate function moves the origin correctly.
   mitk::Point3D oldOrigin = geometry3d->GetOrigin();
 
   // use some random values for translation
   mitk::Vector3D translationVector;
   translationVector.SetElement(0, 17.5f);
   translationVector.SetElement(1, -32.3f);
   translationVector.SetElement(2, 4.0f);
   // compute ground truth
   mitk::Point3D tmpResult = geometry3d->GetOrigin() + translationVector;
   geometry3d->Translate(translationVector);
   MITK_TEST_CONDITION(mitk::Equal(geometry3d->GetOrigin(), tmpResult), "Testing if origin was translated.");
 
   translationVector *= -1; // vice versa
   geometry3d->Translate(translationVector);
 
   MITK_TEST_CONDITION(mitk::Equal(geometry3d->GetOrigin(), oldOrigin),
                       "Testing if the translation could be done vice versa.");
 
   return EXIT_SUCCESS;
 }
 
 int testGeometryAfterCasting()
 {
   // Epsilon. Allowed difference for rotationvalue
   float eps = 0.0001;
 
   // Cast ITK and MITK images and see if geometry stays
-  typedef itk::Image<double, 2> Image2DType;
-  typedef itk::Image<double, 3> Image3DType;
+  typedef itk::Image<char, 2> Image2DType;
+  typedef itk::Image<char, 3> Image3DType;
 
   // Create 3D ITK Image from Scratch, cast to 3D MITK image, compare Geometries
   Image3DType::Pointer image3DItk = Image3DType::New();
   Image3DType::RegionType myRegion;
   Image3DType::SizeType mySize;
   Image3DType::IndexType myIndex;
   Image3DType::SpacingType mySpacing;
   Image3DType::DirectionType myDirection, rotMatrixX, rotMatrixY, rotMatrixZ;
   mySpacing[0] = 31;
   mySpacing[1] = 0.1;
   mySpacing[2] = 2.9;
   myIndex[0] = -15;
   myIndex[1] = 15;
   myIndex[2] = 12;
   mySize[0] = 10;
   mySize[1] = 2;
-  mySize[2] = 555;
+  mySize[2] = 5;
   myRegion.SetSize(mySize);
   myRegion.SetIndex(myIndex);
   image3DItk->SetSpacing(mySpacing);
   image3DItk->SetRegions(myRegion);
   image3DItk->Allocate();
   image3DItk->FillBuffer(0);
 
   myDirection.SetIdentity();
   rotMatrixX.SetIdentity();
   rotMatrixY.SetIdentity();
   rotMatrixZ.SetIdentity();
 
   mitk::Image::Pointer mitkImage;
 
   // direction [row] [coloum]
   MITK_TEST_OUTPUT(<< "Casting a rotated 3D ITK Image to a MITK Image and check if Geometry is still same");
-  for (double rotX = 0; rotX < (itk::Math::pi * 2); rotX += 0.4)
+  for (double rotX = 0; rotX < itk::Math::pi * 2; rotX += itk::Math::pi * 0.4)
   {
     // Set Rotation X
     rotMatrixX[1][1] = cos(rotX);
     rotMatrixX[1][2] = -sin(rotX);
     rotMatrixX[2][1] = sin(rotX);
     rotMatrixX[2][2] = cos(rotX);
 
-    for (double rotY = 0; rotY < (itk::Math::pi * 2); rotY += 0.33)
+    for (double rotY = 0; rotY < itk::Math::pi * 2; rotY += itk::Math::pi * 0.3)
     {
       // Set Rotation Y
       rotMatrixY[0][0] = cos(rotY);
       rotMatrixY[0][2] = sin(rotY);
       rotMatrixY[2][0] = -sin(rotY);
       rotMatrixY[2][2] = cos(rotY);
 
-      for (double rotZ = 0; rotZ < (itk::Math::pi * 2); rotZ += 0.5)
+      for (double rotZ = 0; rotZ < itk::Math::pi * 2; rotZ += itk::Math::pi * 0.2)
       {
         // Set Rotation Z
         rotMatrixZ[0][0] = cos(rotZ);
         rotMatrixZ[0][1] = -sin(rotZ);
         rotMatrixZ[1][0] = sin(rotZ);
         rotMatrixZ[1][1] = cos(rotZ);
 
         // Multiply matrizes
         myDirection = myDirection * rotMatrixX * rotMatrixY * rotMatrixZ;
         image3DItk->SetDirection(myDirection);
         mitk::CastToMitkImage(image3DItk, mitkImage);
         const mitk::AffineTransform3D::MatrixType &matrix =
           mitkImage->GetGeometry()->GetIndexToWorldTransform()->GetMatrix();
 
         for (int row = 0; row < 3; row++)
         {
           for (int col = 0; col < 3; col++)
           {
             double mitkValue = matrix[row][col] / mitkImage->GetGeometry()->GetSpacing()[col];
             double itkValue = myDirection[row][col];
             double diff = mitkValue - itkValue;
             // if you decrease this value, you can see that there might be QUITE high inaccuracy!!!
             if (diff > eps) // need to check, how exact it SHOULD be .. since it is NOT EXACT!
             {
               std::cout << "Had a difference of : " << diff;
               std::cout << "Error: Casting altered Geometry!";
               std::cout << "ITK Matrix:\n" << myDirection;
               std::cout << "Mitk Matrix (With Spacing):\n" << matrix;
               std::cout << "Mitk Spacing: " << mitkImage->GetGeometry()->GetSpacing();
               MITK_TEST_CONDITION_REQUIRED(false == true, "");
               return false;
             }
           }
         }
       }
     }
   }
 
   // Create 2D ITK Image from Scratch, cast to 2D MITK image, compare Geometries
   Image2DType::Pointer image2DItk = Image2DType::New();
   Image2DType::RegionType myRegion2D;
   Image2DType::SizeType mySize2D;
   Image2DType::IndexType myIndex2D;
   Image2DType::SpacingType mySpacing2D;
   Image2DType::DirectionType myDirection2D, rotMatrix;
   mySpacing2D[0] = 31;
   mySpacing2D[1] = 0.1;
   myIndex2D[0] = -15;
   myIndex2D[1] = 15;
   mySize2D[0] = 10;
   mySize2D[1] = 2;
   myRegion2D.SetSize(mySize2D);
   myRegion2D.SetIndex(myIndex2D);
   image2DItk->SetSpacing(mySpacing2D);
   image2DItk->SetRegions(myRegion2D);
   image2DItk->Allocate();
   image2DItk->FillBuffer(0);
 
   myDirection2D.SetIdentity();
   rotMatrix.SetIdentity();
 
   // direction [row] [coloum]
   MITK_TEST_OUTPUT(<< "Casting a rotated 2D ITK Image to a MITK Image and check if Geometry is still same");
-  for (double rotTheta = 0; rotTheta < (itk::Math::pi * 2); rotTheta += 0.1)
+  for (double rotTheta = 0; rotTheta < itk::Math::pi * 2; rotTheta += itk::Math::pi * 0.2)
   {
     // Set Rotation
     rotMatrix[0][0] = cos(rotTheta);
     rotMatrix[0][1] = -sin(rotTheta);
     rotMatrix[1][0] = sin(rotTheta);
     rotMatrix[1][1] = cos(rotTheta);
 
     // Multiply matrizes
     myDirection2D = myDirection2D * rotMatrix;
     image2DItk->SetDirection(myDirection2D);
     mitk::CastToMitkImage(image2DItk, mitkImage);
     const mitk::AffineTransform3D::MatrixType &matrix =
       mitkImage->GetGeometry()->GetIndexToWorldTransform()->GetMatrix();
 
     // Compare MITK and ITK matrix
     for (int row = 0; row < 3; row++)
     {
       for (int col = 0; col < 3; col++)
       {
         double mitkValue = matrix[row][col] / mitkImage->GetGeometry()->GetSpacing()[col];
         if ((row == 2) && (col == row))
         {
           if (mitkValue != 1)
           {
             MITK_TEST_OUTPUT(<< "After casting a 2D ITK to 3D MITK images, MITK matrix values for 0|2, 1|2, 2|0, 2|1 "
                                 "MUST be 0 and value for 2|2 must be 1");
             return false;
           }
         }
         else if ((row == 2) || (col == 2))
         {
           if (mitkValue != 0)
           {
             MITK_TEST_OUTPUT(<< "After casting a 2D ITK to 3D MITK images, MITK matrix values for 0|2, 1|2, 2|0, 2|1 "
                                 "MUST be 0 and value for 2|2 must be 1");
             return false;
           }
         }
         else
         {
           double itkValue = myDirection2D[row][col];
           double diff = mitkValue - itkValue;
           // if you decrease this value, you can see that there might be QUITE high inaccuracy!!!
           if (diff > eps) // need to check, how exact it SHOULD be .. since it is NOT EXACT!
           {
             std::cout << "Had a difference of : " << diff;
             std::cout << "Error: Casting altered Geometry!";
             std::cout << "ITK Matrix:\n" << myDirection2D;
             std::cout << "Mitk Matrix (With Spacing):\n" << matrix;
             std::cout << "Mitk Spacing: " << mitkImage->GetGeometry()->GetSpacing();
             MITK_TEST_CONDITION_REQUIRED(false == true, "");
             return false;
           }
         }
       }
     }
   }
 
   // THIS WAS TESTED:
   // 2D ITK -> 2D MITK,
   // 3D ITK -> 3D MITK,
 
   // Still  need to test: 2D MITK Image with ADDITIONAL INFORMATION IN MATRIX -> 2D ITK
   // 1. Possibility: 3x3 MITK matrix can be converted without loss into 2x2 ITK matrix
   // 2. Possibility: 3x3 MITK matrix can only be converted with loss into 2x2 ITK matrix
   // .. before implementing this, we wait for further development in geometry classes (e.g. Geoemtry3D::SetRotation(..))
 
   return EXIT_SUCCESS;
 }
 
 int mitkGeometry3DTest(int /*argc*/, char * /*argv*/ [])
 {
   MITK_TEST_BEGIN(mitkGeometry3DTest);
 
   int result;
 
   MITK_TEST_CONDITION_REQUIRED((result = testItkImageIsCenterBased()) == EXIT_SUCCESS, "");
 
   MITK_TEST_OUTPUT(<< "Running main part of test with ImageGeometry = false");
   MITK_TEST_CONDITION_REQUIRED((result = testGeometry3D(false)) == EXIT_SUCCESS, "");
 
   MITK_TEST_OUTPUT(<< "Running main part of test with ImageGeometry = true");
   MITK_TEST_CONDITION_REQUIRED((result = testGeometry3D(true)) == EXIT_SUCCESS, "");
 
   MITK_TEST_OUTPUT(<< "Running test to see if Casting MITK to ITK and the other way around destroys geometry");
   MITK_TEST_CONDITION_REQUIRED((result = testGeometryAfterCasting()) == EXIT_SUCCESS, "");
 
   MITK_TEST_END();
 
   return EXIT_SUCCESS;
 }
diff --git a/Modules/Core/test/mitkRotatedSlice4DTest.cpp b/Modules/Core/test/mitkRotatedSlice4DTest.cpp
index 0fdd8f5caa..474bf3f5dd 100644
--- a/Modules/Core/test/mitkRotatedSlice4DTest.cpp
+++ b/Modules/Core/test/mitkRotatedSlice4DTest.cpp
@@ -1,83 +1,84 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #include "mitkExtractSliceFilter.h"
 #include "mitkIOUtil.h"
 #include "mitkImagePixelReadAccessor.h"
 #include "mitkImageTimeSelector.h"
 #include "mitkInteractionConst.h"
 #include "mitkRotationOperation.h"
 #include "mitkTestingMacros.h"
 #include <ctime>
 
 /*
 * The mitkRotatedSlice4DTest loads a 4D image and extracts a specifically rotated slice in each time step's volume.
 */
 int mitkRotatedSlice4DTest(int, char *argv[])
 {
   MITK_TEST_BEGIN("mitkRotatedSlice4DTest");
 
   std::string filename = argv[1];
 
   // load 4D image
   mitk::Image::Pointer image4D = mitk::IOUtil::Load<mitk::Image>(filename);
   // check inputs
   if (image4D.IsNull())
   {
     MITK_INFO << "Could not load the file";
     return false;
   }
 
-  // for each time step...
-  for (unsigned int ts = 0; ts < image4D->GetTimeSteps(); ts++)
+  auto numTimeSteps = std::min(2, static_cast<int>(image4D->GetTimeSteps()));
+
+  for (int ts = 0; ts < numTimeSteps; ++ts)
   {
     mitk::ImageTimeSelector::Pointer timeSelector = mitk::ImageTimeSelector::New();
     timeSelector->SetInput(image4D);
     timeSelector->SetTimeNr(ts);
     timeSelector->Update();
     mitk::Image::Pointer image3D = timeSelector->GetOutput();
 
-    int sliceNumber = 5;
+    int sliceNumber = std::min(5, static_cast<int>(image3D->GetSlicedGeometry()->GetSlices()));
 
     mitk::PlaneGeometry::Pointer plane = mitk::PlaneGeometry::New();
     plane->InitializeStandardPlane(image3D->GetGeometry(), mitk::PlaneGeometry::Frontal, sliceNumber, true, false);
 
     // rotate about an arbitrary point and axis...
     float angle = 30;
     mitk::Point3D point;
     point.Fill(sliceNumber);
     mitk::Vector3D rotationAxis;
     rotationAxis[0] = 1;
     rotationAxis[1] = 2;
     rotationAxis[2] = 3;
     rotationAxis.Normalize();
 
     // Create Rotation Operation
     auto *op = new mitk::RotationOperation(mitk::OpROTATE, point, rotationAxis, angle);
     plane->ExecuteOperation(op);
     delete op;
 
     // Now extract
     mitk::ExtractSliceFilter::Pointer extractor = mitk::ExtractSliceFilter::New();
     extractor->SetInput(image3D);
     extractor->SetWorldGeometry(plane);
     extractor->Update();
     mitk::Image::Pointer extractedPlane;
     extractedPlane = extractor->GetOutput();
 
     std::stringstream ss;
     ss << " : Valid slice in timestep " << ts;
 
     MITK_TEST_CONDITION_REQUIRED(extractedPlane.IsNotNull(), ss.str().c_str());
   }
   MITK_TEST_END();
 }
diff --git a/Modules/IGT/Testing/mitkOpenIGTLinkTrackingDeviceTest.cpp b/Modules/IGT/Testing/mitkOpenIGTLinkTrackingDeviceTest.cpp
index 1f115abd99..21b9c1776d 100644
--- a/Modules/IGT/Testing/mitkOpenIGTLinkTrackingDeviceTest.cpp
+++ b/Modules/IGT/Testing/mitkOpenIGTLinkTrackingDeviceTest.cpp
@@ -1,83 +1,84 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 //testing headers
 #include <mitkTestingMacros.h>
 #include <mitkTestFixture.h>
 
 //headers of IGT classes releated to the tested class
 #include <mitkOpenIGTLinkTrackingDevice.h>
 
 //sleep headers
 #include <chrono>
 #include <thread>
 
 class mitkOpenIGTLinkTrackingDeviceTestSuite : public mitk::TestFixture
 {
   CPPUNIT_TEST_SUITE(mitkOpenIGTLinkTrackingDeviceTestSuite);
   MITK_TEST(TestInstantiation);
   MITK_TEST(TestSetConnectionParameters);
   MITK_TEST(TestDiscoverToolMethod);
   CPPUNIT_TEST_SUITE_END();
 
 private:
   /** Members used inside the different test methods. All members are initialized via setUp().*/
   mitk::OpenIGTLinkTrackingDevice::Pointer m_OpenIGTLinkTrackingDevice;
 
 public:
 
   /**@brief Setup Always call this method before each Test-case to ensure correct and new intialization of the used members for a new test case. (If the members are not used in a test, the method does not need to be called).*/
   void setUp() override
   {
     m_OpenIGTLinkTrackingDevice = mitk::OpenIGTLinkTrackingDevice::New();
   }
 
   void tearDown() override
   {
   }
 
   void TestInstantiation()
   {
   // let's create objects of our classes
   mitk::OpenIGTLinkTrackingDevice::Pointer testDevice = mitk::OpenIGTLinkTrackingDevice::New();
   CPPUNIT_ASSERT_MESSAGE("Testing instantiation of OpenIGTLinkTrackingDevice",testDevice.IsNotNull());
   }
 
   void TestSetConnectionParameters()
   {
     m_OpenIGTLinkTrackingDevice->SetHostname("localhost");
     m_OpenIGTLinkTrackingDevice->SetPortNumber(10);
     CPPUNIT_ASSERT_MESSAGE("Testing method SetHostname() ...", m_OpenIGTLinkTrackingDevice->GetHostname()=="localhost");
     CPPUNIT_ASSERT_MESSAGE("Testing method SetPort() ...", m_OpenIGTLinkTrackingDevice->GetPortNumber()==10);
   }
 
   void TestDiscoverToolMethod()
   {
   CPPUNIT_ASSERT_MESSAGE("Testing DiscoverTools() without initialization. (Warnings are expected)", m_OpenIGTLinkTrackingDevice->DiscoverTools()==false);
   m_OpenIGTLinkTrackingDevice->SetPortNumber(10);
   CPPUNIT_ASSERT_MESSAGE("Testing DiscoverTools() with initialization, but without existing server. (Warnings are expected)", m_OpenIGTLinkTrackingDevice->DiscoverTools()==false);
 
-  m_OpenIGTLinkTrackingDevice->SetHostname("193.174.50.103");
+  // This takes a pretty long time but it is not tested.
+  /*m_OpenIGTLinkTrackingDevice->SetHostname("193.174.50.103");
   m_OpenIGTLinkTrackingDevice->SetPortNumber(18944);
   m_OpenIGTLinkTrackingDevice->DiscoverTools(20000);
   m_OpenIGTLinkTrackingDevice->OpenConnection();
   m_OpenIGTLinkTrackingDevice->StartTracking();
 
   std::this_thread::sleep_for(std::chrono::seconds(20));
 
   m_OpenIGTLinkTrackingDevice->StopTracking();
-  m_OpenIGTLinkTrackingDevice->CloseConnection();
+  m_OpenIGTLinkTrackingDevice->CloseConnection();*/
 
   }
 
 };
 MITK_TEST_SUITE_REGISTRATION(mitkOpenIGTLinkTrackingDevice)
diff --git a/Modules/Multilabel/Testing/mitkLabelSetImageTest.cpp b/Modules/Multilabel/Testing/mitkLabelSetImageTest.cpp
index 8adf13414b..7c4d0bac5c 100644
--- a/Modules/Multilabel/Testing/mitkLabelSetImageTest.cpp
+++ b/Modules/Multilabel/Testing/mitkLabelSetImageTest.cpp
@@ -1,444 +1,435 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #include <mitkIOUtil.h>
 #include <mitkImageStatisticsHolder.h>
 #include <mitkLabelSetImage.h>
 #include <mitkTestFixture.h>
 #include <mitkTestingMacros.h>
 
 class mitkLabelSetImageTestSuite : public mitk::TestFixture
 {
   CPPUNIT_TEST_SUITE(mitkLabelSetImageTestSuite);
   MITK_TEST(TestInitialize);
   MITK_TEST(TestAddLayer);
   MITK_TEST(TestGetActiveLabelSet);
   MITK_TEST(TestGetActiveLabel);
   MITK_TEST(TestInitializeByLabeledImage);
   MITK_TEST(TestGetLabelSet);
   MITK_TEST(TestGetLabel);
   MITK_TEST(TestSetExteriorLabel);
   MITK_TEST(TestGetTotalNumberOfLabels);
   MITK_TEST(TestExistsLabel);
   MITK_TEST(TestExistsLabelSet);
   MITK_TEST(TestSetActiveLayer);
   MITK_TEST(TestRemoveLayer);
   MITK_TEST(TestRemoveLabels);
   MITK_TEST(TestMergeLabel);
-  // TODO check it these functionalities can be moved into a process object
-  //  MITK_TEST(TestMergeLabels);
-  //  MITK_TEST(TestConcatenate);
-  //  MITK_TEST(TestClearBuffer);
-  //  MITK_TEST(TestUpdateCenterOfMass);
-  //  MITK_TEST(TestGetVectorImage);
-  //  MITK_TEST(TestSetVectorImage);
-  //  MITK_TEST(TestGetLayerImage);
   CPPUNIT_TEST_SUITE_END();
 
 private:
   mitk::LabelSetImage::Pointer m_LabelSetImage;
 
 public:
   void setUp() override
   {
     // Create a new labelset image
     m_LabelSetImage = mitk::LabelSetImage::New();
     mitk::Image::Pointer regularImage = mitk::Image::New();
-    unsigned int dimensions[3] = {256, 256, 312};
-    regularImage->Initialize(mitk::MakeScalarPixelType<int>(), 3, dimensions);
+    unsigned int dimensions[3] = {2, 4, 8};
+    regularImage->Initialize(mitk::MakeScalarPixelType<char>(), 3, dimensions);
     m_LabelSetImage->Initialize(regularImage);
   }
 
   void tearDown() override
   {
     // Delete LabelSetImage
     m_LabelSetImage = nullptr;
   }
 
-  // Reduce contours with nth point
   void TestInitialize()
   {
     // LabelSet image should always has the pixel type mitk::Label::PixelType
     CPPUNIT_ASSERT_MESSAGE("LabelSetImage has wrong pixel type",
                            m_LabelSetImage->GetPixelType() == mitk::MakeScalarPixelType<mitk::Label::PixelType>());
 
     mitk::Image::Pointer regularImage = mitk::Image::New();
-    unsigned int dimensions[3] = {256, 256, 312};
-    regularImage->Initialize(mitk::MakeScalarPixelType<int>(), 3, dimensions);
+    unsigned int dimensions[3] = {2, 4, 8};
+    regularImage->Initialize(mitk::MakeScalarPixelType<char>(), 3, dimensions);
 
     mitk::BaseGeometry::Pointer regularImageGeo = regularImage->GetGeometry();
     mitk::BaseGeometry::Pointer labelImageGeo = m_LabelSetImage->GetGeometry();
     MITK_ASSERT_EQUAL(labelImageGeo, regularImageGeo, "LabelSetImage has wrong geometry");
 
     // By default one layer containing the exterior label should be added
     CPPUNIT_ASSERT_MESSAGE("Image was not correctly initialized - number of layers is not one",
                            m_LabelSetImage->GetNumberOfLayers() == 1);
     CPPUNIT_ASSERT_MESSAGE("Image was not correctly initialized - active layer has wrong ID",
                            m_LabelSetImage->GetActiveLayer() == 0);
 
     CPPUNIT_ASSERT_MESSAGE("Image was not correctly initialized - active label is not the exterior label",
                            m_LabelSetImage->GetActiveLabel()->GetValue() == 0);
   }
 
   void TestAddLayer()
   {
     CPPUNIT_ASSERT_MESSAGE("Number of layers is not zero", m_LabelSetImage->GetNumberOfLayers() == 1);
 
     m_LabelSetImage->AddLayer();
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - number of layers is not one",
                            m_LabelSetImage->GetNumberOfLayers() == 2);
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - active layer has wrong ID",
                            m_LabelSetImage->GetActiveLayer() == 1);
 
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - active label is not the exterior label",
                            m_LabelSetImage->GetActiveLabel()->GetValue() == 0);
 
     mitk::LabelSet::Pointer newlayer = mitk::LabelSet::New();
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     label1->SetValue(1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     label2->SetValue(200);
 
     newlayer->AddLabel(label1);
     newlayer->AddLabel(label2);
     newlayer->SetActiveLabel(200);
 
     unsigned int layerID = m_LabelSetImage->AddLayer(newlayer);
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - number of layers is not two",
                            m_LabelSetImage->GetNumberOfLayers() == 3);
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - active layer has wrong ID",
                            m_LabelSetImage->GetActiveLayer() == layerID);
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - active label is wrong",
                            m_LabelSetImage->GetActiveLabel(layerID)->GetValue() == 200);
   }
 
   void TestGetActiveLabelSet()
   {
     mitk::LabelSet::Pointer newlayer = mitk::LabelSet::New();
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     label1->SetValue(1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     label2->SetValue(200);
 
     newlayer->AddLabel(label1);
     newlayer->AddLabel(label2);
     newlayer->SetActiveLabel(200);
 
     unsigned int layerID = m_LabelSetImage->AddLayer(newlayer);
 
     mitk::LabelSet::Pointer activeLayer = m_LabelSetImage->GetActiveLabelSet();
 
     CPPUNIT_ASSERT_MESSAGE("Wrong layer ID was returned", layerID == 1);
     CPPUNIT_ASSERT_MESSAGE("Wrong active labelset returned", mitk::Equal(*newlayer, *activeLayer, 0.00001, true));
   }
 
   void TestGetActiveLabel()
   {
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     mitk::Label::PixelType value1 = 1;
     label1->SetValue(value1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     mitk::Label::PixelType value2 = 200;
     label2->SetValue(value2);
 
     m_LabelSetImage->GetActiveLabelSet()->AddLabel(label1);
     m_LabelSetImage->GetActiveLabelSet()->AddLabel(label2);
     m_LabelSetImage->GetActiveLabelSet()->SetActiveLabel(1);
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - active label is wrong",
                            m_LabelSetImage->GetActiveLabel()->GetValue() == value1);
     m_LabelSetImage->GetActiveLabelSet()->SetActiveLabel(value2);
     CPPUNIT_ASSERT_MESSAGE("Layer was not added correctly to image - active label is wrong",
                            m_LabelSetImage->GetActiveLabel()->GetValue() == value2);
   }
 
   void TestInitializeByLabeledImage()
   {
     mitk::Image::Pointer image =
       mitk::IOUtil::Load<mitk::Image>(GetTestDataFilePath("Multilabel/LabelSetTestInitializeImage.nrrd"));
     m_LabelSetImage->InitializeByLabeledImage(image);
     CPPUNIT_ASSERT_MESSAGE("Image - number of labels is not 6", m_LabelSetImage->GetNumberOfLabels() == 6);
   }
 
   void TestGetLabelSet()
   {
     // Test get non existing lset
     mitk::LabelSet::ConstPointer lset = m_LabelSetImage->GetLabelSet(10000);
     CPPUNIT_ASSERT_MESSAGE("Non existing labelset is not nullptr", lset.IsNull());
 
     lset = m_LabelSetImage->GetLabelSet(0);
     CPPUNIT_ASSERT_MESSAGE("Existing labelset is nullptr", lset.IsNotNull());
   }
 
   void TestGetLabel()
   {
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     mitk::Label::PixelType value1 = 1;
     label1->SetValue(value1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     mitk::Label::PixelType value2 = 200;
     label2->SetValue(value2);
 
     m_LabelSetImage->GetActiveLabelSet()->AddLabel(label1);
     m_LabelSetImage->AddLayer();
     m_LabelSetImage->GetLabelSet(1)->AddLabel(label2);
 
     CPPUNIT_ASSERT_MESSAGE("Wrong label retrieved for active layer",
                            mitk::Equal(*m_LabelSetImage->GetLabel(1), *label1, 0.0001, true));
     CPPUNIT_ASSERT_MESSAGE("Wrong label retrieved for layer 1",
                            mitk::Equal(*m_LabelSetImage->GetLabel(200, 1), *label2, 0.0001, true));
 
     // Try to get a non existing label
     mitk::Label *label3 = m_LabelSetImage->GetLabel(1000);
     CPPUNIT_ASSERT_MESSAGE("Non existing label should be nullptr", label3 == nullptr);
 
     // Try to get a label from a non existing layer
     label3 = m_LabelSetImage->GetLabel(200, 1000);
     CPPUNIT_ASSERT_MESSAGE("Label from non existing layer should be nullptr", label3 == nullptr);
   }
 
   void TestSetExteriorLabel()
   {
     mitk::Label::Pointer exteriorLabel = mitk::Label::New();
     exteriorLabel->SetName("MyExteriorSpecialLabel");
     mitk::Label::PixelType value1 = 10000;
     exteriorLabel->SetValue(value1);
 
     m_LabelSetImage->SetExteriorLabel(exteriorLabel);
     CPPUNIT_ASSERT_MESSAGE("Wrong label retrieved for layer 1",
                            mitk::Equal(*m_LabelSetImage->GetExteriorLabel(), *exteriorLabel, 0.0001, true));
 
     // Exterior label should be set automatically for each new layer
     m_LabelSetImage->AddLayer();
     CPPUNIT_ASSERT_MESSAGE("Wrong label retrieved for layer 1",
                            mitk::Equal(*m_LabelSetImage->GetLabel(10000, 1), *exteriorLabel, 0.0001, true));
   }
 
   void TestGetTotalNumberOfLabels()
   {
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     mitk::Label::PixelType value1 = 1;
     label1->SetValue(value1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     mitk::Label::PixelType value2 = 200;
     label2->SetValue(value2);
 
     m_LabelSetImage->GetActiveLabelSet()->AddLabel(label1);
     m_LabelSetImage->AddLayer();
     m_LabelSetImage->GetLabelSet(1)->AddLabel(label2);
     CPPUNIT_ASSERT_MESSAGE(
       "Wrong total number of labels",
       m_LabelSetImage->GetTotalNumberOfLabels() == 4); // added 2 labels + 2 exterior default labels
   }
 
   void TestExistsLabel()
   {
     mitk::Label::Pointer label = mitk::Label::New();
     label->SetName("Label2");
     mitk::Label::PixelType value = 200;
     label->SetValue(value);
 
     m_LabelSetImage->AddLayer();
     m_LabelSetImage->GetLabelSet(1)->AddLabel(label);
     m_LabelSetImage->SetActiveLayer(0);
     CPPUNIT_ASSERT_MESSAGE("Existing label was not found", m_LabelSetImage->ExistLabel(value) == true);
 
     CPPUNIT_ASSERT_MESSAGE("Non existing label was found", m_LabelSetImage->ExistLabel(10000) == false);
   }
 
   void TestExistsLabelSet()
   {
     // Cache active layer
     mitk::LabelSet::ConstPointer activeLayer = m_LabelSetImage->GetActiveLabelSet();
 
     // Add new layer
     mitk::LabelSet::Pointer newlayer = mitk::LabelSet::New();
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     label1->SetValue(1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     label2->SetValue(200);
 
     newlayer->AddLabel(label1);
     newlayer->AddLabel(label2);
     newlayer->SetActiveLabel(200);
 
     m_LabelSetImage->AddLayer(newlayer);
 
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(0) == true);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(1) == true);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(20) == false);
   }
 
   void TestSetActiveLayer()
   {
     // Cache active layer
     mitk::LabelSet::ConstPointer activeLayer = m_LabelSetImage->GetActiveLabelSet();
 
     // Add new layer
     mitk::LabelSet::Pointer newlayer = mitk::LabelSet::New();
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     label1->SetValue(1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     label2->SetValue(200);
 
     newlayer->AddLabel(label1);
     newlayer->AddLabel(label2);
     newlayer->SetActiveLabel(200);
 
     unsigned int layerID = m_LabelSetImage->AddLayer(newlayer);
 
     // Set initial layer as active layer
     m_LabelSetImage->SetActiveLayer(0);
     CPPUNIT_ASSERT_MESSAGE("Wrong active labelset returned",
                            mitk::Equal(*activeLayer, *m_LabelSetImage->GetActiveLabelSet(), 0.00001, true));
 
     // Set previously added layer as active layer
     m_LabelSetImage->SetActiveLayer(layerID);
     CPPUNIT_ASSERT_MESSAGE("Wrong active labelset returned",
                            mitk::Equal(*newlayer, *m_LabelSetImage->GetActiveLabelSet(), 0.00001, true));
 
     // Set a non existing layer as active layer - nothing should change
     m_LabelSetImage->SetActiveLayer(10000);
     CPPUNIT_ASSERT_MESSAGE("Wrong active labelset returned",
                            mitk::Equal(*newlayer, *m_LabelSetImage->GetActiveLabelSet(), 0.00001, true));
   }
 
   void TestRemoveLayer()
   {
     // Cache active layer
     mitk::LabelSet::ConstPointer activeLayer = m_LabelSetImage->GetActiveLabelSet();
 
     // Add new layers
     m_LabelSetImage->AddLayer();
 
     mitk::LabelSet::Pointer newlayer = mitk::LabelSet::New();
     mitk::Label::Pointer label1 = mitk::Label::New();
     label1->SetName("Label1");
     label1->SetValue(1);
 
     mitk::Label::Pointer label2 = mitk::Label::New();
     label2->SetName("Label2");
     label2->SetValue(200);
 
     newlayer->AddLabel(label1);
     newlayer->AddLabel(label2);
     newlayer->SetActiveLabel(200);
 
     m_LabelSetImage->AddLayer(newlayer);
 
     CPPUNIT_ASSERT_MESSAGE("Wrong active labelset returned",
                            mitk::Equal(*newlayer, *m_LabelSetImage->GetActiveLabelSet(), 0.00001, true));
 
     m_LabelSetImage->RemoveLayer();
     CPPUNIT_ASSERT_MESSAGE("Wrong number of layers, after a layer was removed",
                            m_LabelSetImage->GetNumberOfLayers() == 2);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(2) == false);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(1) == true);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(0) == true);
 
     m_LabelSetImage->RemoveLayer();
     CPPUNIT_ASSERT_MESSAGE("Wrong number of layers, after a layer was removed",
                            m_LabelSetImage->GetNumberOfLayers() == 1);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(1) == false);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(0) == true);
     CPPUNIT_ASSERT_MESSAGE("Wrong active layer",
                            mitk::Equal(*activeLayer, *m_LabelSetImage->GetActiveLabelSet(), 0.00001, true));
 
     m_LabelSetImage->RemoveLayer();
     CPPUNIT_ASSERT_MESSAGE("Wrong number of layers, after a layer was removed",
                            m_LabelSetImage->GetNumberOfLayers() == 0);
     CPPUNIT_ASSERT_MESSAGE("Check for existing layer failed", m_LabelSetImage->ExistLabelSet(0) == false);
     CPPUNIT_ASSERT_MESSAGE("Active layers is not nullptr although all layer have been removed",
                            m_LabelSetImage->GetActiveLabelSet() == nullptr);
   }
 
   void TestRemoveLabels()
   {
     mitk::Image::Pointer image =
       mitk::IOUtil::Load<mitk::Image>(GetTestDataFilePath("Multilabel/LabelSetTestInitializeImage.nrrd"));
     m_LabelSetImage->InitializeByLabeledImage(image);
 
     CPPUNIT_ASSERT_MESSAGE("Image - number of labels is not 6", m_LabelSetImage->GetNumberOfLabels() == 6);
     // 2ndMin because of the exterior label = 0
     CPPUNIT_ASSERT_MESSAGE("Labels with value 1 and 3 was not remove from the image",
                            m_LabelSetImage->GetStatistics()->GetScalarValue2ndMin() == 1);
     CPPUNIT_ASSERT_MESSAGE("Label with value 7 was not remove from the image",
                            m_LabelSetImage->GetStatistics()->GetScalarValueMax() == 7);
 
     CPPUNIT_ASSERT_MESSAGE("Label with ID 3 does not exists after initialization",
                            m_LabelSetImage->ExistLabel(3) == true);
     CPPUNIT_ASSERT_MESSAGE("Label with ID 7 does not exists after initialization",
                            m_LabelSetImage->ExistLabel(7) == true);
 
     std::vector<mitk::Label::PixelType> labelsToBeRemoved;
     labelsToBeRemoved.push_back(1);
     labelsToBeRemoved.push_back(3);
     labelsToBeRemoved.push_back(7);
     m_LabelSetImage->RemoveLabels(labelsToBeRemoved);
 
     CPPUNIT_ASSERT_MESSAGE("Wrong number of labels after some have been removed",
                            m_LabelSetImage->GetNumberOfLabels() == 3);
     // Values within the image are 0, 1, 3, 5, 6, 7 - New Min/Max value should be 5 / 6
     // 2ndMin because of the exterior label = 0
     CPPUNIT_ASSERT_MESSAGE("Labels with value 1 and 3 was not remove from the image",
                            m_LabelSetImage->GetStatistics()->GetScalarValue2ndMin() == 5);
     CPPUNIT_ASSERT_MESSAGE("Label with value 7 was not remove from the image",
                            m_LabelSetImage->GetStatistics()->GetScalarValueMax() == 6);
   }
 
   void TestMergeLabel()
   {
     mitk::Image::Pointer image = mitk::IOUtil::Load<mitk::Image>(GetTestDataFilePath("Multilabel/LabelSetTestInitializeImage.nrrd"));
     m_LabelSetImage = nullptr;
     m_LabelSetImage = mitk::LabelSetImage::New();
     m_LabelSetImage->InitializeByLabeledImage(image);
 
     CPPUNIT_ASSERT_MESSAGE("Image - number of labels is not 6", m_LabelSetImage->GetNumberOfLabels() == 6);
 
     // 2ndMin because of the exterior label = 0
     CPPUNIT_ASSERT_MESSAGE("Wrong MIN value", m_LabelSetImage->GetStatistics()->GetScalarValueMin() == 0);
     CPPUNIT_ASSERT_MESSAGE("Wrong MAX value", m_LabelSetImage->GetStatistics()->GetScalarValueMax() == 7);
 
     m_LabelSetImage->GetActiveLabelSet()->SetActiveLabel(6);
     // Merge label 7 with label 0. Result should be that label 7 is not present any more
     m_LabelSetImage->MergeLabel(6, 7);
     CPPUNIT_ASSERT_MESSAGE("Label with value 7 was not remove from the image", m_LabelSetImage->GetStatistics()->GetScalarValueMax() == 6);
     m_LabelSetImage->GetStatistics()->GetScalarValue2ndMax();
 
     // Count all pixels with value 7 = 823
     // Count all pixels with value 6 = 507
     // Check if merge label has 507 + 823 = 1330 pixels
     CPPUNIT_ASSERT_MESSAGE("Label with value 7 was not remove from the image", m_LabelSetImage->GetStatistics()->GetCountOfMaxValuedVoxels() == 1330);
   }
 };
 
 MITK_TEST_SUITE_REGISTRATION(mitkLabelSetImage)
diff --git a/Modules/SurfaceInterpolation/Testing/mitkCreateDistanceImageFromSurfaceFilterTest.cpp b/Modules/SurfaceInterpolation/Testing/mitkCreateDistanceImageFromSurfaceFilterTest.cpp
index e158c5f96a..7dd841769e 100644
--- a/Modules/SurfaceInterpolation/Testing/mitkCreateDistanceImageFromSurfaceFilterTest.cpp
+++ b/Modules/SurfaceInterpolation/Testing/mitkCreateDistanceImageFromSurfaceFilterTest.cpp
@@ -1,132 +1,133 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #include <mitkComputeContourSetNormalsFilter.h>
 #include <mitkCreateDistanceImageFromSurfaceFilter.h>
 #include <mitkIOUtil.h>
 #include <mitkImageAccessByItk.h>
 #include <mitkTestFixture.h>
 #include <mitkTestingMacros.h>
 
 #include <vtkDebugLeaks.h>
 
 class mitkCreateDistanceImageFromSurfaceFilterTestSuite : public mitk::TestFixture
 {
   CPPUNIT_TEST_SUITE(mitkCreateDistanceImageFromSurfaceFilterTestSuite);
   vtkDebugLeaks::SetExitError(0);
-  MITK_TEST(TestCreateDistanceImageForLiver);
+  // Basically tests the same as the other test below
+  // MITK_TEST(TestCreateDistanceImageForLiver);
   MITK_TEST(TestCreateDistanceImageForTube);
   CPPUNIT_TEST_SUITE_END();
 
 private:
   std::vector<mitk::Surface::Pointer> contourList;
 
 public:
   void setUp() override {}
   template <typename TPixel, unsigned int VImageDimension>
   void GetImageBase(itk::Image<TPixel, VImageDimension> *input, itk::ImageBase<3>::Pointer &result)
   {
     result->Graft(input);
   }
 
   // Interpolate the shape of a liver
   void TestCreateDistanceImageForLiver()
   {
     // That's the number of available liver contours in MITK-Data
     unsigned int NUMBER_OF_LIVER_CONTOURS = 18;
 
     for (unsigned int i = 0; i <= NUMBER_OF_LIVER_CONTOURS; ++i)
     {
       std::stringstream s;
       s << "SurfaceInterpolation/InterpolateLiver/LiverContourWithNormals_";
       s << i;
       s << ".vtk";
       mitk::Surface::Pointer contour = mitk::IOUtil::Load<mitk::Surface>(GetTestDataFilePath(s.str()));
       contourList.push_back(contour);
     }
 
     mitk::Image::Pointer segmentationImage =
       mitk::IOUtil::Load<mitk::Image>(GetTestDataFilePath("SurfaceInterpolation/Reference/LiverSegmentation.nrrd"));
 
     mitk::ComputeContourSetNormalsFilter::Pointer m_NormalsFilter = mitk::ComputeContourSetNormalsFilter::New();
     mitk::CreateDistanceImageFromSurfaceFilter::Pointer m_InterpolateSurfaceFilter =
       mitk::CreateDistanceImageFromSurfaceFilter::New();
 
     itk::ImageBase<3>::Pointer itkImage = itk::ImageBase<3>::New();
     AccessFixedDimensionByItk_1(segmentationImage, GetImageBase, 3, itkImage);
     m_InterpolateSurfaceFilter->SetReferenceImage(itkImage.GetPointer());
 
     for (unsigned int j = 0; j < contourList.size(); j++)
     {
       m_NormalsFilter->SetInput(j, contourList.at(j));
       m_InterpolateSurfaceFilter->SetInput(j, m_NormalsFilter->GetOutput(j));
     }
 
     m_InterpolateSurfaceFilter->Update();
 
     mitk::Image::Pointer liverDistanceImage = m_InterpolateSurfaceFilter->GetOutput();
 
     CPPUNIT_ASSERT(liverDistanceImage.IsNotNull());
     mitk::Image::Pointer liverDistanceImageReference =
       mitk::IOUtil::Load<mitk::Image>(GetTestDataFilePath("SurfaceInterpolation/Reference/LiverDistanceImage.nrrd"));
 
     CPPUNIT_ASSERT_MESSAGE("LiverDistanceImages are not equal!",
                            mitk::Equal(*(liverDistanceImageReference), *(liverDistanceImage), 0.0001, true));
   }
 
   void TestCreateDistanceImageForTube()
   {
     // That's the number of available contours with holes in MITK-Data
     unsigned int NUMBER_OF_TUBE_CONTOURS = 5;
 
     for (unsigned int i = 0; i < NUMBER_OF_TUBE_CONTOURS; ++i)
     {
       std::stringstream s;
       s << "SurfaceInterpolation/InterpolateWithHoles/ContourWithHoles_";
       s << i;
       s << ".vtk";
       mitk::Surface::Pointer contour = mitk::IOUtil::Load<mitk::Surface>(GetTestDataFilePath(s.str()));
       contourList.push_back(contour);
     }
 
     mitk::Image::Pointer segmentationImage =
       mitk::IOUtil::Load<mitk::Image>(GetTestDataFilePath("SurfaceInterpolation/Reference/SegmentationWithHoles.nrrd"));
 
     mitk::ComputeContourSetNormalsFilter::Pointer m_NormalsFilter = mitk::ComputeContourSetNormalsFilter::New();
     mitk::CreateDistanceImageFromSurfaceFilter::Pointer m_InterpolateSurfaceFilter =
       mitk::CreateDistanceImageFromSurfaceFilter::New();
 
     m_NormalsFilter->SetSegmentationBinaryImage(segmentationImage);
     itk::ImageBase<3>::Pointer itkImage = itk::ImageBase<3>::New();
     AccessFixedDimensionByItk_1(segmentationImage, GetImageBase, 3, itkImage);
     m_InterpolateSurfaceFilter->SetReferenceImage(itkImage.GetPointer());
 
     for (unsigned int j = 0; j < contourList.size(); j++)
     {
       m_NormalsFilter->SetInput(j, contourList.at(j));
       m_InterpolateSurfaceFilter->SetInput(j, m_NormalsFilter->GetOutput(j));
     }
 
     m_InterpolateSurfaceFilter->Update();
 
     mitk::Image::Pointer holeDistanceImage = m_InterpolateSurfaceFilter->GetOutput();
 
     CPPUNIT_ASSERT(holeDistanceImage.IsNotNull());
     mitk::Image::Pointer holesDistanceImageReference =
       mitk::IOUtil::Load<mitk::Image>(GetTestDataFilePath("SurfaceInterpolation/Reference/HolesDistanceImage.nrrd"));
 
     CPPUNIT_ASSERT_MESSAGE("HolesDistanceImages are not equal!",
                            mitk::Equal(*(holesDistanceImageReference), *(holeDistanceImage), 0.0001, true));
   }
 };
 
 MITK_TEST_SUITE_REGISTRATION(mitkCreateDistanceImageFromSurfaceFilter)