15 #include <itksys/SystemTools.hxx> 23 return (std::fabs(val1 - val2) <= epsilon);
30 std::cout <<
"no path to testing specified [FAILED]" << std::endl;
34 std::string fileIn = argv[1];
35 std::cout <<
"Eingabe Datei: " << fileIn << std::endl;
37 if (image->GetPixelType() !=
mitk::PixelType(mitk::MakeScalarPixelType<char>()) ||
38 image->GetPixelType() !=
mitk::PixelType(mitk::MakeScalarPixelType<unsigned char>()))
40 std::cout <<
"file not a char or unsigned char image - test will not be applied [PASSED]" << std::endl;
41 std::cout <<
"[TEST DONE]" << std::endl;
45 std::cout <<
"Testing instantiation: ";
49 std::cout <<
"[FAILED]" << std::endl;
54 std::cout <<
"[PASSED]" << std::endl;
57 std::cout <<
"Create surface with default settings: ";
58 filter->SetInput(image);
61 if (filter->GetNumberOfOutputs() != 1)
63 std::cout <<
"Wrong number of outputs, [FAILED]" << std::endl;
66 else if (filter->GetOutput() ==
nullptr)
68 std::cout <<
"Output is nullptr, [FAILED]" << std::endl;
71 else if (filter->GetOutput()->GetVtkPolyData() ==
nullptr)
73 std::cout <<
"PolyData of surface is nullptr, [FAILED]" << std::endl;
78 std::cout <<
"[PASSED]" << std::endl;
81 std::cout <<
"Testing index to label conversion: ";
82 if (filter->GetLabelForNthOutput(0) != 257)
84 std::cout <<
"[FAILED]" << std::endl;
89 std::cout <<
"[PASSED]" << std::endl;
92 std::cout <<
"Testing volume for label calculation: ";
93 if (!
equals(filter->GetVolumeForLabel(257), 14.328))
95 std::cout << filter->GetVolumeForLabel(257) <<
"[FAILED]" << std::endl;
100 std::cout <<
"[PASSED]" << std::endl;
103 std::cout <<
"Testing volume for index calculation: ";
104 if (!
equals(filter->GetVolumeForNthOutput(0), 14.328))
106 std::cout <<
"[FAILED]" << std::endl;
111 std::cout <<
"[PASSED]" << std::endl;
114 std::cout <<
"Create surface using optimised settings: ";
115 filter->GenerateAllLabelsOn();
116 filter->SetGaussianStandardDeviation(1.5);
117 filter->SetSmooth(
true);
119 filter->SetTargetReduction(0.8);
120 if (filter->GetNumberOfOutputs() != 1)
122 std::cout <<
"[FAILED]" << std::endl;
127 std::cout <<
"[PASSED]" << std::endl;
130 std::cout <<
"Create surface for label 257: ";
131 filter->GenerateAllLabelsOff();
132 filter->SetLabel(257);
134 if (filter->GetNumberOfOutputs() != 1)
136 std::cout <<
"Wrong number of outputs, [FAILED]" << std::endl;
139 else if (filter->GetOutput() ==
nullptr)
141 std::cout <<
"Output is nullptr, [FAILED]" << std::endl;
144 else if (filter->GetOutput()->GetVtkPolyData() ==
nullptr)
146 std::cout <<
"PolyData of surface is nullptr, [FAILED]" << std::endl;
151 std::cout <<
"[PASSED]" << std::endl;
154 std::cout <<
"Testing volume for label calculation: ";
155 if (!
equals(filter->GetVolumeForLabel(257), 14.328))
157 std::cout <<
"[FAILED]" << std::endl;
162 std::cout <<
"[PASSED]" << std::endl;
165 std::cout <<
"Testing volume for index calculation: ";
166 if (!
equals(filter->GetVolumeForNthOutput(0), 14.328))
168 std::cout <<
"[FAILED]" << std::endl;
173 std::cout <<
"[PASSED]" << std::endl;
176 std::cout <<
"Create surface for multiple labels: ";
177 filter->GenerateAllLabelsOn();
178 filter->SetBackgroundLabel(32000);
180 if (filter->GetNumberOfOutputs() != 2)
182 std::cout <<
"Wrong number of outputs, [FAILED]" << std::endl;
185 else if (filter->GetOutput() ==
nullptr)
187 std::cout <<
"Output 0 is nullptr, [FAILED]" << std::endl;
190 else if (filter->GetOutput()->GetVtkPolyData() ==
nullptr)
192 std::cout <<
"PolyData of output 0 is nullptr, [FAILED]" << std::endl;
195 else if (filter->GetOutput(1) ==
nullptr)
197 std::cout <<
"Output 1 is nullptr, [FAILED]" << std::endl;
200 else if (filter->GetOutput(1)->GetVtkPolyData() ==
nullptr)
202 std::cout <<
"PolyData of output 1 is nullptr, [FAILED]" << std::endl;
207 std::cout <<
"[PASSED]" << std::endl;
210 std::cout <<
"Testing volume for label calculation: ";
211 if (!
equals(filter->GetVolumeForLabel(257), 14.328))
213 std::cout <<
"[FAILED]" << std::endl;
216 else if (!
equals(filter->GetVolumeForLabel(0), 12.672))
218 std::cout <<
"[FAILED]" << std::endl;
223 std::cout <<
"[PASSED]" << std::endl;
226 std::cout <<
"Testing volume for index calculation: ";
227 if (!
equals(filter->GetVolumeForNthOutput(1), 14.328))
229 std::cout <<
"[FAILED]" << std::endl;
232 else if (!
equals(filter->GetVolumeForNthOutput(0), 12.672))
234 std::cout <<
"[FAILED]" << std::endl;
239 std::cout <<
"[PASSED]" << std::endl;
246 std::cout <<
"Create surface for background (label 0): " << std::flush;
247 filter->GenerateAllLabelsOff();
249 filter->SetBackgroundLabel(257);
255 if (filter->GetNumberOfOutputs() != 1)
257 std::cout <<
"Wrong number of outputs, [FAILED]" << std::endl;
260 else if (filter->GetOutput() ==
nullptr)
262 std::cout <<
"Output is nullptr, [FAILED]" << std::endl;
265 else if (filter->GetOutput()->GetVtkPolyData() ==
nullptr)
267 std::cout <<
"PolyData of surface is nullptr, [FAILED]" << std::endl;
272 std::cout <<
"[PASSED]" << std::endl;
274 std::cout <<
"Testing reference count correctness of old output 1: " << std::flush;
275 if (outputSurface1Watcher->GetReferenceCount() != 0)
277 std::cout <<
"outputSurface1Watcher->GetReferenceCount()==" << outputSurface1Watcher->GetReferenceCount()
278 <<
"!=0, [FAILED]" << std::endl;
281 std::cout <<
"[PASSED]" << std::endl;
282 std::cout <<
"Testing reference count correctness of filter: " << std::flush;
283 if (filterWatcher->GetReferenceCount() != 2)
285 std::cout <<
"filterWatcher->GetReferenceCount()==" << outputSurface1Watcher->GetReferenceCount() <<
"!=2, [FAILED]" 289 std::cout <<
"[PASSED]" << std::endl;
291 std::cout <<
"Testing index to label conversion: ";
292 if (filter->GetLabelForNthOutput(0) != 0)
294 std::cout <<
"[FAILED]" << std::endl;
299 std::cout <<
"[PASSED]" << std::endl;
302 std::cout <<
"Testing volume for label calculation: ";
303 if (!
equals(filter->GetVolumeForLabel(filter->GetLabel()), 12.672))
305 std::cout <<
"[FAILED]" << std::endl;
310 std::cout <<
"[PASSED]" << std::endl;
313 std::cout <<
"Testing volume for index calculation: ";
314 if (!
equals(filter->GetVolumeForNthOutput(0), 12.672))
316 std::cout <<
"[FAILED]" << std::endl;
321 std::cout <<
"[PASSED]" << std::endl;
324 std::cout <<
"Create surface for invalid label: ";
325 filter->GenerateAllLabelsOff();
328 if (filter->GetNumberOfOutputs() != 1)
330 std::cout <<
"Number of outputs != 1, [FAILED]" << std::endl;
333 else if (filter->GetOutput()->GetVtkPolyData()->GetNumberOfPoints() != 0)
335 std::cout <<
"PolyData is not empty (" << filter->GetOutput()->GetVtkPolyData()->GetNumberOfPoints()
336 <<
"), [FAILED]" << std::endl;
341 std::cout <<
"[PASSED]" << std::endl;
344 std::cout <<
"[TEST DONE]" << std::endl;
Keeps track of the reference count of an object even if it is destroyed.
int mitkLabeledImageToSurfaceFilterTest(int argc, char *argv[])
mitk::Image::Pointer image
bool equals(const mitk::ScalarType &val1, const mitk::ScalarType &val2, mitk::ScalarType epsilon=mitk::eps)
MITKCORE_EXPORT const ScalarType eps
Class for defining the data type of pixels.