20 class mitkGIFNeighbouringGreyLevelDependenceFeatureTestSuite :
public mitk::TestFixture 22 CPPUNIT_TEST_SUITE(mitkGIFNeighbouringGreyLevelDependenceFeatureTestSuite );
24 MITK_TEST(ImageDescription_PhantomTest_3D);
25 MITK_TEST(ImageDescription_PhantomTest_2D);
27 CPPUNIT_TEST_SUITE_END();
37 void setUp(
void)
override 39 m_IBSI_Phantom_Image_Small = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Image_Small.nrrd"));
40 m_IBSI_Phantom_Image_Large = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Image_Large.nrrd"));
41 m_IBSI_Phantom_Mask_Small = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Mask_Small.nrrd"));
42 m_IBSI_Phantom_Mask_Large = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Mask_Large.nrrd"));
45 void ImageDescription_PhantomTest_3D()
49 featureCalculator->SetUseBinsize(
true);
50 featureCalculator->SetBinsize(1.0);
51 featureCalculator->SetUseMinimumIntensity(
true);
52 featureCalculator->SetUseMaximumIntensity(
true);
53 featureCalculator->SetMinimumIntensity(0.5);
54 featureCalculator->SetMaximumIntensity(6.5);
56 auto featureList = featureCalculator->CalculateFeatures(m_IBSI_Phantom_Image_Large, m_IBSI_Phantom_Mask_Large);
58 std::map<std::string, double> results;
59 for (
auto valuePair : featureList)
61 MITK_INFO << valuePair.first <<
" : " << valuePair.second;
62 results[valuePair.first] = valuePair.second;
64 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"Image Diagnostics should calculate 24 features.", std::size_t(24), featureList.size());
68 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Low Dependence Emphasis with Large IBSI Phantom Image", 0.045, results[
"Neighbouring Grey Level Dependence::Low Dependence Emphasis"], 0.001);
69 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::High Dependence Emphasis with Large IBSI Phantom Image", 109, results[
"Neighbouring Grey Level Dependence::High Dependence Emphasis"], 1.0);
70 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Low Grey Level Count Emphasis with Large IBSI Phantom Image", 0.693, results[
"Neighbouring Grey Level Dependence::Low Grey Level Count Emphasis"], 0.01);
71 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::High Grey Level Count Emphasis with Large IBSI Phantom Image", 7.66, results[
"Neighbouring Grey Level Dependence::High Grey Level Count Emphasis"], 0.01);
72 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Low Dependence Low Grey Level Emphasis with Large IBSI Phantom Image", 0.00963, results[
"Neighbouring Grey Level Dependence::Low Dependence Low Grey Level Emphasis"], 0.001);
73 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Low Dependence High Grey Level Emphasis with Large IBSI Phantom Image", 0.736, results[
"Neighbouring Grey Level Dependence::Low Dependence High Grey Level Emphasis"], 0.01);
74 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::High Dependence Low Grey Level Emphasis with Large IBSI Phantom Image", 102, results[
"Neighbouring Grey Level Dependence::High Dependence Low Grey Level Emphasis"], 1);
75 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::High Dependence High Grey Level Emphasis with Large IBSI Phantom Image", 235, results[
"Neighbouring Grey Level Dependence::High Dependence High Grey Level Emphasis"], 1);
76 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Grey Level Non-Uniformity with Large IBSI Phantom Image", 37.9, results[
"Neighbouring Grey Level Dependence::Grey Level Non-Uniformity"], 0.1);
77 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Grey Level Non-Uniformity Normalised with Large IBSI Phantom Image", 0.512, results[
"Neighbouring Grey Level Dependence::Grey Level Non-Uniformity Normalised"], 0.01);
78 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity with Large IBSI Phantom Image", 4.86, results[
"Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity"], 0.01);
79 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity Normalised with Large IBSI Phantom Image", 0.0657, results[
"Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity Normalised"], 0.001);
80 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Dependence Count Percentage with Large IBSI Phantom Image", 1, results[
"Neighbouring Grey Level Dependence::Dependence Count Percentage"], 0.01);
81 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Grey Level Variance with Large IBSI Phantom Image", 3.05, results[
"Neighbouring Grey Level Dependence::Grey Level Variance"], 0.01);
82 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Dependence Count Variance with Large IBSI Phantom Image", 22.1, results[
"Neighbouring Grey Level Dependence::Dependence Count Variance"], 0.1);
83 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Dependence Count Entropy with Large IBSI Phantom Image", 4.4, results[
"Neighbouring Grey Level Dependence::Dependence Count Entropy"], 0.01);
84 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Dependence Count Energy with Large IBSI Phantom Image", 0.0533, results[
"Neighbouring Grey Level Dependence::Dependence Count Energy"], 0.01);
88 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Grey Level Mean with Large IBSI Phantom Image", 2.15, results[
"Neighbouring Grey Level Dependence::Grey Level Mean"], 0.01);
89 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Dependence Count Mean with Large IBSI Phantom Image", 9.32, results[
"Neighbouring Grey Level Dependence::Dependence Count Mean"], 0.1);
90 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Expected Neighbourhood Size with Large IBSI Phantom Image", 26, results[
"Neighbouring Grey Level Dependence::Expected Neighbourhood Size"], 0.01);
91 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Average Neighbourhood Size with Large IBSI Phantom Image", 14.24, results[
"Neighbouring Grey Level Dependence::Average Neighbourhood Size"], 0.01);
92 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Average Incomplete Neighbourhood Size with Large IBSI Phantom Image", 14.24, results[
"Neighbouring Grey Level Dependence::Average Incomplete Neighbourhood Size"], 0.01);
93 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Percentage of complete Neighbourhoods with Large IBSI Phantom Image", 0, results[
"Neighbouring Grey Level Dependence::Percentage of complete Neighbourhoods"], 0.01);
94 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"Neighbouring Grey Level Dependence::Percentage of Dependence Neighbour Voxels with Large IBSI Phantom Image", 0.584, results[
"Neighbouring Grey Level Dependence::Percentage of Dependence Neighbour Voxels"], 0.01);
97 void ImageDescription_PhantomTest_2D()
101 featureCalculator->SetUseBinsize(
true);
102 featureCalculator->SetBinsize(1.0);
103 featureCalculator->SetUseMinimumIntensity(
true);
104 featureCalculator->SetUseMaximumIntensity(
true);
105 featureCalculator->SetMinimumIntensity(0.5);
106 featureCalculator->SetMaximumIntensity(6.5);
108 auto featureList = featureCalculator->CalculateFeaturesSlicewise(m_IBSI_Phantom_Image_Large, m_IBSI_Phantom_Mask_Large, 2);
110 std::map<std::string, double> results;
111 for (
auto valuePair : featureList)
113 MITK_INFO << valuePair.first <<
" : " << valuePair.second;
114 results[valuePair.first] = valuePair.second;
116 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"Image Diagnostics should calculate 144 features.", std::size_t(144), featureList.size());
120 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Low Dependence Emphasis with Large IBSI Phantom Image", 0.158, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Low Dependence Emphasis"], 0.001);
121 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::High Dependence Emphasis with Large IBSI Phantom Image", 19.2, results[
"SliceWise Mean Neighbouring Grey Level Dependence::High Dependence Emphasis"], 1.0);
122 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Low Grey Level Count Emphasis with Large IBSI Phantom Image", 0.702, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Low Grey Level Count Emphasis"], 0.01);
123 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::High Grey Level Count Emphasis with Large IBSI Phantom Image", 7.49, results[
"SliceWise Mean Neighbouring Grey Level Dependence::High Grey Level Count Emphasis"], 0.01);
124 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Low Dependence Low Grey Level Emphasis with Large IBSI Phantom Image", 0.0473, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Low Dependence Low Grey Level Emphasis"], 0.001);
125 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Low Dependence High Grey Level Emphasis with Large IBSI Phantom Image", 3.06, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Low Dependence High Grey Level Emphasis"], 0.01);
126 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::High Dependence Low Grey Level Emphasis with Large IBSI Phantom Image", 17.6, results[
"SliceWise Mean Neighbouring Grey Level Dependence::High Dependence Low Grey Level Emphasis"], 1);
127 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::High Dependence High Grey Level Emphasis with Large IBSI Phantom Image", 49.5, results[
"SliceWise Mean Neighbouring Grey Level Dependence::High Dependence High Grey Level Emphasis"], 1);
128 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Non-Uniformity with Large IBSI Phantom Image", 10.2, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Non-Uniformity"], 0.1);
129 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Non-Uniformity Normalised with Large IBSI Phantom Image", 0.562, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Non-Uniformity Normalised"], 0.01);
130 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity with Large IBSI Phantom Image", 3.96, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity"], 0.01);
131 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity Normalised with Large IBSI Phantom Image", 0.212, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Non-Uniformity Normalised"], 0.001);
132 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Percentage with Large IBSI Phantom Image", 1, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Percentage"], 0.01);
133 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Variance with Large IBSI Phantom Image", 2.7, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Variance"], 0.01);
134 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Variance with Large IBSI Phantom Image", 2.73, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Variance"], 0.1);
135 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Entropy with Large IBSI Phantom Image", 2.71, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Entropy"], 0.01);
136 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Energy with Large IBSI Phantom Image", 0.17, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Energy"], 0.01);
140 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Mean with Large IBSI Phantom Image", 2.12, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Grey Level Mean"], 0.01);
141 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Mean with Large IBSI Phantom Image", 3.98, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Dependence Count Mean"], 0.1);
142 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Expected Neighbourhood Size with Large IBSI Phantom Image", 8, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Expected Neighbourhood Size"], 0.01);
143 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Average Neighbourhood Size with Large IBSI Phantom Image", 5.20, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Average Neighbourhood Size"], 0.01);
144 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Average Incomplete Neighbourhood Size with Large IBSI Phantom Image", 4.5598, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Average Incomplete Neighbourhood Size"], 0.01);
145 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Percentage of complete Neighbourhoods with Large IBSI Phantom Image", 0.1831, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Percentage of complete Neighbourhoods"], 0.01);
146 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"SliceWise Mean Neighbouring Grey Level Dependence::Percentage of Dependence Neighbour Voxels with Large IBSI Phantom Image", 0.579, results[
"SliceWise Mean Neighbouring Grey Level Dependence::Percentage of Dependence Neighbour Voxels"], 0.01);
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.