MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkToFImageGrabberTest.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>
14#include <mitkTestingConfig.h>
15#include <mitkTestFixture.h>
16#include <mitkIOUtil.h>
17
18#include <mitkToFImageGrabber.h>
20#include <mitkToFConfig.h>
21
22
23#include <mitkImageSliceSelector.h>
24
30class mitkToFImageGrabberTestSuite : public mitk::TestFixture
31{
32
33 CPPUNIT_TEST_SUITE(mitkToFImageGrabberTestSuite);
34 MITK_TEST(GetterAndSetterTests);
40
41 CPPUNIT_TEST_SUITE_END();
42
43private:
44
45 std::string m_KinectDepthImagePath;
46 std::string m_KinectColorImagePath;
47
48 std::string m_CamCubeDepthImagePath;
49 std::string m_CamCubeIntensityImagePath;
50 std::string m_CamCubeAmplitudeImagePath;
51
52 mitk::ToFImageGrabber::Pointer m_ToFImageGrabber;
53
54public:
55
56 void setUp() override
57 {
58 std::string dirName = MITK_TOF_DATA_DIR;
59
60 std::string depthImagePath = dirName + "/" + "Kinect_Lego_Phantom_DistanceImage.nrrd";
61 std::string colorImagePath = dirName + "/" + "Kinect_Lego_Phantom_RGBImage.nrrd";
62 std::string distanceImageP = dirName + "/" + "PMDCamCube2_MF0_IT0_1Images_DistanceImage.nrrd";
63 std::string amplitudeImage = dirName + "/" + "PMDCamCube2_MF0_IT0_1Images_AmplitudeImage.nrrd";
64 std::string intensityImage = dirName + "/" + "PMDCamCube2_MF0_IT0_1Images_IntensityImage.nrrd";
65
66 m_KinectDepthImagePath = GetTestDataFilePath(depthImagePath);
67 m_KinectColorImagePath = GetTestDataFilePath(colorImagePath);
68 m_CamCubeDepthImagePath = GetTestDataFilePath(distanceImageP);
69 m_CamCubeIntensityImagePath = GetTestDataFilePath(amplitudeImage);
70 m_CamCubeAmplitudeImagePath = GetTestDataFilePath(intensityImage);
71
72 m_ToFImageGrabber = mitk::ToFImageGrabber::New();
73
74 //The Grabber always needs a device
75 mitk::ToFCameraMITKPlayerDevice::Pointer tofCameraMITKPlayerDevice = mitk::ToFCameraMITKPlayerDevice::New();
76 m_ToFImageGrabber->SetCameraDevice(tofCameraMITKPlayerDevice);
77 }
78
79 void tearDown() override
80 {
81 if(m_ToFImageGrabber->IsCameraActive())
82 {
83 m_ToFImageGrabber->StopCamera();
84 m_ToFImageGrabber->DisconnectCamera();
85 }
86 m_ToFImageGrabber = nullptr;
87 }
88
94 {
95 int modulationFrequency = 20;
96 m_ToFImageGrabber->SetModulationFrequency(modulationFrequency);
97 CPPUNIT_ASSERT(modulationFrequency==m_ToFImageGrabber->GetModulationFrequency());
98
99 int integrationTime = 500;
100 m_ToFImageGrabber->SetIntegrationTime(integrationTime);
101 CPPUNIT_ASSERT(integrationTime==m_ToFImageGrabber->GetIntegrationTime());
102 }
103
105 {
106 MITK_TEST_FOR_EXCEPTION(std::logic_error, m_ToFImageGrabber->ConnectCamera());
107 m_ToFImageGrabber->StartCamera();
108 m_ToFImageGrabber->StopCamera();
109 CPPUNIT_ASSERT_MESSAGE("Test DisconnectCamera() with no file name set", !m_ToFImageGrabber->DisconnectCamera());
110 }
111
113 {
114 m_ToFImageGrabber->SetProperty("DistanceImageFileName",mitk::StringProperty::New(m_KinectDepthImagePath));
115 m_ToFImageGrabber->SetProperty("RGBImageFileName",mitk::StringProperty::New(m_KinectColorImagePath));
116
117
118 CPPUNIT_ASSERT(m_ToFImageGrabber->ConnectCamera() == true);
119 }
120
122 {
123 try
124 {
125 m_ToFImageGrabber->SetProperty("DistanceImageFileName",mitk::StringProperty::New(m_KinectDepthImagePath));
126
127 m_ToFImageGrabber->ConnectCamera();
128 m_ToFImageGrabber->StartCamera();
129 mitk::Image::Pointer expectedResultImage = mitk::IOUtil::Load<mitk::Image>(m_KinectDepthImagePath);
130
131 m_ToFImageGrabber->Update();
132
133 //Select 2D slice to make it comparable in diminsion
134 mitk::ImageSliceSelector::Pointer selector = mitk::ImageSliceSelector::New();
135 selector->SetSliceNr(0);
136 selector->SetTimeNr(0);
137 selector->SetInput( m_ToFImageGrabber->GetOutput(0) );
138 selector->Update();
139 mitk::Image::Pointer distanceImage = selector->GetOutput(0);
140
141 MITK_ASSERT_EQUAL( expectedResultImage, distanceImage, "Test data is 2D. Results should be equal.");
142 }
143 catch(std::exception &e)
144 {
145 MITK_ERROR << e.what();
146 }
147 }
148
150 {
151 m_ToFImageGrabber->SetProperty("DistanceImageFileName",mitk::StringProperty::New(m_KinectDepthImagePath));
152 m_ToFImageGrabber->SetProperty("RGBImageFileName",mitk::StringProperty::New(m_KinectColorImagePath));
153
154 m_ToFImageGrabber->ConnectCamera();
155 CPPUNIT_ASSERT(m_ToFImageGrabber->IsCameraActive() == false);
156 m_ToFImageGrabber->StartCamera();
157 CPPUNIT_ASSERT(m_ToFImageGrabber->IsCameraActive() == true);
158 m_ToFImageGrabber->StopCamera();
159 CPPUNIT_ASSERT(m_ToFImageGrabber->IsCameraActive() == false);
160 m_ToFImageGrabber->StartCamera();
161 CPPUNIT_ASSERT(m_ToFImageGrabber->IsCameraActive() == true);
162 m_ToFImageGrabber->StopCamera();
163 CPPUNIT_ASSERT(m_ToFImageGrabber->IsCameraActive() == false);
164
165 m_ToFImageGrabber->DisconnectCamera();
166 CPPUNIT_ASSERT(m_ToFImageGrabber->IsCameraActive() == false);
167 }
168
170 {
171 m_ToFImageGrabber->SetProperty("DistanceImageFileName",mitk::StringProperty::New(m_CamCubeDepthImagePath));
172 m_ToFImageGrabber->SetProperty("AmplitudeImageFileName",mitk::StringProperty::New(m_CamCubeAmplitudeImagePath));
173 m_ToFImageGrabber->SetProperty("IntensityImageFileName",mitk::StringProperty::New(m_CamCubeIntensityImagePath));
174
175 m_ToFImageGrabber->ConnectCamera();
176 m_ToFImageGrabber->StartCamera();
177 m_ToFImageGrabber->Update();
178
179 CPPUNIT_ASSERT( m_ToFImageGrabber->GetBoolProperty("HasAmplitudeImage") == true);
180 CPPUNIT_ASSERT( m_ToFImageGrabber->GetBoolProperty("HasIntensityImage") == true);
181 CPPUNIT_ASSERT( m_ToFImageGrabber->GetOutput(1) != nullptr );
182 CPPUNIT_ASSERT( m_ToFImageGrabber->GetOutput(2) != nullptr );
183 }
184};
185
186MITK_TEST_SUITE_REGISTRATION(mitkToFImageGrabber)
The mitkToFImageGrabberTestSuite class is a test-suite for mitkToFImageGrabber.
void GetterAndSetterTests()
GetterAndSetterTests Testing getters and setters of mitkToFImageGrabber, because they internally cont...