22 CPPUNIT_TEST_SUITE(mitkGIFFirstOrderHistogramStatisticsTestSuite);
26 CPPUNIT_TEST_SUITE_END();
36 void setUp(
void)
override 38 m_IBSI_Phantom_Image_Small = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Image_Small.nrrd"));
39 m_IBSI_Phantom_Image_Large = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Image_Large.nrrd"));
40 m_IBSI_Phantom_Mask_Small = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Mask_Small.nrrd"));
41 m_IBSI_Phantom_Mask_Large = mitk::IOUtil::Load<mitk::Image>(
GetTestDataFilePath(
"Radiomics/IBSI_Phantom_Mask_Large.nrrd"));
44 void ImageDescription_PhantomTest()
48 featureCalculator->SetUseBinsize(
true);
49 featureCalculator->SetBinsize(1.0);
50 featureCalculator->SetUseMinimumIntensity(
true);
51 featureCalculator->SetUseMaximumIntensity(
true);
52 featureCalculator->SetMinimumIntensity(0.5);
53 featureCalculator->SetMaximumIntensity(6.5);
55 auto featureList = featureCalculator->CalculateFeatures(m_IBSI_Phantom_Image_Large, m_IBSI_Phantom_Mask_Large);
57 std::map<std::string, double> results;
58 for (
auto valuePair : featureList)
60 MITK_INFO << valuePair.first <<
" : " << valuePair.second;
61 results[valuePair.first] = valuePair.second;
63 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"Image Diagnostics should calculate 46 features.", std::size_t(46), featureList.size());
67 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Mean Value should be 2.15 with Large IBSI Phantom Image", 2.15, results[
"First Order Histogram::Mean Value"], 0.01);
68 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Variance Value should be 3.05 with Large IBSI Phantom Image", 3.05, results[
"First Order Histogram::Variance Value"], 0.01);
69 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Skewness Value should be 1.08 with Large IBSI Phantom Image", 1.08, results[
"First Order Histogram::Skewness Value"], 0.01);
70 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Excess Kurtosis Value should be -0.355 with Large IBSI Phantom Image", -0.355, results[
"First Order Histogram::Excess Kurtosis Value"], 0.01);
71 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Median Value should be 1 with Large IBSI Phantom Image", 1.0, results[
"First Order Histogram::Median Value"], 0.01);
72 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Minimum Value should be 1 with Large IBSI Phantom Image", 1, results[
"First Order Histogram::Minimum Value"], 0.01);
73 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Percentile 10 Value should be 0.648 with Large IBSI Phantom Image", 0.648, results[
"First Order Histogram::Percentile 10 Value"], 0.01);
74 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Percentile 90 Value should be 4.475 with Large IBSI Phantom Image", 4.475, results[
"First Order Histogram::Percentile 90 Value"], 0.01);
75 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Maximum Value should be 6 with Large IBSI Phantom Image", 6, results[
"First Order Histogram::Maximum Value"], 0.01);
76 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Mode Value should be 1 with Large IBSI Phantom Image", 1, results[
"First Order Histogram::Mode Value"], 0.01);
77 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Interquantile Range Value should be 2.9 with Large IBSI Phantom Image", 2.911, results[
"First Order Histogram::Interquantile Range Value"], 0.01);
79 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Range Value should be 5 with Large IBSI Phantom Image", 5, results[
"First Order Histogram::Range Value"], 0.01);
80 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Mean Absolute Deviation Value should be 1.55 with Large IBSI Phantom Image", 1.55, results[
"First Order Histogram::Mean Absolute Deviation Value"], 0.01);
81 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Robust Mean Absolute Deviation Value should be 1.11 with Large IBSI Phantom Image", 1.11, results[
"First Order Histogram::Robust Mean Absolute Deviation Value"], 0.01);
82 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Median Absolute Deviation Value should be 1.14 with Large IBSI Phantom Image", 1.14, results[
"First Order Histogram::Median Absolute Deviation Value"], 0.01);
83 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Coefficient of Variation Value should be 0.812 with Large IBSI Phantom Image", 0.812, results[
"First Order Histogram::Coefficient of Variation Value"], 0.01);
84 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Quantile coefficient of Dispersion Value should be 0.626 with Large IBSI Phantom Image", 0.626, results[
"First Order Histogram::Quantile coefficient of Dispersion Value"], 0.01);
85 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Entropy Value should be 1.27 with Large IBSI Phantom Image", 1.27, results[
"First Order Histogram::Entropy Value"], 0.01);
86 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Uniformity Value should be 0.512 with Large IBSI Phantom Image", 0.512, results[
"First Order Histogram::Uniformity Value"], 0.01);
88 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Robust Mean Index should be 0.746 with Large IBSI Phantom Image", 0.746, results[
"First Order Histogram::Robust Mean Index"], 0.01);
89 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Robust Mean Value should be 1.746 with Large IBSI Phantom Image", 1.746, results[
"First Order Histogram::Robust Mean Value"], 0.01);
90 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Number of Bins should be 6", 6, results[
"First Order Histogram::Number of Bins"], 0.01);
91 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Bin Size should be 1", 1, results[
"First Order Histogram::Bin Size"], 0.01);
95 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Mean Index should be 2.15 with Large IBSI Phantom Image", 2.15, results[
"First Order Histogram::Mean Index"], 0.01);
96 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Variance Index should be 3.05 with Large IBSI Phantom Image", 3.05, results[
"First Order Histogram::Variance Index"], 0.01);
97 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Skewness Index should be 1.08 with Large IBSI Phantom Image", 1.08, results[
"First Order Histogram::Skewness Index"], 0.01);
98 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Excess Kurtosis Index should be -0.355 with Large IBSI Phantom Image", -0.355, results[
"First Order Histogram::Excess Kurtosis Index"], 0.01);
99 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Median Index should be 1 with Large IBSI Phantom Image", 1.0, results[
"First Order Histogram::Median Index"], 0.01);
100 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Minimum Index should be 1 with Large IBSI Phantom Image", 1, results[
"First Order Histogram::Minimum Index"], 0.01);
101 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Percentile 10 Index should be 1 with Large IBSI Phantom Image", 1, results[
"First Order Histogram::Percentile 10 Index"], 0.01);
102 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Percentile 90 Index should be 2.15 with Large IBSI Phantom Image", 4, results[
"First Order Histogram::Percentile 90 Index"], 0.01);
103 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Maximum Index should be 6 with Large IBSI Phantom Image", 6, results[
"First Order Histogram::Maximum Index"], 0.01);
104 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Mode Index should be 1 with Large IBSI Phantom Image", 1, results[
"First Order Histogram::Mode Index"], 0.01);
105 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Interquantile Range Index should be 3 with Large IBSI Phantom Image", 3, results[
"First Order Histogram::Interquantile Range Index"], 0.01);
107 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Range Index should be 5 with Large IBSI Phantom Image", 5, results[
"First Order Histogram::Range Index"], 0.01);
108 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Mean Absolute Deviation Index should be 3 with Large IBSI Phantom Image", 1.55, results[
"First Order Histogram::Mean Absolute Deviation Index"], 0.01);
109 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Robust Mean Absolute Deviation Index should be 1.11 with Large IBSI Phantom Image", 1.11, results[
"First Order Histogram::Robust Mean Absolute Deviation Index"], 0.01);
110 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Median Absolute Deviation Index should be 1.14 with Large IBSI Phantom Image", 1.14, results[
"First Order Histogram::Median Absolute Deviation Index"], 0.01);
111 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Coefficient of Variation Index should be 0.812 with Large IBSI Phantom Image", 0.812, results[
"First Order Histogram::Coefficient of Variation Index"], 0.01);
112 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Quantile coefficient of Dispersion Index should be 0.6 with Large IBSI Phantom Image", 0.6, results[
"First Order Histogram::Quantile coefficient of Dispersion Index"], 0.01);
113 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Entropy Index should be 1.27 with Large IBSI Phantom Image", 1.27, results[
"First Order Histogram::Entropy Index"], 0.01);
114 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Uniformity Index should be 0.512 with Large IBSI Phantom Image", 0.512, results[
"First Order Histogram::Uniformity Index"], 0.01);
115 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Maximum Gradient should be 8 with Large IBSI Phantom Image", 8, results[
"First Order Histogram::Maximum Gradient"], 0.01);
116 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Maximum Gradient Index should be 3 with Large IBSI Phantom Image", 3, results[
"First Order Histogram::Maximum Gradient Index"], 0.01);
117 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Minimum Gradient should be -50 with Large IBSI Phantom Image", -50, results[
"First Order Histogram::Minimum Gradient"], 0.01);
118 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
"First Order Histogram::Minimum Gradient Index should be 3 with Large IBSI Phantom Image", 1, results[
"First Order Histogram::Minimum Gradient Index"], 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.