19 CPPUNIT_TEST_SUITE(mitkSlicedVolumeGeneratorTestSuite);
22 MITK_TEST(testGetSlicedFluenceVolumeInverse);
23 MITK_TEST(testGetSlicedFluenceVolumeWithPrecorrection);
24 MITK_TEST(testGetSlicedFluenceVolumeWithPrecorrectionInverse);
27 CPPUNIT_TEST_SUITE_END();
31 mitk::pa::ComposedVolume::Pointer m_ComposedVolume;
32 mitk::pa::TissueGeneratorParameters::Pointer m_DefaultParameters;
33 mitk::pa::InSilicoTissueVolume::Pointer m_InSilicoTissueVolume;
34 mitk::pa::SlicedVolumeGenerator::Pointer m_SlicedVolumeGenerator;
35 mitk::pa::Volume::Pointer m_PrecorrectionVolume;
41 m_SlicedVolumeGenerator =
nullptr;
43 m_DefaultParameters->SetXDim(3);
44 m_DefaultParameters->SetYDim(3);
45 m_DefaultParameters->SetZDim(3);
46 auto rng = std::mt19937();
48 m_ComposedVolume = mitk::pa::ComposedVolume::New(m_InSilicoTissueVolume);
49 m_ComposedVolume->AddSlice(CreateValidationPair(-1, 1));
50 m_ComposedVolume->AddSlice(CreateValidationPair(0, 3));
51 m_ComposedVolume->AddSlice(CreateValidationPair(1, 6));
52 m_PrecorrectionVolume = CreatePrecorrectionVolume();
55 mitk::pa::Volume::Pointer CreatePrecorrectionVolume()
57 auto* data =
new double[27];
58 for (
int i = 0; i < 27; ++i)
63 void FillYSliceWith(mitk::pa::Volume::Pointer fluenceVolume,
double ySlice,
double value)
65 for (
unsigned int x = 0; x < fluenceVolume->GetXDim(); ++x)
66 for (
unsigned int z = 0; z < fluenceVolume->GetZDim(); ++z)
68 fluenceVolume->SetData(value, x, ySlice, z);
72 mitk::pa::FluenceYOffsetPair::Pointer CreateValidationPair(
double yOffset,
int start)
74 auto* data =
new double[27];
77 FillYSliceWith(fluenceVolume, 0, start + 0);
78 FillYSliceWith(fluenceVolume, 1, start + 1);
79 FillYSliceWith(fluenceVolume, 2, start + 2);
81 return mitk::pa::FluenceYOffsetPair::New(fluenceVolume, yOffset);
84 void AssertYSliceValue(mitk::pa::Volume::Pointer fluenceVolume,
double ySlice,
double value)
86 for (
unsigned int x = 0; x < fluenceVolume->GetXDim(); ++x)
87 for (
unsigned int z = 0; z < fluenceVolume->GetZDim(); ++z)
89 std::string msg =
"Expected: " + std::to_string(value) +
" actual: " + std::to_string(fluenceVolume->GetData(x, ySlice, z));
90 CPPUNIT_ASSERT_MESSAGE(msg, std::abs(fluenceVolume->GetData(x, ySlice, z) - value) <
mitk::eps);
94 void testConstructorDestructor()
96 m_SlicedVolumeGenerator = mitk::pa::SlicedVolumeGenerator::New(0,
false,
nullptr,
false);
97 CPPUNIT_ASSERT(m_SlicedVolumeGenerator.IsNotNull());
100 void testGetSlicedFluenceVolume()
102 m_SlicedVolumeGenerator = mitk::pa::SlicedVolumeGenerator::New(1,
false,
nullptr,
false);
103 mitk::pa::Volume::Pointer slicedFluence =
104 m_SlicedVolumeGenerator->GetSlicedFluenceImageFromComposedVolume(m_ComposedVolume);
105 CPPUNIT_ASSERT(slicedFluence->GetXDim() == 3);
106 CPPUNIT_ASSERT(slicedFluence->GetYDim() == 3);
107 CPPUNIT_ASSERT(slicedFluence->GetZDim() == 3);
108 AssertYSliceValue(slicedFluence, 0, 1);
109 AssertYSliceValue(slicedFluence, 1, 4);
110 AssertYSliceValue(slicedFluence, 2, 8);
113 void testGetSlicedFluenceVolumeInverse()
115 m_SlicedVolumeGenerator = mitk::pa::SlicedVolumeGenerator::New(1,
false,
nullptr,
true);
116 mitk::pa::Volume::Pointer slicedFluence =
117 m_SlicedVolumeGenerator->GetSlicedFluenceImageFromComposedVolume(m_ComposedVolume);
118 CPPUNIT_ASSERT(slicedFluence->GetXDim() == 3);
119 CPPUNIT_ASSERT(slicedFluence->GetYDim() == 3);
120 CPPUNIT_ASSERT(slicedFluence->GetZDim() == 3);
121 AssertYSliceValue(slicedFluence, 0, 1);
122 AssertYSliceValue(slicedFluence, 1, 1.0 / 4.0);
123 AssertYSliceValue(slicedFluence, 2, 1.0 / 8.0);
126 void testGetSlicedFluenceVolumeWithPrecorrection()
128 m_SlicedVolumeGenerator = mitk::pa::SlicedVolumeGenerator::New(1,
true, m_PrecorrectionVolume,
false);
129 mitk::pa::Volume::Pointer slicedFluence =
130 m_SlicedVolumeGenerator->GetSlicedFluenceImageFromComposedVolume(m_ComposedVolume);
131 CPPUNIT_ASSERT(slicedFluence->GetXDim() == 3);
132 CPPUNIT_ASSERT(slicedFluence->GetYDim() == 3);
133 CPPUNIT_ASSERT(slicedFluence->GetZDim() == 3);
134 AssertYSliceValue(slicedFluence, 0, 2);
135 AssertYSliceValue(slicedFluence, 1, 8);
136 AssertYSliceValue(slicedFluence, 2, 16);
139 void testGetSlicedFluenceVolumeWithPrecorrectionInverse()
141 m_SlicedVolumeGenerator = mitk::pa::SlicedVolumeGenerator::New(1,
true, m_PrecorrectionVolume,
true);
142 mitk::pa::Volume::Pointer slicedFluence =
143 m_SlicedVolumeGenerator->GetSlicedFluenceImageFromComposedVolume(m_ComposedVolume);
144 CPPUNIT_ASSERT(slicedFluence->GetXDim() == 3);
145 CPPUNIT_ASSERT(slicedFluence->GetYDim() == 3);
146 CPPUNIT_ASSERT(slicedFluence->GetZDim() == 3);
147 AssertYSliceValue(slicedFluence, 0, 1.0 / 2);
148 AssertYSliceValue(slicedFluence, 1, 1.0 / 8);
149 AssertYSliceValue(slicedFluence, 2, 1.0 / 16);
152 void testGetSlicedSignalVolume()
154 m_SlicedVolumeGenerator = mitk::pa::SlicedVolumeGenerator::New(1,
false,
nullptr,
false);
155 mitk::pa::Volume::Pointer slicedFluence =
156 m_SlicedVolumeGenerator->GetSlicedSignalImageFromComposedVolume(m_ComposedVolume);
157 CPPUNIT_ASSERT(slicedFluence->GetXDim() == 3);
158 CPPUNIT_ASSERT(slicedFluence->GetYDim() == 3);
159 CPPUNIT_ASSERT(slicedFluence->GetZDim() == 3);
160 AssertYSliceValue(slicedFluence, 0, 1 * m_DefaultParameters->GetMinBackgroundAbsorption());
161 AssertYSliceValue(slicedFluence, 1, 4 * m_DefaultParameters->GetMinBackgroundAbsorption());
162 AssertYSliceValue(slicedFluence, 2, 8 * m_DefaultParameters->GetMinBackgroundAbsorption());
165 void testGetSlicedAbsorptionVolume()
167 m_SlicedVolumeGenerator = mitk::pa::SlicedVolumeGenerator::New(1,
false,
nullptr,
false);
168 mitk::pa::Volume::Pointer slicedFluence =
169 m_SlicedVolumeGenerator->GetSlicedGroundTruthImageFromComposedVolume(m_ComposedVolume);
170 CPPUNIT_ASSERT(slicedFluence->GetXDim() == 3);
171 CPPUNIT_ASSERT(slicedFluence->GetYDim() == 3);
172 CPPUNIT_ASSERT(slicedFluence->GetZDim() == 3);
173 AssertYSliceValue(slicedFluence, 0, m_DefaultParameters->GetMinBackgroundAbsorption());
174 AssertYSliceValue(slicedFluence, 1, m_DefaultParameters->GetMinBackgroundAbsorption());
175 AssertYSliceValue(slicedFluence, 2, m_DefaultParameters->GetMinBackgroundAbsorption());
178 void tearDown()
override 180 m_SlicedVolumeGenerator =
nullptr;
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
static InSilicoTissueVolume::Pointer New(mitk::pa::Volume::Pointer absorptionVolume, Volume::Pointer scatteringVolume, Volume::Pointer anisotropyVolume, Volume::Pointer segmentationVolume, TissueGeneratorParameters::Pointer tissueParameters, mitk::PropertyList::Pointer propertyList)
Test fixture for parameterized tests.
MITKCORE_EXPORT const ScalarType eps
static Volume::Pointer New(double *data, unsigned int xDim, unsigned int yDim, unsigned int zDim, double spacing)
returns smartpointer reference to a new instance of this objects. The given data array will be freed ...