35 MITK_TEST_BEGIN(
"mitkKinectReconstructionTest");
37 MITK_TEST_CONDITION_REQUIRED(argc > 2,
"Testing if enough arguments are set.");
38 std::string calibrationFilePath(argv[1]);
39 std::string kinectImagePath(argv[2]);
41 mitk::ToFDistanceImageToSurfaceFilter::Pointer distToSurf = mitk::ToFDistanceImageToSurfaceFilter::New();
42 mitk::CameraIntrinsics::Pointer intrinsics = mitk::CameraIntrinsics::New();
44 intrinsics->FromXMLFile(calibrationFilePath);
45 MITK_TEST_CONDITION_REQUIRED(intrinsics.IsNotNull(),
"Testing if a calibration file could be loaded.");
46 distToSurf->SetCameraIntrinsics(intrinsics);
49 mitk::Image::Pointer kinectImage = mitk::IOUtil::Load<mitk::Image>(kinectImagePath);
50 MITK_TEST_CONDITION_REQUIRED(kinectImage.IsNotNull(),
"Testing if a kinect image could be loaded.");
51 distToSurf->SetInput(kinectImage);
54 mitk::Surface::Pointer resultOfFilter = distToSurf->GetOutput();
55 MITK_TEST_CONDITION_REQUIRED(resultOfFilter.IsNotNull(),
"Testing if any output was generated.");
59 mitk::PointSet::Pointer groundTruthPointSet = mitk::PointSet::New();
61 focalLength[0] = intrinsics->GetFocalLengthX();
62 focalLength[1] = intrinsics->GetFocalLengthY();
64 principalPoint[0] = intrinsics->GetPrincipalPointX();
65 principalPoint[1] = intrinsics->GetPrincipalPointY();
67 int xDimension = (int)kinectImage->GetDimension(0);
68 int yDimension = (int)kinectImage->GetDimension(1);
70 mitk::ImagePixelReadAccessor<float,2> imageAcces(kinectImage, kinectImage->GetSliceData(0));
71 for (
int j=0; j<yDimension; j++)
73 for (
int i=0; i<xDimension; i++)
81 mitk::Point3D currentPoint;
84 if (distance>mitk::eps)
86 groundTruthPointSet->InsertPoint( pointCount, currentPoint );
92 "Testing if point sets are equal (with a small epsilon).");
static ToFProcessingCommon::ToFPoint3D KinectIndexToCartesianCoordinates(unsigned int i, unsigned int j, ToFScalarType distance, ToFScalarType focalLengthX, ToFScalarType focalLengthY, ToFScalarType principalPointX, ToFScalarType principalPointY)
KinectIndexToCartesianCoordinates Convert a pixel (i,j) with value d to a 3D world point....