21 #include <vtkPolyData.h> 25 CPPUNIT_TEST_SUITE(mitkSurfaceToImageFilterTestSuite);
29 CPPUNIT_TEST_SUITE_END();
40 void setUp()
override { m_Surface = mitk::IOUtil::Load<mitk::Surface>(
GetTestDataFilePath(
"ball.stl")); }
41 void tearDown()
override {}
42 void test3DSurfaceValidOutput()
47 additionalInputImage->Initialize(mitk::MakeScalarPixelType<unsigned int>(), *m_Surface->GetTimeGeometry());
50 surfaceToImageFilter->MakeOutputBinaryOn();
51 surfaceToImageFilter->SetInput(m_Surface);
52 surfaceToImageFilter->SetImage(additionalInputImage);
53 surfaceToImageFilter->Update();
55 CPPUNIT_ASSERT_MESSAGE(
56 "SurfaceToImageFilter_AnyInputImageAndModeSetToBinary_ResultIsImageWithUCHARPixelType",
57 surfaceToImageFilter->GetOutput()->GetPixelType().GetComponentType() == itk::ImageIOBase::UCHAR);
59 surfaceToImageFilter->SetUShortBinaryPixelType(
true);
60 surfaceToImageFilter->Update();
62 CPPUNIT_ASSERT_MESSAGE(
63 "SurfaceToImageFilter_AnyInputImageAndModeSetToBinary_ResultIsImageWithUCHARPixelType",
64 surfaceToImageFilter->GetOutput()->GetPixelType().GetComponentType() == itk::ImageIOBase::USHORT);
67 void test3DSurfaceCorrect()
74 auto *dims =
new unsigned int[3];
78 additionalInputImage->Initialize(mitk::MakeScalarPixelType<unsigned int>(), 3, dims);
79 additionalInputImage->SetOrigin(m_Surface->GetGeometry()->GetOrigin());
80 additionalInputImage->GetGeometry()->SetIndexToWorldTransform(m_Surface->GetGeometry()->GetIndexToWorldTransform());
83 surfaceToImageFilter->MakeOutputBinaryOn();
84 surfaceToImageFilter->SetInput(m_Surface);
85 surfaceToImageFilter->SetImage(additionalInputImage);
86 surfaceToImageFilter->Update();
90 bool valuesCorrect =
true;
93 idx[1] = 0, idx[2] = 0;
94 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
96 idx[1] = 15, idx[2] = 15;
97 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
99 idx[1] = 15, idx[2] = 0;
100 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
102 idx[1] = 0, idx[2] = 15;
103 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
105 idx[1] = 9, idx[2] = 23;
106 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
109 idx[1] = 15, idx[2] = 15;
110 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
112 idx[1] = 15, idx[2] = 15;
113 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
115 idx[1] = 15, idx[2] = 15;
116 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
118 idx[1] = 15, idx[2] = 2;
119 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
121 idx[1] = 2, idx[2] = 15;
122 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
124 idx[1] = 9, idx[2] = 23;
125 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
127 CPPUNIT_ASSERT_MESSAGE(
"SurfaceToImageFilter_BallSurfaceAsInput_OutputCorrect", valuesCorrect ==
true);
130 void test3DSurfaceIn4DImage()
135 auto *dims =
new unsigned int[4];
140 additionalInputImage->Initialize(mitk::MakeScalarPixelType<unsigned int>(), 4, dims);
141 additionalInputImage->SetOrigin(m_Surface->GetGeometry()->GetOrigin());
142 additionalInputImage->GetGeometry()->SetIndexToWorldTransform(m_Surface->GetGeometry()->GetIndexToWorldTransform());
145 unsigned int size =
sizeof(
unsigned char);
146 for (
unsigned int i = 0; i < secondStep->GetDimension(); ++i)
148 size *= secondStep->GetDimension(i);
153 memset(accessor.GetData(), 1, size);
156 additionalInputImage->GetTimeGeometry()->Expand(2);
157 additionalInputImage->GetGeometry(1)->SetSpacing(secondStep->GetGeometry()->GetSpacing());
158 additionalInputImage->GetGeometry(1)->SetOrigin(secondStep->GetGeometry()->GetOrigin());
159 additionalInputImage->GetGeometry(1)->SetIndexToWorldTransform(
160 secondStep->GetGeometry()->GetIndexToWorldTransform());
164 additionalInputImage->SetImportVolume(readAccess.GetData(), 0);
165 additionalInputImage->SetImportVolume(readAccess.GetData(), 1);
169 surfaceToImageFilter->MakeOutputBinaryOn();
170 surfaceToImageFilter->SetInput(m_Surface);
171 surfaceToImageFilter->SetImage(additionalInputImage);
173 surfaceToImageFilter->Update();
177 bool valuesCorrect =
true;
180 idx[1] = 0, idx[2] = 0;
182 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
184 idx[1] = 15, idx[2] = 15;
186 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
188 idx[1] = 15, idx[2] = 0;
190 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
192 idx[1] = 0, idx[2] = 15;
194 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
196 idx[1] = 9, idx[2] = 23;
198 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
201 idx[1] = 15, idx[2] = 15;
203 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
205 idx[1] = 15, idx[2] = 15;
207 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
209 idx[1] = 15, idx[2] = 15;
211 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
213 idx[1] = 15, idx[2] = 2;
215 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
217 idx[1] = 2, idx[2] = 15;
219 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
221 idx[1] = 9, idx[2] = 23;
223 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 1);
226 idx[1] = 15, idx[2] = 15;
228 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
230 idx[1] = 15, idx[2] = 15;
232 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
234 idx[1] = 15, idx[2] = 15;
236 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
238 idx[1] = 15, idx[2] = 2;
240 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
242 idx[1] = 2, idx[2] = 15;
244 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
246 idx[1] = 9, idx[2] = 23;
248 valuesCorrect = valuesCorrect && (outputReader.GetPixelByIndex(idx) == 0);
250 CPPUNIT_ASSERT_MESSAGE(
"SurfaceToImageFilter_BallSurfaceAsInput_Output4DCorrect", valuesCorrect ==
true);
Gives locked and index-based read access for a particular image part. The class provides several set-...
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
static std::string GetTestDataFilePath(const std::string &testData)
Get the absolute path for test data.
Test fixture for parameterized tests.
ImageWriteAccessor class to get locked write-access for a particular image part.
ImageReadAccessor class to get locked read access for a particular image part.