MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkToFOpenCVImageGrabberTest.cpp
Go to the documentation of this file.
1/*============================================================================
2
3The Medical Imaging Interaction Toolkit (MITK)
4
5Copyright (c) German Cancer Research Center (DKFZ)
6All rights reserved.
7
8Use of this source code is governed by a 3-clause BSD license that can be
9found in the LICENSE file.
10
11============================================================================*/
12
13#include <mitkTestingMacros.h>
15
16#include <mitkImageDataItem.h>
17#include <mitkIOUtil.h>
19#include <mitkToFConfig.h>
20#include <mitkImagePixelReadAccessor.h>
21
22static bool CompareImages(mitk::Image::Pointer mitkImage, cv::Mat openCVImage)
23{
24 float equal = true;
25 if (static_cast<int>(mitkImage->GetDimension(0)) != openCVImage.cols || static_cast<int>(mitkImage->GetDimension(1)) != openCVImage.rows)
26 {
27 equal = false;
28 }
29 mitk::ImagePixelReadAccessor<float,2> imageAcces(mitkImage, mitkImage->GetSliceData(0));
30 for(int i=0; i<openCVImage.cols; i++)
31 {
32 for(int j=0; j<openCVImage.rows; j++)
33 {
34 itk::Index<2> currentIndex;
35 currentIndex[0] = i;
36 currentIndex[1] = j;
37 float mitkImageValue = imageAcces.GetPixelByIndex(currentIndex);
38 float openCVImageValue = openCVImage.at<float>(j,i);
39 if (!mitk::Equal(mitkImageValue,openCVImageValue))
40 {
41 equal = false;
42 }
43 }
44 }
45 return equal;
46}
47
51int mitkToFOpenCVImageGrabberTest(int /* argc */, char* /*argv*/[])
52{
53 MITK_TEST_BEGIN("ToFOpenCVImageGrabber");
54
55 std::string dirName = MITK_TOF_DATA_DIR;
56 mitk::ToFImageGrabber::Pointer tofImageGrabber = mitk::ToFImageGrabber::New();
57 tofImageGrabber->SetCameraDevice(mitk::ToFCameraMITKPlayerDevice::New());
58 std::string distanceFileName = dirName + "/PMDCamCube2_MF0_IT0_1Images_DistanceImage.nrrd";
59 tofImageGrabber->SetProperty("DistanceImageFileName",mitk::StringProperty::New(distanceFileName));
60 std::string amplitudeFileName = dirName + "/PMDCamCube2_MF0_IT0_1Images_AmplitudeImage.nrrd";
61 tofImageGrabber->SetProperty("AmplitudeImageFileName",mitk::StringProperty::New(amplitudeFileName));
62 std::string intensityFileName = dirName + "/PMDCamCube2_MF0_IT0_1Images_IntensityImage.nrrd";
63 tofImageGrabber->SetProperty("IntensityImageFileName",mitk::StringProperty::New(intensityFileName));
64 tofImageGrabber->Update();
65
66 mitk::Image::Pointer image = mitk::IOUtil::Load<mitk::Image>(distanceFileName);
67
68 try
69 {
70 mitk::ToFOpenCVImageGrabber::Pointer tofOpenCVImageGrabber = mitk::ToFOpenCVImageGrabber::New();
71 tofOpenCVImageGrabber->SetToFImageGrabber(tofImageGrabber);
72 MITK_TEST_CONDITION_REQUIRED(tofImageGrabber==tofOpenCVImageGrabber->GetToFImageGrabber(),"Test Set/GetToFImageGrabber()");
73 MITK_TEST_OUTPUT(<<"Call StartCapturing()");
74 tofOpenCVImageGrabber->StartCapturing();
75 cv::Mat cvImage = tofOpenCVImageGrabber->GetImage();
76 MITK_TEST_CONDITION_REQUIRED(CompareImages(image,cvImage),"Test distance image");
77 image = mitk::IOUtil::Load<mitk::Image>(amplitudeFileName);
78 tofOpenCVImageGrabber->SetImageType(1);
79 cvImage = tofOpenCVImageGrabber->GetImage();
80 MITK_TEST_CONDITION_REQUIRED(CompareImages(image,cvImage),"Test amplitude image");
81 image = mitk::IOUtil::Load<mitk::Image>(intensityFileName);
82 tofOpenCVImageGrabber->SetImageType(2);
83 cvImage = tofOpenCVImageGrabber->GetImage();
84 MITK_TEST_CONDITION_REQUIRED(CompareImages(image,cvImage),"Test intensity image");
85 MITK_TEST_OUTPUT(<<"Call StopCapturing()");
86 tofOpenCVImageGrabber->StopCapturing();
87 }
88 catch(std::exception &e)
89 {
90 MITK_INFO << "Exception is: " << e.what();
91 }
92
93 MITK_TEST_END();
94
95}
96
97
int mitkToFOpenCVImageGrabberTest(int, char *[])
MITKIGTBASE_EXPORT bool Equal(const mitk::NavigationData &leftHandSide, const mitk::NavigationData &rightHandSide, ScalarType eps=mitk::eps, bool verbose=false)
Equal A function comparing two navigation data objects for beeing equal in meta- and imagedata.